From 573b46d97cf1c7fadea3df11abe2abac53a6b047 Mon Sep 17 00:00:00 2001 From: Dejan Petkovic Date: Mon, 23 Aug 2021 00:45:45 +0200 Subject: [PATCH 1/7] Use React 17 and Webpack 5 --- frontend/package.json | 73 ++++++------- frontend/src/app/App.js | 7 +- frontend/src/app/VoxeetConference.js | 117 +++++++++++++------- frontend/src/index.js | 4 + frontend/webpack.config.electron.common.js | 121 ++++++++++++--------- frontend/webpack.config.js | 107 +++++++++++------- frontend/webpack.config.prod.js | 106 +++++++++++------- 7 files changed, 322 insertions(+), 213 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 52b1640..228d8b7 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -6,7 +6,7 @@ "scripts": { "dist": "npm run build:electron && ELECTRON_BUILDER_ALLOW_UNRESOLVED_DEPENDENCIES=true build", "bootstrap": "yarn link @voxeet/voxeet-web-sdk && yarn link @voxeet/media-engine && yarn link @voxeet/react-components", - "start": "webpack-dev-server -d --hot --inline --content-base", + "start": "webpack serve --hot --inline", "build": "cross-env NODE_ENV=production webpack --config webpack.config.prod.js --progress -p", "get-version": "cross-env-shell echo ${npm_package_version}", "builde": "cross-env webpack --config webpack.config.electron.js --progress", @@ -32,50 +32,47 @@ "IE 11" ], "dependencies": { - "@babel/polyfill": "^7.8.7", - "@trodi/electron-splashscreen": "^0.3.4", - "@voxeet/react-components": "file:../../voxeet-uxkit-react/", - "@voxeet/voxeet-web-sdk": "file:../../voxeet-sdk/packages/voxeet-web-sdk", - "axios": "^0.19.2", - "browserslist": "^4.5.2", - "core-js": "2", + "@babel/polyfill": "^7.12.1", + "@trodi/electron-splashscreen": "^1.0.0", + "@voxeet/react-components": "file:../../uxkit", + "@voxeet/voxeet-web-sdk": "file:./../../voxeet-sdk/packages/voxeet-web-sdk/", + "axios": "^0.21.1", + "browserslist": "^4.16.6", + "core-js": "^3.15.2", "electron-window-state": "^5.0.3", - "express": "^4.0.0", - "react": "16.9.0", - "react-dom": "16.9.0", - "react-localization": "^1.0.14", - "react-redux": "7.1.1", - "react-router-dom": "5.0.1", - "redux": "4.0.4", - "redux-thunk": "2.3.0" + "express": "^4.17.1", + "prettier": "^2.3.2", + "react": "17.0.2", + "react-dom": "17.0.2", + "react-localization": "^1.0.17", + "react-redux": "^7.2.4", + "react-router-dom": "^5.2.0", + "redux-logger": "^3.0.6", + "redux-thunk": "^2.3.0" }, "resolutions": { - "react": "16.9.0", - "react-dom": "16.9.0" + "react": "17.0.2", + "react-dom": "17.0.2" }, "devDependencies": { - "@babel/core": "^7.3.4", - "@babel/preset-env": "^7.3.4", - "@babel/preset-react": "^7.0.0", - "babel-loader": "^8.0.5", - "copy-webpack-plugin": "^4.2.0", - "cross-env": "^7.0.2", - "css-loader": "^2.1.1", + "@babel/core": "^7.14.8", + "@babel/preset-env": "^7.14.8", + "@babel/preset-react": "^7.14.5", + "babel-loader": "^8.2.2", + "copy-webpack-plugin": "^9.0.1", + "cross-env": "^7.0.3", + "css-loader": "^6.2.0", "electron": "9.4.4", - "electron-builder": "^22.11.7", + "electron-builder": "^22.10.5", "electron-builder-squirrel-windows": "^22.10.5", - "extract-text-webpack-plugin": "^4.0.0-beta.0", - "file-loader": "^3.0.1", - "html-webpack-plugin": "^3.2.0", - "prettier": "^1.18.2", - "prettier-webpack-plugin": "^1.2.0", - "react-hot-loader": "^3.0.0-beta.7", - "style-loader": "^0.23.1", - "uglifyjs-webpack-plugin": "^1.1.5", - "url-loader": "^0.5.9", - "webpack": "^4.29.6", - "webpack-cli": "^3.2.0", - "webpack-dev-server": "^3.1.14" + "html-webpack-plugin": "^5.3.2", + "mini-css-extract-plugin": "^2.1.0", + "style-loader": "^3.2.1", + "terser-webpack-plugin": "^5.1.4", + "url-loader": "^4.1.1", + "webpack": "^5.45.1", + "webpack-cli": "^4.7.2", + "webpack-dev-server": "^3.11.2" }, "peerDependencies": { "express": "^4.0.0" diff --git a/frontend/src/app/App.js b/frontend/src/app/App.js index f89a9d8..42989f7 100644 --- a/frontend/src/app/App.js +++ b/frontend/src/app/App.js @@ -71,9 +71,7 @@ class App extends Component { }; this.handleClick = this.handleClick.bind(this); this.handleChangeUserName = this.handleChangeUserName.bind(this); - this.handleChangeConferenceName = this.handleChangeConferenceName.bind( - this - ); + this.handleChangeConferenceName = this.handleChangeConferenceName.bind(this); this.escFunction = this.escFunction.bind(this); this.toggleChangeListener = this.toggleChangeListener.bind(this); this.toggleWidgetMode = this.toggleWidgetMode.bind(this); @@ -147,6 +145,9 @@ class App extends Component { /*ReactDOM.unmountComponentAtNode(document.getElementById('voxeet-widget')); const oldConferenceName = this.state.conferenceName*/ this.setState({ isSubmit: false, isDemo: false }); + if(this.props.handleLeave) { + this.props.handleLeave(); + } /*this.props.history.push('/') window.location.reload()*/ } diff --git a/frontend/src/app/VoxeetConference.js b/frontend/src/app/VoxeetConference.js index 7559880..7659530 100644 --- a/frontend/src/app/VoxeetConference.js +++ b/frontend/src/app/VoxeetConference.js @@ -1,21 +1,47 @@ import React, { Component } from "react"; -import "core-js/es6/"; import ReactDOM from "react-dom"; import PropTypes from "prop-types"; import thunkMidleware from "redux-thunk"; import { combineReducers, createStore, applyMiddleware } from "redux"; +import { Provider } from "react-redux"; import axios from "axios"; - import VoxeetSdk from "@voxeet/voxeet-web-sdk"; import { ConferenceRoom, VoxeetProvider, + getUxKitContext, + setUxKitContext, reducer as voxeetReducer } from "@voxeet/react-components"; +import "@voxeet/react-components/dist/voxeet-react-components.css"; + +// a naive example +const contextApp = React.createContext(); +const reducerApp = (state = {}, action) => { + switch (action.type) { + default: { + return state; + } + } +}; -window.VoxeetSdk = VoxeetSdk; +console.log('uxkit', ConferenceRoom, + VoxeetProvider, + getUxKitContext); -import "@voxeet/react-components/dist/voxeet-react-components.css"; +const reducers = combineReducers({ + voxeet: voxeetReducer, +}); + +const middlewaresApp = [], middlewaresUxKit = []; +middlewaresApp.push(thunkMidleware); +middlewaresUxKit.push(thunkMidleware); +if (process.env.NODE_ENV === `development`) { + const { logger } = require(`redux-logger`); + + //middlewaresApp.push(logger); + //middlewaresApp.push(logger); +} const AUTH_SERVER = process.env.AUTH_SERVER || ""; const SESSION_SERVER = @@ -28,10 +54,10 @@ class VoxeetConference extends Component { .toLowerCase() .replace(/ /g, ""); const settings = { - conferenceAlias: conferenceName + conferenceAlias: conferenceName, }; const reducers = combineReducers({ - voxeet: voxeetReducer + voxeet: voxeetReducer, }); let name = this.props.userName; @@ -88,14 +114,16 @@ class VoxeetConference extends Component { const userInfo = { name: name, - avatarUrl: photoURL + avatarUrl: photoURL, }; var constraints = { audio: true, - video: true + video: true, }; - const configureStore = () => - createStore(reducers, applyMiddleware(thunkMidleware)); + const createStoreUxKit = () => + createStore(reducers, applyMiddleware(...middlewaresApp)); + const createStoreApp = () => + createStore(reducerApp, applyMiddleware(...middlewaresUxKit)); let displayModes = ["tiles", "speaker"]; if (this.props.isDemo && VoxeetSdk.isElectron) { displayModes = ["list", "tiles", "speaker"]; @@ -105,7 +133,7 @@ class VoxeetConference extends Component { let accessToken, refreshToken; const doRefreshToken = () => { - return axios.get(`${AUTH_SERVER}/api/token`, {}).then(response => { + return axios.get(`${AUTH_SERVER}/api/token`, {}).then((response) => { accessToken = response.data.access_token; refreshToken = response.data.refresh_token; @@ -117,45 +145,50 @@ class VoxeetConference extends Component { let token = ""; axios .get(`${AUTH_SERVER}/api/token`, {}) - .then(response => { + .then((response) => { //console.log("TOKEN: ", response); accessToken = response.data.access_token; refreshToken = response.data.refresh_token; ReactDOM.render( - - - , + + + {/**/} {/*Alternative to previous line*/} + + {/**/} + + , document.getElementById("voxeet-widget") ); }) - .catch(error => { + .catch((error) => { console.log(error); }); } catch (e) { @@ -186,7 +219,7 @@ VoxeetConference.propTypes = { VoxeetConference.defaultProps = { conferenceName: "conference_name", - userName: "Guest " + Math.floor(Math.random() * 100 + 1) + userName: "Guest " + Math.floor(Math.random() * 100 + 1), }; export default VoxeetConference; diff --git a/frontend/src/index.js b/frontend/src/index.js index ef15165..eae43b0 100644 --- a/frontend/src/index.js +++ b/frontend/src/index.js @@ -3,3 +3,7 @@ import ReactDOM from "react-dom"; import Root from "./Root"; ReactDOM.render(, document.getElementById("root")); + +if (module.hot) { + module.hot.accept(); +} \ No newline at end of file diff --git a/frontend/webpack.config.electron.common.js b/frontend/webpack.config.electron.common.js index 83b043d..07db319 100644 --- a/frontend/webpack.config.electron.common.js +++ b/frontend/webpack.config.electron.common.js @@ -1,9 +1,9 @@ const path = require("path"); const webpack = require("webpack"); const HtmlWebpackPlugin = require("html-webpack-plugin"); -const CopyWebpackPlugin = require("copy-webpack-plugin"); -const ExtractTextPlugin = require("extract-text-webpack-plugin"); -var PrettierPlugin = require("prettier-webpack-plugin"); +const CopyPlugin = require("copy-webpack-plugin"); +const TerserPlugin = require("terser-webpack-plugin"); +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); try { require("os").networkInterfaces(); @@ -30,76 +30,91 @@ module.exports = configuration => { rules: [ { test: /.js?$/, - loaders: ["babel-loader"], - include: path.resolve(__dirname) + use: ["babel-loader"], + include: path.resolve(__dirname), }, { test: /\.css$/, - loaders: ["style-loader", "css-loader"] + use: ["style-loader", "css-loader"], }, { - test: /.jsx?$/, - loaders: ["babel-loader"], - include: path.resolve(__dirname) + test: /.less$/, + use: [ + MiniCssExtractPlugin.loader, + 'css-loader', + 'less-loader' + ], }, { - test: /.less$/, - loader: "style-loader!css-loader!less-loader" + test: /.jsx?$/, + use: ["babel-loader"], + include: path.resolve(__dirname), }, { test: /\.mp3$/, - loader: "file-loader", - options: { - name: "sounds/[name].[ext]" - } + // use: "file-loader", + type: 'asset/resource', + generator: { + filename: "sounds/[name].[ext]", + }, }, { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, - loader: "url-loader?limit=10000&mimetype=application/font-woff", - options: { - name: "fonts/[name].[ext]" - } + // use: "url-loader?limit=10000&mimetype=application/font-woff", + type: 'asset/resource', + generator: { + filename: "fonts/[name].[ext]", + }, }, { test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, - loader: "url-loader?limit=10000&mimetype=application/font-woff", - options: { - name: "fonts/[name].[ext]" - } + // use: "url-loader?limit=10000&mimetype=application/font-woff", + type: 'asset/resource', + generator: { + filename: "fonts/[name].[ext]", + }, }, { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, - loader: "url-loader?limit=10000&mimetype=application/octet-stream", - options: { - name: "fonts/[name].[ext]" - } + // use: "url-loader?limit=10000&mimetype=application/octet-stream", + type: 'asset/resource', + generator: { + filename: "fonts/[name].[ext]", + }, }, { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, - loader: "file-loader", - options: { - name: "fonts/[name].[ext]" - } + // use: "file-loader", + type: 'asset/resource', + generator: { + filename: "fonts/[name].[ext]", + }, }, { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, - loader: "url-loader?limit=10000&mimetype=image/svg+xml", - options: { - name: "images/[name].[ext]" - } + // use: "url-loader?limit=10000&mimetype=image/svg+xml", + type: 'asset/resource', + generator: { + filename: "images/[name].[ext]", + }, }, { test: /\.(jpg|jpeg|gif|png)$/, - loader: "url-loader?limit=65000&name=images/[name].[ext]" + type: 'asset/resource', + generator: { + filename: "images/[name].[ext]", + }, + // use: "url-loader?limit=65000&name=images/[name].[ext]", }, { test: /\.otf(\?v=\d+\.\d+\.\d+)?$/, - loader: "url-loader?limit=10000&mimetype=application/octet-stream", - options: { - name: "fonts/[name].[ext]" - } - } - ] + // use: "url-loader?limit=10000&mimetype=application/octet-stream", + type: 'asset/resource', + generator: { + filename: "fonts/[name].[ext]", + }, + }, + ], }, plugins: [ new webpack.DefinePlugin({ @@ -109,18 +124,20 @@ module.exports = configuration => { AUTH_SERVER: JSON.stringify(configuration.auth_server) } }), - new PrettierPlugin(), - new CopyWebpackPlugin([ - { from: "./src/static", ignore: ["*.html"] }, - "./public/favicon.ico", - "./public/icon.png", - "./public/manifest.json" - ]), + new CopyPlugin({ + patterns: [ + { from: "./src/static"}, + { from: "./node_modules/@voxeet/react-components/dist/fonts", to:'./fonts'}, + { from: "./node_modules/@voxeet/react-components/dist/images", to:'./images'}, + { from: "./node_modules/@voxeet/react-components/dist/sounds", to:'./sounds'}, + "./public/manifest.json", + ] + }), + new MiniCssExtractPlugin(), new HtmlWebpackPlugin({ - cache: false, - showErrors: true, + inject: true, template: "./public/index.html", - js: [] + js: [], }), new webpack.NoEmitOnErrorsPlugin() ] diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index d520653..52c4724 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -2,6 +2,7 @@ const path = require("path"); const webpack = require("webpack"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const CopyWebpackPlugin = require("copy-webpack-plugin"); +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); // Try the environment variable, otherwise use localhost const AUTH_SERVER = process.env.AUTH_SERVER || ''; @@ -15,17 +16,18 @@ try { module.exports = { entry: [ "@babel/polyfill", - "react-hot-loader/patch", "webpack/hot/only-dev-server", // "only" prevents reload on syntax errors "./src/index.js", ], + mode: 'development', devtool: "source-map", output: { path: path.join(__dirname, "dist"), - filename: "bundle.js", + chunkFilename: '[id].[chunkhash].js', publicPath: "", }, optimization: { + minimize: false, splitChunks: { // include all types of chunks chunks: 'all', @@ -39,97 +41,124 @@ module.exports = { disableHostCheck: true, host: "0.0.0.0", historyApiFallback: true, + hot: true, + writeToDisk: true, + watchOptions: { + poll: true, + }, }, module: { rules: [ { - test: /\.js$/, - loaders: ["babel-loader"], - exclude: /node_modules/, + test: /.js?$/, + use: ["babel-loader"], include: path.resolve(__dirname), }, { test: /\.css$/, - loaders: ["style-loader", "css-loader"], + use: ["style-loader", "css-loader"], }, { - test: /.jsx?$/, - loaders: ["babel-loader"], - exclude: /node_modules/, - include: path.resolve(__dirname), + test: /.less$/, + use: [ + MiniCssExtractPlugin.loader, + 'css-loader', + 'less-loader' + ], }, { - test: /.less$/, - loader: "style-loader!css-loader!less-loader", + test: /.jsx?$/, + use: ["babel-loader"], + include: path.resolve(__dirname), }, { test: /\.mp3$/, - loader: "file-loader", - options: { - name: "sounds/[name].[ext]", + // use: "file-loader", + type: 'asset/resource', + generator: { + filename: "sounds/[name].[ext]", }, }, { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, - loader: "url-loader?limit=10000&mimetype=application/font-woff", - options: { - name: "fonts/[name].[ext]", + // use: "url-loader?limit=10000&mimetype=application/font-woff", + type: 'asset/resource', + generator: { + filename: "fonts/[name].[ext]", }, }, { test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, - loader: "url-loader?limit=10000&mimetype=application/font-woff", - options: { - name: "fonts/[name].[ext]", + // use: "url-loader?limit=10000&mimetype=application/font-woff", + type: 'asset/resource', + generator: { + filename: "fonts/[name].[ext]", }, }, { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, - loader: "url-loader?limit=10000&mimetype=application/octet-stream", - options: { - name: "fonts/[name].[ext]", + // use: "url-loader?limit=10000&mimetype=application/octet-stream", + type: 'asset/resource', + generator: { + filename: "fonts/[name].[ext]", }, }, { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, - loader: "file-loader", - options: { - name: "fonts/[name].[ext]", + // use: "file-loader", + type: 'asset/resource', + generator: { + filename: "fonts/[name].[ext]", }, }, { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, - loader: "url-loader?limit=10000&mimetype=image/svg+xml", - options: { - name: "images/[name].[ext]", + // use: "url-loader?limit=10000&mimetype=image/svg+xml", + type: 'asset/resource', + generator: { + filename: "images/[name].[ext]", }, }, { test: /\.(jpg|jpeg|gif|png)$/, - loader: "url-loader?limit=65000&name=images/[name].[ext]", + type: 'asset/resource', + generator: { + filename: "images/[name].[ext]", + }, + // use: "url-loader?limit=65000&name=images/[name].[ext]", }, { - test: /\.(woff|woff2|eot|ttf|otf)$/, - loader: "file-loader", + test: /\.otf(\?v=\d+\.\d+\.\d+)?$/, + // use: "url-loader?limit=10000&mimetype=application/octet-stream", + type: 'asset/resource', + generator: { + filename: "fonts/[name].[ext]", + }, }, ], }, plugins: [ new webpack.DefinePlugin({ "process.env": { - NODE_ENV: `""`, + NODE_ENV: `"development"`, AUTH_SERVER: JSON.stringify(AUTH_SERVER), }, }), - new CopyWebpackPlugin([ - { from: "./src/static", ignore: ["*.html"] }, - "./public/manifest.json", - ]), + new CopyWebpackPlugin({ + patterns:[ + {from: "./src/static"}, + { from: "./node_modules/@voxeet/react-components/dist/fonts", to:'./fonts'}, + { from: "./node_modules/@voxeet/react-components/dist/images", to:'./images'}, + { from: "./node_modules/@voxeet/react-components/dist/sounds", to:'./sounds'}, + "./public/manifest.json", + ] + }), new HtmlWebpackPlugin({ inject: true, template: "./public/index.html", js: /*process.env.ELECTRON ? ["preload.js"] : */[], }), - new webpack.NoEmitOnErrorsPlugin(), + // new webpack.NoEmitOnErrorsPlugin(), + new webpack.HotModuleReplacementPlugin(), ], }; diff --git a/frontend/webpack.config.prod.js b/frontend/webpack.config.prod.js index e8b4560..9b0c17f 100644 --- a/frontend/webpack.config.prod.js +++ b/frontend/webpack.config.prod.js @@ -1,9 +1,10 @@ const path = require("path"); const webpack = require("webpack"); const HtmlWebpackPlugin = require("html-webpack-plugin"); -const CopyWebpackPlugin = require("copy-webpack-plugin"); -const ExtractTextPlugin = require("extract-text-webpack-plugin"); -var PrettierPlugin = require("prettier-webpack-plugin"); +const CopyPlugin = require("copy-webpack-plugin"); +const TerserPlugin = require("terser-webpack-plugin"); +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); + // Try the environment variable, otherwise use root const ASSET_PATH = process.env.ASSET_PATH || ''; @@ -20,88 +21,110 @@ module.exports = { entry: ["@babel/polyfill", "./src/index.js"], output: { path: path.join(__dirname, "dist"), - filename: "bundle.js", + chunkFilename: '[id].[chunkhash].js', publicPath: ASSET_PATH, }, + mode: 'production', optimization: { splitChunks: { // include all types of chunks chunks: 'all', maxSize:3000000, minSize:1000000, - } + }, + minimize: true, + minimizer: [ + new TerserPlugin({ + parallel: true, + }), + ], }, module: { rules: [ { test: /.js?$/, - loaders: ["babel-loader"], + use: ["babel-loader"], include: path.resolve(__dirname), }, { test: /\.css$/, - loaders: ["style-loader", "css-loader"], + use: ["style-loader", "css-loader"], }, { - test: /.jsx?$/, - loaders: ["babel-loader"], - include: path.resolve(__dirname), + test: /.less$/, + use: [ + MiniCssExtractPlugin.loader, + 'css-loader', + 'less-loader' + ], }, { - test: /.less$/, - loader: "style-loader!css-loader!less-loader", + test: /.jsx?$/, + use: ["babel-loader"], + include: path.resolve(__dirname), }, { test: /\.mp3$/, - loader: "file-loader", - options: { - name: "sounds/[name].[ext]", + // use: "file-loader", + type: 'asset/resource', + generator: { + filename: "sounds/[name].[ext]", }, }, { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, - loader: "url-loader?limit=10000&mimetype=application/font-woff", - options: { - name: "fonts/[name].[ext]", + // use: "url-loader?limit=10000&mimetype=application/font-woff", + type: 'asset/resource', + generator: { + filename: "fonts/[name].[ext]", }, }, { test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, - loader: "url-loader?limit=10000&mimetype=application/font-woff", - options: { - name: "fonts/[name].[ext]", + // use: "url-loader?limit=10000&mimetype=application/font-woff", + type: 'asset/resource', + generator: { + filename: "fonts/[name].[ext]", }, }, { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, - loader: "url-loader?limit=10000&mimetype=application/octet-stream", - options: { - name: "fonts/[name].[ext]", + // use: "url-loader?limit=10000&mimetype=application/octet-stream", + type: 'asset/resource', + generator: { + filename: "fonts/[name].[ext]", }, }, { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, - loader: "file-loader", - options: { - name: "fonts/[name].[ext]", + // use: "file-loader", + type: 'asset/resource', + generator: { + filename: "fonts/[name].[ext]", }, }, { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, - loader: "url-loader?limit=10000&mimetype=image/svg+xml", - options: { - name: "images/[name].[ext]", + // use: "url-loader?limit=10000&mimetype=image/svg+xml", + type: 'asset/resource', + generator: { + filename: "images/[name].[ext]", }, }, { test: /\.(jpg|jpeg|gif|png)$/, - loader: "url-loader?limit=65000&name=images/[name].[ext]", + type: 'asset/resource', + generator: { + filename: "images/[name].[ext]", + }, + // use: "url-loader?limit=65000&name=images/[name].[ext]", }, { test: /\.otf(\?v=\d+\.\d+\.\d+)?$/, - loader: "url-loader?limit=10000&mimetype=application/octet-stream", - options: { - name: "fonts/[name].[ext]", + // use: "url-loader?limit=10000&mimetype=application/octet-stream", + type: 'asset/resource', + generator: { + filename: "fonts/[name].[ext]", }, }, ], @@ -114,11 +137,16 @@ module.exports = { AUTH_SERVER: JSON.stringify(AUTH_SERVER), }, }), - new PrettierPlugin(), - new CopyWebpackPlugin([ - { from: "./src/static", ignore: ["*.html"] }, - "./public/manifest.json", - ]), + new CopyPlugin({ + patterns: [ + { from: "./src/static"}, + { from: "./node_modules/@voxeet/react-components/dist/fonts", to:'./fonts'}, + { from: "./node_modules/@voxeet/react-components/dist/images", to:'./images'}, + { from: "./node_modules/@voxeet/react-components/dist/sounds", to:'./sounds'}, + "./public/manifest.json", + ] + }), + new MiniCssExtractPlugin(), new HtmlWebpackPlugin({ inject: true, template: "./public/index.html", From 88844517e5e8fd6bb7ec1f526c147c401324e8e9 Mon Sep 17 00:00:00 2001 From: Nicolas Laduguie Date: Fri, 27 Aug 2021 13:30:25 +0200 Subject: [PATCH 2/7] ci: build mmsd-demo flavor from appropriate branch --- .github/workflows/ci-mmsd-demo.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/ci-mmsd-demo.yml b/.github/workflows/ci-mmsd-demo.yml index 49965e9..5153624 100644 --- a/.github/workflows/ci-mmsd-demo.yml +++ b/.github/workflows/ci-mmsd-demo.yml @@ -3,10 +3,7 @@ name: CI build mmsd-demo on: push: branches: - - master - - develop - schedule: - - cron: '0 2 * * *' + - mmsd-demo repository_dispatch: types: [ uxkit-mmsd-demo ] From 1f200c9f9c1d53b48a940a00ad9b391cdce8aa03 Mon Sep 17 00:00:00 2001 From: Dejan Petkovic Date: Fri, 27 Aug 2021 15:00:19 +0200 Subject: [PATCH 3/7] Fixe uxkit/sdk version --- frontend/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 228d8b7..3a6980a 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -34,8 +34,8 @@ "dependencies": { "@babel/polyfill": "^7.12.1", "@trodi/electron-splashscreen": "^1.0.0", - "@voxeet/react-components": "file:../../uxkit", - "@voxeet/voxeet-web-sdk": "file:./../../voxeet-sdk/packages/voxeet-web-sdk/", + "@voxeet/react-components": "^3.2.1", + "@voxeet/voxeet-web-sdk": "^3.3.0-beta.2", "axios": "^0.21.1", "browserslist": "^4.16.6", "core-js": "^3.15.2", From 4057532d2dace51909d45c8127f742ffe0867c0c Mon Sep 17 00:00:00 2001 From: Dejan Petkovic Date: Fri, 27 Aug 2021 15:00:19 +0200 Subject: [PATCH 4/7] Fix uxkit/sdk version Removed option -p from build --- frontend/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 228d8b7..33197be 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -7,7 +7,7 @@ "dist": "npm run build:electron && ELECTRON_BUILDER_ALLOW_UNRESOLVED_DEPENDENCIES=true build", "bootstrap": "yarn link @voxeet/voxeet-web-sdk && yarn link @voxeet/media-engine && yarn link @voxeet/react-components", "start": "webpack serve --hot --inline", - "build": "cross-env NODE_ENV=production webpack --config webpack.config.prod.js --progress -p", + "build": "cross-env NODE_ENV=production webpack --config webpack.config.prod.js --progress", "get-version": "cross-env-shell echo ${npm_package_version}", "builde": "cross-env webpack --config webpack.config.electron.js --progress", "builde:prod": "cross-env DEBUG=true NODE_ENV=production yarn builde", @@ -34,8 +34,8 @@ "dependencies": { "@babel/polyfill": "^7.12.1", "@trodi/electron-splashscreen": "^1.0.0", - "@voxeet/react-components": "file:../../uxkit", - "@voxeet/voxeet-web-sdk": "file:./../../voxeet-sdk/packages/voxeet-web-sdk/", + "@voxeet/react-components": "^3.2.1", + "@voxeet/voxeet-web-sdk": "^3.3.0-beta.2", "axios": "^0.21.1", "browserslist": "^4.16.6", "core-js": "^3.15.2", From b723eb39fc060137a8e0de1605bf4bd75721556c Mon Sep 17 00:00:00 2001 From: Dejan Petkovic Date: Mon, 30 Aug 2021 17:38:54 +0200 Subject: [PATCH 5/7] Use cache groups --- frontend/webpack.config.js | 2 +- frontend/webpack.config.prod.js | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index 52c4724..52dca81 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -24,7 +24,7 @@ module.exports = { output: { path: path.join(__dirname, "dist"), chunkFilename: '[id].[chunkhash].js', - publicPath: "", + publicPath: "/", }, optimization: { minimize: false, diff --git a/frontend/webpack.config.prod.js b/frontend/webpack.config.prod.js index 9b0c17f..172469a 100644 --- a/frontend/webpack.config.prod.js +++ b/frontend/webpack.config.prod.js @@ -21,7 +21,8 @@ module.exports = { entry: ["@babel/polyfill", "./src/index.js"], output: { path: path.join(__dirname, "dist"), - chunkFilename: '[id].[chunkhash].js', + filename: '[name].bundle.js', + // chunkFilename: '[id].[chunkhash].js', publicPath: ASSET_PATH, }, mode: 'production', @@ -29,8 +30,15 @@ module.exports = { splitChunks: { // include all types of chunks chunks: 'all', - maxSize:3000000, + maxSize:5000000, minSize:1000000, + cacheGroups: { + commons: { + test: /[\\/]node_modules[\\/]/, + name: "vendor", + chunks: "initial", + }, + }, }, minimize: true, minimizer: [ From bab3d8094143a7d63867b2791eb840e489aa8534 Mon Sep 17 00:00:00 2001 From: Dejan Petkovic Date: Mon, 30 Aug 2021 18:11:06 +0200 Subject: [PATCH 6/7] Cleanup --- frontend/src/app/App.js | 2 +- frontend/src/app/VoxeetConference.js | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/frontend/src/app/App.js b/frontend/src/app/App.js index 42989f7..a39ea5b 100644 --- a/frontend/src/app/App.js +++ b/frontend/src/app/App.js @@ -339,7 +339,7 @@ class App extends Component {
- Copyright © {new Date().getFullYear()} Dolby — {strings.copyright} + Copyright © {new Date().getFullYear()} Dolby -— {strings.copyright}
); diff --git a/frontend/src/app/VoxeetConference.js b/frontend/src/app/VoxeetConference.js index 7659530..7502a38 100644 --- a/frontend/src/app/VoxeetConference.js +++ b/frontend/src/app/VoxeetConference.js @@ -25,10 +25,6 @@ const reducerApp = (state = {}, action) => { } }; -console.log('uxkit', ConferenceRoom, - VoxeetProvider, - getUxKitContext); - const reducers = combineReducers({ voxeet: voxeetReducer, }); From 5810c0d7e9276b9cf572c457b6efde33a7bda007 Mon Sep 17 00:00:00 2001 From: Dejan Petkovic Date: Wed, 15 Dec 2021 11:48:33 +0100 Subject: [PATCH 7/7] SDK updated to v3.3.0 --- frontend/electron-builder.yml | 11 ++++-- frontend/package.json | 26 +++++++++------ frontend/public/favicon.ico | Bin 1086 -> 40677 bytes frontend/public/icon.png | Bin 23463 -> 64217 bytes frontend/public/index.html | 2 +- frontend/src/app/App.js | 5 ++- frontend/src/index.js | 2 +- frontend/src/main.js | 37 ++++++++++++++++++--- frontend/webpack.config.electron.common.js | 16 +++++---- frontend/webpack.config.prod.js | 28 +++++++++------- 10 files changed, 87 insertions(+), 40 deletions(-) diff --git a/frontend/electron-builder.yml b/frontend/electron-builder.yml index 9e61dad..5e58ca5 100644 --- a/frontend/electron-builder.yml +++ b/frontend/electron-builder.yml @@ -1,19 +1,23 @@ -appId: io.voxeet.app -productName: Voxeet +appId: io.dolby.app +productName: Dolby.io buildVersion: local extends: null electronVersion: 9.2.0 +artifactName: ${productName}-${version}.${ext} extraMetadata: description: DesktopSDK_0bb26b73_v9.2.0 files: + - dist/*.png + - dist/*.ico - dist/*.svg - dist/*.ttf - dist/sounds/*.mp3 - dist/index.html - dist/bundle.js - dist/images + - dist/fonts - src/main.js - src/preload.js - node_modules/ @@ -50,10 +54,11 @@ mac: win: target: nsis - icon: dist/icon.png + icon: dist/favicon.ico certificateFile: /Users/dolbyvoice/cert_win/code_signing.pfx certificatePassword: '' squirrelWindows: + artifactName: ${productName}-${version}.${ext} iconUrl: >- https://raw.githubusercontent.com/voxeet/voxeet-io-web/master/public/icon.png diff --git a/frontend/package.json b/frontend/package.json index 33197be..5cfc804 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,7 @@ { - "name": "voxeet-io", - "version": "1.0.0-beta.1", + "name": "dolby-io", + "description": "Dolby Interactivity API Desktop Showcase App", + "version": "1.0.0-beta.2", "private": true, "main": "src/main.js", "scripts": { @@ -16,12 +17,12 @@ "builde:bin": "cross-env yarn run electron-builder -c.electronDist=${NDS_RUNTIME:-../../NDS} -c.buildVersion=${CI_PIPELINE_ID:-local} --publish=never", "builde:bin:osx": "yarn builde:bin -- --macos --x64", "builde:bin:win": "yarn builde:bin -- --windows --x64", - "builde:prod:bin:osx": "yarn builde:bin:osx -- '-c.productName=Voxeet'", - "builde:prod:bin:win": "yarn builde:bin:win -- '-c.productName=Voxeet'", - "builde:staging:bin:osx": "yarn builde:bin:osx -- '-c.productName=Voxeet(staging)'", - "builde:staging:bin:win": "yarn builde:bin:win -- '-c.productName=Voxeet(staging)'", - "builde:dev-staging:bin:osx": "yarn builde:bin:osx -- '-c.productName=Voxeet(dev-staging)'", - "builde:dev-staging:bin:win": "yarn builde:bin:win -- '-c.productName=Voxeet(dev-staging)'" + "builde:prod:bin:osx": "yarn builde:bin:osx -- '-c.productName=dolby-io'", + "builde:prod:bin:win": "yarn builde:bin:win -- '-c.productName=dolby-io'", + "builde:staging:bin:osx": "yarn builde:bin:osx -- '-c.productName=dolby-io(staging)'", + "builde:staging:bin:win": "yarn builde:bin:win -- '-c.productName=dolby-io(staging)'", + "builde:dev-staging:bin:osx": "yarn builde:bin:osx -- '-c.productName=dolby-io(dev-staging)'", + "builde:dev-staging:bin:win": "yarn builde:bin:win -- '-c.productName=dolby-io(dev-staging)'" }, "author": "Dolby", "contributors": [ @@ -34,8 +35,9 @@ "dependencies": { "@babel/polyfill": "^7.12.1", "@trodi/electron-splashscreen": "^1.0.0", - "@voxeet/react-components": "^3.2.1", - "@voxeet/voxeet-web-sdk": "^3.3.0-beta.2", + "@voxeet/react-components": "^3.2.3", + "@voxeet/voxeet-web-sdk": "^3.3.0", + "about-window": "^1.14.0", "axios": "^0.21.1", "browserslist": "^4.16.6", "core-js": "^3.15.2", @@ -80,6 +82,8 @@ "files": [ "../README.md", "dist/", - "src/preload.js" + "src/preload.js", + "public/icon.png", + "public/favicon.ico" ] } diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico index ebb401d5fae48a0503b1141457dc2d5754c87ed4..df1753543cd1a8aefa203a2be71936ceee0e83a5 100644 GIT binary patch literal 40677 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 Vhc}7DdII20URwEMjigEN{{c(?8OQ(t literal 1086 zcmc(dOK!qY3`NaHDrG`N5p4)Dm@wZ!0LIks+rZH1OX^7Epuk&+Md6}eQ!Osk069sD8MNx-+&NQ--mD5 z{_{y31Dzd6$1sEyc*C*pS z?+2b|SlsBX-00PLWnpsVzB;Q8NNv#XWUqQo>vztYe)va9VnylcsFGc$yAA*#Q&&@d008vrCltVm zuO53oBPUl6i2DOoMNrnyumS)Is4FWN_?WLZ+b26d@#GXcEGj-t4r51CgkitaNLzJy z0XFZKgKV|aUh5sXd@NF4YTnYcYy=&t4Q6e@$OH-3X<`=Ib!I|;d&WIvXWUO>Gc!Gg zGqp3yiCebxA!JAt{)8nYesHw3VN-Rq-_V~>zvRCesFP9bU)+C}tk7g>y_w0qPqfv! zUv%8~zvL{|kpHvtlh8FDviywvNbdi4VHCj|H~F8){NI@T|K$k-W8vRAXXwP4x8*hSuaCyd zp@q)ntEPG?x)mF>(}(Hh}1ZOPTbJa zM9bOzl+^LljmAZ@$B!Rc1QFph=W;vYr+lmS(+ODv3lj(P1BDKElrHKWi2TbE=dyd- z50~8on5LDUZ=c-F$9eW;I;*5-;#Q~P&XcX?Ye@Dp>WYrPK=J!784BlW``gFg_Z53+ zrxgf^oBAuJT-Co+=#yh_1Uh#r97g@*t0S6@TX1VmJc&6UImx^fTc|#{^-kAqctOKA z(W&>tCqk0AK)P#@J%&dVd)!d0Lo^~_peOs}$$siu!^uawRe?v3_K!<>N_5ZWKdc(@ zukAQP%zJra>EzDtzc;uHGHcJ!dsI$Txba?_?i^#?yUqpu6K07?disJ6iNUf%IP3CD zEdZPI0wuQRz{;Nu{^cnvS{72I`(NHu0?8v*v2&}ju~DdCQHzq?HwPNT3I>G&ex~qv z{jvW>{_DYvmxMf^7KgcVIFFJWG55Ugx<++Pn}%1fhj43GjI;3jMc<8ape7 zsViB@`oNqB65e`B&ua}@yY*6<9S0mXf1u-LHVe8ip$3U1jugl{RWHZns37rkmQjj4 zo3WHh{WqjZMx*HP)S?EL%vzkmX9DJha$+AdaPrRkY=ajo1;(}K40;G;<`ELy`Mf`* zaXZBX^TSKsMQE|MF4>fzdVn%msWMzA_ADM!8ZaRIVT}$sx7W zN8W)*5LEtZ)mxxkOKztuX%zR%=IC(UUQ-F!NgO@R;ICobaQ2vPDR5t|YW zj6R4qqZ5-``55(#6(G~+wu4A;tKq&9K8`3h5!e6sB)=*D zknpbPw1iZ5+zDdAYnqigu=tBkWAB3Nr4E9 z^+9xlSc%@Q-aMAhNwTpa=o*VP)UweugdKIc!3Eq_*t_W=X4hjQLkYnr9noN`QoZz- zkip5QR~SZejG9^P`K4=6IFqyV)P#9rZrPKI3=ixoT_2he5+Atar5fvg6Ea9(4cwkC zYOOn070QFVa$P=-?QvQyWR9^2a=n4CyIUA*F`E{!)iOM~8@lMgEF%~O{9B^;SCw#; zHKM+n*OHi>#y1wKn%`en0&?uJIfvz9kS_b)vBt=g{|-sI!$fkFc5K@=izxvN2D2VLy(S?Ndbz~z0V7#JD~ZvCNkd08q+l+x-UNCA!S zP34p%hKfw2&uryqYsD|A07^TY?=Ckt_ z4zS-75%g`g_~J$(-k;znuqpOroDj+8AAByK29!x3(}6!1#RwMa!DYX5L|4-fg#im4 zEt8g1hsFK$L-F2%r@Lg7e)32Rn{LSL2r)maq0wVn%5VhwrqQyTIP88M{bkB|!O3&_ zYOYtPcm@433wO*Q(>;hmP><%P9xBY28^$KSfqz;*WG=wJ@1g(H@My6<%yd45#>6E6oXnu>Ce||eEPib+Uh9+)H?gaFfYEY3nccJCchZ} zGO{-?@aGM9%K@Zb30!MBf zh=T_9T+tb|(^lB5k50I+Vwl^46DtVtsyx+jWcjF4> zI+%;d;(!UEA|gjvl7(f9zPtY2=RAoRawLBO;Db8!Dt7zl)QC>cP=t z-!NeQd2_?X1SeLY#olT^wLm38B`63-iQ(a4KJiZ~UG2<%wOI+>6kngF&#uI8j(+-q zt9=;Y&>IKGJhp82>7zR^G*=@_iv?XfjqK?EAlTnl1N6Pyh*ulehRBl(g39Hgf9pb1 zbl~&dSPjACxwOkP4{1<41&?JE_{A7cb&K@53DNVlfp9IkZdv`ki(~4WJT@Vj9G5vy zm9rPZ6MOb$JL zafa)~EoC%s*fgE{3iCkl(-zHM14xJ(U!6Jz8ShDsV7fGB4FPPStz zF)8oEiwyy4HsB^Nr~cFx0bXngOIC%6keT|KHfBH^$AG;TBx-;R1QG+gwBPQn(c-QYC*cTxqB$2+9;19D-Kw-w58}Mkf zMf}L(a*M5GyhRRC8+d>ZmVtC>O1K3bs(`eMI!&<44$`p%4(Q-eDP54Q(1)`#-K=7{ z8X7%06P^PR$V56rFg-Y{11`}dYSm`sWZ|69;p^JbJUi@_rsLA@o}AQPS5{V7BZbIt96UzM($7(ZVblo$I@|3FzWyk` zVRowg8wvP)fBCDiOgCLPH~S8_$Fb7P&rw%+f9~$nSsHLXX2CDixd)mMDt^My<8hW8 zh$8LP_6xORpUhTbrJfbV5}$L-eoUMzK4TU=~}-61cu|YL|kA!)liaGKg-DgFxd1T_uHSfO|aI_ z#3jM9!>xiF%Zj~69_@!tjo7hb81r(RsE1zAh5SH)CV{HfbLjw?rcA9D2j1r+-<=APLAEf#%#^_37lq^K==otr*@ZQy zVf`Bcf+Vy;Qu0FA9^(zg_U2Oh@#+#Q3L_YQh|V8V++=$3cY08o#7EZFu`6AsLMBIF z-q+tI*rPRFMnECO8JCKaep^q7P03oX+uuR}kv4mbLiez+(;m|*NY%qnMx0)hc7B9t zT&l%M5Q4f;_s_>M{F>Qtm4~%biMQ9-CD(3sIr`tjXvqGRBvE5v4~axz*h!5q*&%`_ zGnp`({q&y}NILVN*_`+tE8ZcF^PTz9{SmMQAQdd090UEiwJ!y?wqw~i-OS0TF*d2> zqnmwHj=GB~;7dS$z#=UKo13}oF?68TzsvoExHHUJc~`IBJ?Dw;BTr9Uqge5!EvHSr zh5&&Us@Lv3QzdD1x@m`Drk6tqByv89G-_xWM*xf7jbVwRt-X13PQY}$OQu|xM@b2c z{r3@ZDYr@3rN|OO{gsU-R-F6h+pz5!pu2F3Boe0PABy5~xO3u@b6*pZ0 zk-X9gpYqd4%8-^m3p}x;?}`6AV0p>Gg8t4Pl_v|)U!};no3pg$1I30^^925cV}&R& z{cVN#+x%wX-skI+s~<|jRvtc*zHwdWQJV}?3#_xXxfsutU3@v`KwSDPu88a4eP>h5 zfHhlE@I2k+#Dl%Cssz&Fl80XwnWrB99QgFq0Eh~PIG%deo1fR3B`{Q-Z7a)MmLkc^?V+w!r4c?e~=5l_0Pa^FNxBuQJX7r{>3?tkNEw8MSuic>|Hu-D+tHiR_1sgrMM)*gZ>QDBi!VpYE&+j<%R*J?xDG z9n+`;&=r}~{KZBJN@=!89b=*lJR}3O&Rl=#+B8>cx_+yEJ&-H6fE(U`PP8$A=c_JF ztGF+9#aS)RxhF@4THlNZ_+%j8pq)V#nFg0cpeZ&i?5^;9f=15pGeWRmnfk+(=MA0 z>?VQ;IN*HF8sDb@J~>7vqD(L?bTAarxdSZQL<7;UpJU3Vp3VvtSGJMlube!JDlQIM zH7h8lFynJ!ez>VfjnU-k41%q$2E#B1UUGI$7f-CaN;gwq=P0}+g&W;_07Fr_R{V7S z?+b2s^v(06J$7NS(tGxEb0^V+x2eWwQIcO=e47MW_+taQcF000#?MYqRk2K2L>Tm+ z0)b@Z#kHi=b~Fs+0$E8SHS1plpB*$4)TwzfdWS8h7vGt3Gret9MtF%IK&^KAWkRF& zxBk_4axG{Q=AYYA=tor72T+X&TP|||TQ&*ER#UK!#7^t^@egl^&w0LU<*v0f47>4S zi(py}!)$g=o&?Rmpo3yN+j|u5X4DEBlc-Ug!O;wrHdhrv*Qj5{9eiuHT*xdeS+$t) zEu))c-1{oPy4!W!|fJa$3PL04pH!@Gw=T2XUieZ zYO?4Yc*o6ly7cAeQPJ1_oAhd-n1*DunGw6rv#49bk2)85-*?Y|k8&MdJ>?XG-CcUj zGS~y{rWi`KXM;hTKI8|IkAtVL3GKz|R0j^A*+bInL}^cpKlcWwU3et`uN0*xTvYUg zA)C2g1wG`olM-9a0Y?n2TBPB;)I44D!7ow;IID!z&3*{&LRKdZS-3v>d0;py`a;5= z{l1dexKWwCuell&JC#es!f0W5IxWG`p7oyk! z!>vxl>{8%bRQV%8{~V;2?8Cwz|Dub;uj9#ZBQUHp366h+#IhC<7?`U5;vB}sNoiU; z_5MY9pcfQPOzY1{#ts?qAP7t4kVgDM;H5-a66 zb^DKk0Np_$b3LP55nA=bRa%26YLH9B*S7WI59JjUQ+wX4Tgw;`ys^MaDTax~RLg2s6he9RQ z{*B2**?pVcbj6oJL#&V+Dxkld;WVMRj48XKbzCM6yd`oF(V7csWEPaBxi0HeN|d+E zq-Ph(l=NTbe%}<0me!XN<`F_#!MovjnE+2D%gmyLDLYh-(#SH&jXE!a*8e0xt+YEH zPUQS^C|C#gV~~oP^Ky*Dw&4{Ok2a7}8fh*d73z&0R~8sA3W@lr@bOoE$fRF3jqfrS znBTVIHl-5!dIRL=AU-k$^NTVWp`l(iCvAE7L$e(Nd1kvyPKFO?p{-*0v%3qI}af0~} zYZM_!5sD`&ONr~_ii~{3E`M78bdM2&*CewsWc!}Sg_75f|EWfQW@xme3Z%B2M;?_| zvN^mwo}=Uab1nYsKUv*a|FK(L)~EHZi;45I-X%r6%vd^Usa%WAy43xrNOr0a0yQ8n z;(o}q(i52H<#HT<_WMu{k}V|r>?Y)N0|}sV9J)0yK@W0FAEMih{;I>8nXSXZu+d<- z3;*a1z>5u1>$S;y4QkK-8GhC>jn#1ZMvQA`SG;zlvtynT#0kD#;5e*2&+$}@iFxKGT*ti!H<15GVR6`_gwR_- zea2sjv8Lsmz%V~mRDe_ndW1%z`a|A>t_-+a)K4U6sqK5Nva=_vz~_7(Aj5PN!;uz9 z1&;$hOY#$DROxaF5v5C;Utri@r)I3c&9pmqWx(^46morIXDj8`(OzZ8$6J)thdL31gitJur%h%>d*|7Z^?mw+iF)H2YdR3c9h=C&;? zHNt)~iFP>BvO^QW&3yjiBA^k5<;?%99=0RIMCVTCKr6v<=b!4O9aJ>0AKpP_X4@;Q zZf#64z4l@>U(V+xCSMkI(d{D&%f5r079jg}4c)w%bs|Z6A+(~gW>OXn2S`{MRpt`k z!1pBuo1no5DPJd_l*0juoYSx7Jc;#kn48Y8$YgiSK?w8G%rhj|B!9D>VgIVq8;)@( z+60sEi1gsES44^Bh;!MYvSq&6#2x5hbLmm#$|gDQ>Y@nIC2L1b8sa zy(+7V%6%UXBvC`dfn3ZH6_e6Ma001t%`!+(y+stP6{p-{ab1?&_xH z3Zn`KhRUG!@1M)Bhe+HN%8g8)y>vR6AftsL6Yn&U|pdqys|mHWL~BECsJ_v50RU>tJ1q> zWH2FX^LjkWSlsAnHtp-L^Z~w&pOp#JE5#^ye|`7}^F{0*ukc=8MpsWbCRR`l9*F?V zx5+5QXx-lfpM5%312~$;j_}RqS*MqOq{~>$BnQuI*0^G=Y^OSUVNuCh;Hjt z_VTYg2!JZ&_fHWRzB9=nDk9pqDU$<#*{5D(U@I52W>h%SyW~i~6UVYbYTx!3zE)3g z`}doBWndvpoJn^OXVd4R*Wa^Smm@zbr){}TcylXz=oGsZ?1GAO=af54E}Vf|!qdKG z{s1b83h^qe*r;nks@>5-FWYt}0x*-)IxN~t>>)Zpyp$%K>p8~ zA6yKLDqyREC&R>5lnn%|XbkW$l((1xHOG2$`v}XcGjs@&5uJQ>Id5miArl6Z)vIkT z?|;-8t8`7CTXRTjfTV&3M$Lh^miwQv9as z$i9*DjPC${t6VNwoh$VY0^=JjzOm%mDf&IaBwojJ#{zK`J8`tHg)2zFpf^pXX0 z|58}4H-lb_hm-6*fx0bCRNhJKZmP_`d!hgQvB)j@-q9fT;3P;)WWr?=zdW%^7G@5NVYX}5EJZw`xU#` zNayGE`RzC7W0_C8cM`3Y{1zXRSDB?1+Fw#b_Ecwh^2BZd>z22oTGuz&A0zqv4D11OjQ?OTuT}Zw58PEbE8Po z)qpAsZ7YK*;Ys=(l>Y>6L`wWl(yu&ymaRiLx}7CHFA_I=g^n7TQ^ffo@ye=kSsYrX ztlSg=T#9m?OYb;lq08-?K1*$Pr*k(JfavW}Fr<03f{S#gH}%V8rio7D%I^3eJ{58;L6*ulbHPgH+F>3~9HnUywymKrjs+?Dwi^%AK|{Occ94Nhy#dX1Z;xlsuT>i-DQTkugd z{uv~J6;XISK?H6N95!7u$b5=!&L*UpoqB};HKY0CifJlP)o%3a;Svz^pIBC{@VCFp z|2#8}4|a+xy>(xWMbCcwU$F`SaEry`^RlZ>pNHb2xs*;$M9xUl+w&L>4x6N~nOA?M z^2R3Ww(WJ{t&WcF!!56HfZ9sBuKA!_yF~tZIK@TxbIN#EeEu-}3RS+k#Ra;%R=XoG z5nR`ig{RZ&5?GD6Z^Cz8(I|(vPZuyl_#VXgQUjf*4Goi?UCQASXxHzNuo$`A)BpB{ ze#&j*fxL2>n}5Lfb*hUQu2#lE62IG6nN+ajlMtFS;Mx_4!@(?lblr^!gz63HRtM z8BLs&4fald15z?K4X=3^Y7>o(qN|DFloYpNAg^~#LT;0#ITVPSJIqg+Y*t4t5EGM; z)fy1hy^YrkPFphFWS-`Oe4H8-j?ED7KmDP8O@1h3wc9bFo;z*gvv~cJOr2-;tdK_+ zG4iJ5@SC)j61+PVEeuxFQjg#Kn2sMUVD#Lp$XJGCqC2OR)Lq}(4`#Vz5pRIjLgh9M z?YL3Ujb}mfmjXojEtKJK^po<*KU9$PgAwa~=xP~1*5I*e@hBnz7{6(y=bBL4Jx;?(EX zr)zx~e`Bk*YIqA}__WP5ns@>Yv%7F=UFKFpmU}AyD0^IZ*h7F$)g;WrJWz+CKtHCJe4ki~y3PA0N%pL!O zpP4$_+S*D%(eV>KaeN^@ZmbmpzvuCBgzp32GHr-T1xkmQzGbjfmxOreuHEL6m4o1K zqWk>=`@j1@selYBM(d}DBtH~Rjbd?N8)LqD34z>wmRP=w`&gm@Mle> z=g2|h_rn(p92%4Dt39NZEl=Q>jFK_AQPHzp60u^7OgihAK2OK5?(laJa>nCZ_pK(r zdOCmHh$^F)@1(*EsrxBBKJ=;g1D!1KwV{)8yWZVf+b)819G46*iVmM%wwjKY-|ni_ zEOVO01@KBFMWyUSPZfO#I8Fb$Fu(=9Yh>^8A*@bAH`KvE?HLl*)I4Z|ziP!ZE&0E0 zcZ^KVE2Apzk5D_tf8$^9ZC@h{54S9(ZPIM*x(!+WwpnDd3+=x=a1(H2T!th?l-3BP zwsRD$C0epDzJaS5*Gujvt*iT~X}Pwz25QdUapKx@q>a(HU`O>1li;0rzyCp{NMz4G z{Ya19_;Pog%?y>LQ zqgk{h&lTV99y96k+UbFl&b0l}#5sLZt1y%Ii(t1W{}V4OdD8uPoLW19*0S_Lk#C^( z3_T3w_MzvZ#?I95&LB)-jib^8S>VcS~m%U8uV zNhnHQWGgD&RhrvjY!oXu8K%s>d&m=-#F;imwB$JMmplDsZC7VZbJGTl6Mry%eV#J! zQ9}QL8;U+h)8K34FdbjLm4DVwI8h$U?cdzz)qL2G&;fabK6cAlST^&SZ4(>RGU=XY zaK&vu)02COt1>F2-)zt2{CLI-nT=~s z*M_nE6p??ccE7uwnksG|*9GBHn)MLlULFB0S6sc|HVa`jsq3Wp&N%g(9Qtl;VV z)V~4Gf(9llD+z`&Pa4^LI?*tC=|YxCT7n}tB9{v#{F^3j-tL?sk&0LC`EZhY`C~j$ z6ysLE;x&j%e5?;+?G+kz^6b9PT)p1xj%d2Dqrma%S8O|6*p8jK)?G{CC#0sN5^k)9 zFp1;j2I*?nwZ&Wh*jF*`_}HvHvyuKs)yiw79_bOhe$dHs`g*~(dEDK6MO~cVSpKS3 ztd=qel*Cn;aZ^kduX@jZl{==el9tMHexcGdRFh>MxGc?SGP=2R`zM6qKRM{xj}BV9 z$BSKQ-n}Q`JzFiznqcP^N8pR5(pG1~6E{@&ynhV>!=x+P_ML+mp>+lQnT||k38dnh zcZU;|F^UgAwWWdRpIHEMT0n-Pb2-trR^;=Qu#i}S zx?fhE(kdK7ET#@fsmQ)=dS+bREn!-!(v*>EUbj5-k$z`BgnDx3!GJ#rFqAB{@A5(5 zdO^lz6C;%Z3bO+tU-;qu$XaqCOA)BOGG$6xwpl}U_8Oks?PP39K00sXjTAY^$lwA= zbFGF7=W#>e=hBgTdvqT~n)tUCdT*X!;c_PmNST=0%5fA2@RWYtP>A7w;@XbS!@jrt zk<3*`*_%rIF!iOZ2jZ6--B!!)fq$M(OvLtlpf3%P3=QJVJl*TxcWh&N5wg+)M5#dA zZw68Uzw8Zq8JcyW8ioemBzLNqr@&gb^VD>=xMApveKyp;vv+P?!3hQQD@4B8z6dn+ zwL~HkUJdiz#f1G?$-jTW=t{nkUjjz;YZ#ZL#+3vU1IL(6t4bOPu}pQtw`Aa$l!(|o zBiX1ctU^JZ)5WpH$Y*+4D!WCvU>fLy&Upw+(aL3<|U~wQBO5CEZjyb0OaI-7wgRX>)lv`HlVdt(M;X(AC zp~HieD~2Jds)C7Ks5^R{4bbYjHBYkurUezKrsfSf2{V*FQVS_og}KOuBy(5k^{a~t+o;w7hh`%}P!bBTZodTeTP(s<76t6MLCNw|c3jANdb6Aiixr3^pw7b<2g)1y=k% z7tt!5c>fL;OP=ShBxxD|4!)_1mND(G%pjs1B&&VzDn9flbnKL5yf z&$c`*Zh#UJDQnu=?DuQ`)ISC&Gl|I?oAi4Z-FtDtBb}?OF;eRlM1>(1xF|UtFS+!* zi{iLGlCKXFz3Mf#^mesz~H3HTan_UF_3ZL#lR|M>UF#!JuIn`GK`$^eQ#D&d4d0 z-|t0f|AWTw=ZU_C7!*$x2B+!5z7*oZEuiDT-=%Jp%Z}Q$SJIcIY`12zuVn77z#h?k zD$H5>uUS=J8~pp%V9U#93oH81tTp@Fwx`9pw#IJ(A4oz-?A@mW-Ua`B7y713Bh%HAo}(6;6IR zUaMoHFdo0X|D=`q!~NDKpT1UsVeur`F`I&q7j}_;Zv*m22KNOm< zs*VYu)U&>*uk3V**%Og($@_+P(}8m4r}OlA){w`& zA%(=_)ft@N7A4=F7~zE^Xo@=toV~$Lx<~ttk;63{)*(5fR$V>%M}-BX>Dl^Y&PSMB zJyOxhxp_;FZsUGj4g%BUJCj(6^IwIXha{B|@ql}hw#|Fh732(#1) zCBKS91j*CW>ZNKD`yo9EpK8W;Ao@dfVkoN z8>yUcUBChoE$45M@gID8a&11((N!q%El`BTvL*E%oi2gYO-`F4(jMdj@R*c#ABkU@j)iu=lWCG>SG66KrN}43i+S*;3bF$`#|kEcMlu7w++{Td3!!Wh zFgv+c&v$gmH(0qPpPEaoM|Rf4e(}XDI#rX#tCnmD_`on~@o$v}AB4ut%!~1`{&rI8 z*xB=OM=v;&b4I0^QMVvIhq|2|hj?;+`W}28(zR1Th4Gm#dO2`tcP0FvJvMLA$ckK%xxcH z!19>4qmUMk z)fUpFchdyr%*>8W^rcOk)jyCgy|jl~b|#j;>kaTQcP2LeB7e}97UW?y?@YvQ$$6rf zmGH6`l71LE|8jTfqt^i?PauHY%@3)O=*imhl2;=%rNOYN!khnb==Y@a`v-10 z@j|u^$md9qmg(|-7i-)1JJC}g|KNxxY7Xa#)<&ZXRR8`J_X-0J*h=xSq}5!5z=M|_)h#f^Uz}-l%xrCR>m!*=s|-Kfw67u?uWyM@O>o28xW}ILFj0kx{X0;nbT^f`Mo~oFV?|Oy-t(Qx zKi-q1!dMb!%I@4h@53%4qi^Z$2v`up5kMg89TgM9$hgkRUyZ)4u`>=DH?T1GiZhAG zkeG0*qhXms-ohM7O#b=!idU~PXNMD?=4g;iNaqk*yI&Abf`0y21zy%7Oj`q2t|FSGO;?uUdt8sxYZhPmpF(S!^iRlfqo*^SUSW8&R{aU zeJ={u4s0;wqz#F2WjMe0Rq|e6a@q1YjAB8GW>#wH=5<<5_CkTvRB!}ygfovE5w45? zv)ZA4C2esg9A(naWOQXJ%$x0`*qMU-Heh%WhQ^g1>xGggyGhxbQ2$TU{o*4G&RDj= z9VvN(Aa+5&xDz2wBj59^vyZlH5V-2ZQV2ru?knV7(?VG$8vSLQxz|n2yL7rmY*TvP zT$N<^0ZoN>^R~M_JX?(^AnoMuvtSciXfDb37#3<2cTtoUdcE085P|-*5GSi1L1XK}_UU(bZ@>=6}RQDaJ%Pm+m%{)8EC3g)xh3t1A>lo+iFZ=o(# z$oPX8IQnMadY!aY5^$8>Z%T^-*fGwTvsvNMuk96b7g0ufU+VU5p>0auEy$#6hNAixeQlDf|0nY@|k1!2K ztnUT-Gd&|#OvUD^qeo+k_x&TmJol~CJ6xzMZ#nV3^N-F;I~a}N`&Q^M{=+FGhE%PJ zS*=R~g0276oyN(kjCPaVCImE?$x*6+XCRlYwt=~UsYo`rmx2^uMTyCwY#FPwO$ATZae&D(9^zfH;7`+#x z)VR98Sy${k9(4fWj(y@}qGf0bwUEp=WFXCRDm)KL4|;>%dc4a)iP%#{Ulkp=`gp7*0v)H4Wm>q=lK$34njMLl)J3Czbzw(dYO(?W&^9)vSEvuZskqiDDiF+X)UKJTuy2y5!U6un#?7{xpRYaj zm%50urShnlPby(VpO*G|#swA`67y&TSwgG107` zQ4<7gIZtD|B3@uaHQL8&yZ5#$)@iP4>{xARCW{^@yl0m?%^Zx3iR?B=n&h}+O_Ba+ijrN>uXyg*cP>N3@T>Uw75s*q*8?5KuI8SZqyqd32gotLK%aM^;iJT8ejop|9tkU#LVWmEh&gM>(x z#NOGQa=j~|X5aaVT$OpS;)<08;;06)6fR8kOAS(#bjkkyH}X2y{YiWbp%pekeskxjHa-BdtSs*WheYxm=8BK@AR3PYkv zfje{pP&g}Hx?yCkmI7eM)NvFO++C50{U>8#iW$s$b81TiyZRMM_yKq2yfejtZ~sw^ z^N?+E3&_OY5>1SY(0P!nhGFoR?I*Tu(37rt70M%!s+1QHUKqKrRk^Pr#~ndM!lM36 z;Ws{T?p*QN{nAgz%)Na`z@T*Jur{a$_B?4`4QDM~Ei=zM9S1}AxWa!PARyrAoMfzI zlP*GRE|V^C=G%jbhXcBDXSemVFa8u+cvw^berkNU-B8$5W9U6Sxm|{9EQ00TL8R1} z!ap{8BHZNrno8BGZ)Mn)>)L0Lh0?rakE%B%r0Vtk_X11|(vFHeG(l5jg5zy2kkI+s z`3Do1+`V}!Y9O*NhV2?qkDo)n4yb7%{WDP3%W`Ml9mr57qO~%)qYpGK`0O ziOKXvJ-x~9K~oRqx|@R!iDGg_beXQKUNbhgF`Cznlvz!w#ixZFJCyA308`><$9V(S zE%{g3l4g0oX+&9pT1TC2DUcrjr4dAOlTXT~6~v?)A8$-v!JYzU!}1ni`2OePpsN~X z&%+#aJ-fltR1v55FfjX#bJA`|p#Z|6@LDsjB(L$?K(sDk9f%-Ox_ymi#w=TxXyjaV zcQdYB6$F$IBa`J`*$7P##oajlCHvdKrW@l1Mf!K-$$kLKa7rq$aTP#CH)LjEQu4w( zrG*8#y#*Bhl!=>j^7FucKCcXk0#X>J3`OGHZ=8%r#bKgao%i!N#P31}_i^>n=#&Bo zmHNH0a-dHIoDUUPfROJaYHb}$3CR4eHrGBs52O%ewgfl(9oGtKHp_TJw`O`G#vynq z=aRJ9CT06htB)Z;U4!}!iO2d`onyJP-Up%-WQxUi##0V->;c1cOXT0$tT^xtfj>XB zs7e18;>c;H8yLv+r{YWAQVzm|SeN|st)n5!J;#K+Y3yJ{FRsCSb6KA}zIw5^(+aM} z%i<>cm`hTJ?$=`{2k#h|p$b|`*VM^kehH{SE%$W~TZ?iy#3sb(yJ=LxmrkA~L;}*n zA~9BE;L4b{{7Ab04cOy=xJkyvTyb#VhN*_`;>|0`^KG703*!urI!03qh;3Mun~PZM z790l|D>Lw(Uh(q+kP-VBvt=h)C47q9e}Pi9wEhub{$lBJeQJI5istD$BDzcFFn)mn zhV4RLG6|U-Fm$Lqw3%J(AdnuBz3*G}x+Q{DhVWR8Mq!Y}g(qtpmW{LO4BDr@b=^^u z;y)7wY!p*H%xiC*>RU4doL~5BxWxj|D+vf5If(7wWW~=-r~;XRU~cHu5%+|~?=0-3 zr2wCkPfNGYJX9w$}$}_ppu)|GM?EuJ~k6;$T<_L zu)_g3)ehJsDN*w$d}#JQMow^!MOviVMJb6Hw#Z0ZeeSndw(eB?`$6p~oH_sdg8J!( zB&F5)jB-MOX85RhcB0!q3$LsOoV@>~bdTuo;lCW<1JRJY&eZVRv3V;+^<>4^TzTrf z!2P)^Yr-=wd#*t8x}vK31tk8OBndjMcdLwFvV32^mr1`D=JFSgKF3PksEfhQ<*0hS z0u@FA(c_Dw!izznM+GvIy)XSL71!k;lpw6>*_$t(7cDE}a;#ud<~e!?UH&0HV?z_q zs>B6(r3N7X`L_GM>CMXFy*&GQH9m5n=)qI*JfV~O6iYGD(>w&rJ~g2P(s3RzbXHqj zhi4reGr3`-bCERnClxl)mEBBksEVpS^J*L+rO`du8*mwGlY`Y8(WN?m(Wa^c7L5YJptGOA>S5t6ZgZ7llx~})3g5q1_`*9F=@-C}P92u0d z&g#ldO%0b_VTWwZ&Ye4DZT##*Vseu9xi!s@7=y22bp8_w#K8z&k+z}sU$|2tM(A~3 z=^dI%zNzfp`TI`B^N5HMZ)41Gn06XBBLszJ*-6^Y=4;dzTE8DB`k5&BzSfn5w;Zu^ zmOJ=G4&K$}&x{1@VaWG{Z#$b2kfd7IH?B05ut9N)3Uem)s_e;N@^JCXlXJrqKRLY2 zZRntC-2EUfHZVo$x2lkte(m~Mtd^&k?9^Ar8=rmB(t|97`g6)YeOT|6IP5_^k2~eX zJtT;*1pnEzy*yA$elhpEw>PP8cc##ZNbjEnmk@6GN1}LdA7oS$XXXEp9PX^@^!25d zp2grCJ0(XFcUySs=vRh>1c7l|w;NwLcXf|=2OY-K{|DZb}W!+I7e3IZfrkF&o0M3549eWC@sy8JjG=VJueZRDV~CK59_vY2351eGS>) zjW7|k;Q+n=+l3xVsctq@q_8r`<5%ert}~_Pvd`_BMO9KZ+){RsfE@BR5$bdWwoBg7#1p zg10+{m7kj6NVuR+R;=(7#O0+89RrWl&^4588$7k|X z(Xoz-(K9V_pU_;+&?{-8a(mPVa!@n_GZ^d z|IUBwKAmi{^Vi4rcgW|T%r}bL{VD1OT;sd%%ZKKs3MaIo)8wFPfe*qtC8`Ek_ht)o zVZ&v7tWuvSZ2!T)T6D+&2ZP!15!3zv5@guewmpfx<{ZsL;g?!xuhx=+QU6n$DX;&T z_o4J{pASQ2WDIfST^{$$$W?;Y%dT_K_X~(O|p#_VZ$|07_8(^&4zMUv#-4u>|h!7*n2* zX$q&jv3@;HVc=h)`mTtdquGRE9LG6<3OFi@PNI(O<}#+)o--e_O4$x(x^z)+udW)@ z-FQ%yO&Umd>a0UI(o1*!{p6It@C&;;(EaX2Rx&}UDoX@LEWKr8YOsv6_Ey00uSf*t zYMu?rNBmXGIKMW|OvH~AljAyZliArFYuNTug=HHlKAlsWl; z-P;HOiw*%ti=u?mQX>Qe2>}_+knYi=wl&+GTk{@r%YeO>nz?|6nAe6MjXPRvv1 z^^c%?LeH=k4W(TIa~U`IK3~P$csQq{db1;Ykog1x!Fz^AXx9*{<{U?Gg{NI7vG8cc z%|ZR7Fi)W4NwfH8li=`?Hf{Jyn2;y4mec%S7KSM%zV9^&j3$u{mR}&fh7#jH|5R7F z;cuHeW&JGKHz}Jv*=ZSbVNw>lfot(VLYUqbVpYOIt=#-x?nf4?e-~p*oFW97Rvqs) zo=i(ZKrE#>y_=VF@dFtiud$EA1wnX5bxnq>=Z!TL*EakQZ>V#yc#l|ed;ktU z*sAy6aKIC1L}`L%t_O@x2?1Qnb8hc4m~}P`wKJM~inCF~`F7agsmB#|cIg`JO!~VQ zvVolMj!=OUG@In}=FMoP0aCRoFs}N+hVv-U_M=qxW$6+v7c__%hw0O{2QdNrd}7Zo z9J@7pWU4&DJr&BNW|!U#L$7sYl>{oma^EV0Q};^(6Php*xPf>e%`Z#|hC4m{A}<>- zx5iR!Le_#s9!`jbh|`SaaUwPvQWrXAik7OifkY!$ua6#%c?WC0Cm%$BkZZIPbG)#W zeEtzu`Qs_keuK03FM%A5ytSx{N|}6iVWZp`GoQqM+tzHE*em$xIP-K3?jG+K1*sie zfRMVoDSvf=5Df!t*~?2OHFh_{6MdB@#BX_vBOL(VvMZz2|EMm||PTmQV!sY^=JDX#azA}ILEW_G?6YQD0k zRrgSG7mi{)b*Tb}`kS7jFX!p~xICeis+O`_$HZ%HX7oJD_LZQD!A)%seM8*F_MdHO8gR^{%qHeYW_l>STmNE3evdFaf>rAmX!dHuKe;)KS;gs3wGW(+m3(5q@$%pCt1e?3 zC9Pf#IX#MCW&d zlzF>4_&A`0c4u0sG4`MLbNjoHH-+|f^ql0sRd}VaK#>4QKDr~?9kJIYW|-Q2 zP=z`VA@H3%YlN581+%Xfzbpx=c-!FK;^u*fH=Xqen(NxX>Pc9pvko4z-YVfzy!&7~ zw*SnJA?_@bTO(A>ijU03h8`so59@3~>_g=)s_7XxltvYDH`1crevJxL9&}w*CM{;p z5;cRkct~-!s>Kl}E4kkN*r=-X)4|PN%?$F zcJXXNwhRnt`o5F-(!wh2)$|xAS+M2bK&Hn_;jLP#5!>LYu+{^&eOwOBfvwy#My3rp*mu5?TP||#T z4I2e42f4aOjFi)D+MR;BD&PctNDun8$buFZu&?vjb0Mn7xPb64$#HhF6F&>^pcO2l z6f7d>nXuu1FW-#!rVF?aiTWNA$7=;9oG#&zl~8!?vShi1aqmCi9?G!tQPNh#TDP=QblsI+C65dbT{!kz?s=|MFg8z@2( z1on2R);r(Jl`?W}w--1I2?H4cB(Jw{G!IH0Yp$8ke9ReYDEb0QSmDK6ksB}Hw$-`0 z2HD-XzK*vd?)w*=ewNbDJ)57J83;OzF15o{<=@+0?aUnA`~^-i%mP@@7Fe(Fi73oL zaH{+eGr9(46AS##DTrlu#Wq48*w&8D(^v;BLal>#c(PDF`GT+|{*YY3a}p8uC9%x& zJmDdGrH2lkdeGc3F*bO;q6|dIMB26Gx>|yfV~th6@+JLsroa$Bd*)AFQfZZxnVcRZSUkS>ypTQ5kDskhcZp|>~KBW=*p}~{>N7P2%3{dH#n2Y zFwp#Cf5)TIo1s(&tr@Yuj?!fXj5&ofWO{~mtXv)q&Zu)izyQ`q0{FgA=Cp6PU1Qr8 zFkzBZt&dw(YKhA$mv4G*xA-d4(qt?ny074D=(zmuI{6K|)4vkZfuYqNW9F1Q{@8mM*fHBfD6Y>;BH@1BH* z7yE=%Y{YpiesW!p){v!{d2L!+k$^P{cZ~$kLb5OKl9K=tR33=4yR1J*xYRlv*6XcQ z`?YeiK{Y_#EVTC06_2;m&k-oLQk;~Bg)@Ru2m*cXzm9Gee%8c{zW>$qH4l)bKUnly zEwtXv`0c%WTJL}h&~mniSzU-%%vqr!RMKIBy40*(77^Y|*ykJ!UWv1GUsa;v2KEON zMKRiroK>?`x#Jz;s=;0=7SE~O)Xg^BoPmAqW}CVX_z_dip1>_$1E<-p67ZL1V4Y zpWDIcFc#hSYVi0lFrPKY)0)i-8n!0*SGl$<9Md%%Z~pC=Yc90x>Cee-J;qC#-6ETe zcI3)khm1b=hb(V%1zpFu{<=I0G(Mwfgp9*;bjzOsX3sQ93)SpOmTFOTQ; z3^w|iHbwqX;Whu82PH)@xY&(_dV6={dMB_8 z%fZWu?h8CI*3~IYMGP5TD}}Gz-%twya)oi@TpkfaI>X#gv|@&bUmfeJrks4JHoHaW zfBGd(@}NT!LgDp)YD)R2WW;Ss5uNeLvFXuNo|u>MFqQ)K&>kkJ|J4CP0GtG;2lV%r z!VJx$1#J&$nEmsO$whj7YV#+AK@Mr$PrZH|W);Xn$u2PpaN)dZ^0x6KsTj#ocZ>F_IclV>YgFl*GNs)Q7KNn1OeTy zaYm=Jw=IpUIMjV8`d9D@sp7#@DBvF0cBNtYFI&J1`s1HNGatWYZtsUd?KfUOc&kL& z4H5p=L{tGnVFD31OsR$*BM5QgP-#ek2#yt!ZuX#N{~-rgz+)-8_iZFs1`@YB`z zTTdpwJM9LJi2dXA^f|1j?px4KIYYQD^Bpr^Yp==A&oIz`-}^lt?=?t9>Nj+E5iwb)Cz#8b9l;dLb@;Wb0_?p}H9Vh&{7G0!SLy z(l}P-$Ps=Vuu(qFAbVlwqu&!5>dvaY<>X1Ckei&4S!5TX`(TAU zIND7c|4yG)MY-tlxV}Lc75<=X_yOUbe_4z1&x!0Qiw$CCEO7cLiOPN}W0)mR`6l0mNg8V#0jQI|`l7u5qwC1Cc^e*=H~lepr^Ev*TLr$!J&nh&W$C2=Lb zhVAjXo}Be(*tqukL(EINula05%l>I_rpU&MmTro~x&^<#AeO;!MB6eWCJ^-W0o8{M zepbGM>*s+9Y5jo$T8!kxmIv)}A1m)+7QB4?z;{Osml9cOXGbEzYWynC=^*7v3QR4# zpI~;6wB9Yp%JjN*9F5lYK_NRwxtRIQNVhJt*MO}8+*X9nyXr39+ZR7`fbRQ znNeYh?zS3E^8xVodjCN`H7kQC4f-pR*7`^(a3oQ2QBIYpMfLmL4tswQy)lf`6XYA* z6{(l&;Ho*&+BR$6?(>c5Fzl(O!R7mW4VB{cGeMt%IM8o&0wy+;eP3&bd95JcVDc>| z+YY+pJTUD7b(-XDX&Rxs=I&vz*sgTGrP<@%^hfgstC~`l^K<@pE>iGQjdV(lkIva1 zbVQsZ6;V&1xsCH1d}w7(pX7;pK9flSZN zte^xv#qz>AIDl#9aWp~fOP?>+T`776RF*Sk?k_xhOA!S_uBYdi+&Wg-M9mHzFa&Sj z4V|B|n%sMfTbmlk*CyLcmfJj#^%#dX%6p_Hs6)tw9pQnd%{^zvNe=?_= z{_!#}1u=BKuyX~qL$V7zG^}_Vr$+uB<-zn`g-DB-x6Mh35lRhWd~xDM!Nve!p%LZO zIYk4OqqZ5aP&Z>1Oi4wi=Vt76&!b;R;`&5(xV9&Z@jlIup4aM7G@tCDAN+jPBQYQz ztHKhwIA#A@0`lbD1*cctVqf(Tu8F)=;lVqX&Fv4OP6ScL@}=La8Jlu8+(gI~P!anlHWOx36U z;-W2Sp{(Vn!_us03e&|r`qv5r1>5};ja2e6=M8W3!s>&M>)X zfULV!Prs}N-N{vc#QAPu*-TeeXMahoGAkDG?@${iOVuR8r*fQNvNZEN@x*p8;FM-u zfebwj9{coG5EyxQv}>sc)LKthG^t*c*NgT3uaoR#1q-XTC%MdMGvT^UzHSxh(xbEd zBEn#&4DQImvEGI%ASWJn-!RK%Q^N6OhAHR9*)wfPhFT5?5u-zYFL;qf;DoOTB3?0^ zJ3dxrMfEoTnv)L;gP}on+9pxyUTHYxlOuhk{)oO`1}*@GNM!>&YkY(uR&g?>j01^>;SciGjL!1^8X%T99 zsyeq&ODKlz1UhpV;YUsL_bjS%nU4$zZ5URAsfgb)8p+>G%MoX@%y=P>K8A$#cmu>Y zjh+!$^>2jZ4ifHIj1AqG5jM_d49p6#kSF<>o!@x$McBm$m3OujWEsgOXzwONGu zbh!5;ik8F+ai-)}J3J4(J#(V&6nH^~g*xdD3zmY|NSn)zO)&Kruek};sJ`lDNbN82 z$wr*BsJrOU=H-p8dTKBsDb#)hC>q~vhu?zR;R$fxc=n*8ughLpEa%~=4N$>~c6~_? z8TG&J@FaTYpyjpaaRNi_qzjpl#c4KC2EU_mRx6ZdkBw_MN^cK@A?2s5SyRzdw~m(FM*|0A!GSn!oz2a=xF@%GvdO)8!h7b z-$ybkOrLn(M-WOZg})INbX+JuP=D5c>T89(?~~t15jzS*XpkA9#_@Tfj3D&qYP2;7 z|JNrp!!wE9_4f&){`ZOBH<`1)_i4U19;M&%vKysIW1kLEMLVa% zW}a$2h1<&*MQ_w>@5K&zl4HGztz`|sQrw4#2v6qw#TOVXHdHui)wPj8?b1w3gX%2f zOf{Q%+H2Gan!tkYyW??yK3QU(cYCA*@JQ?^?FWsqUy~&KVgf!e}~Qd&AL&Sc^KT zwwFl;l>u)UwjqHbW&p`b2N|UwdZgiIbOhnZZUQdFx#AwoY_lt$*UNm0p}Rl6AOy#y zsvrpyt7Frt@0D(TIe4Og{x@^RCuo3q`b#OAdA7tytuKDH|F%;F;j=oYSUk%s@>ab9 z`Jih~1KOfz5=`JG%9{-YM z1hV=5^S85?i*6B1v-4$Hu3l7we_CrL5wkn4ISWh>e=40>2;x_{x3{JdP+L^0u6v@i z+fD^Vz#Vv;oD@A}MVTJ3vcRm))Wv`!E<=B9`?eiWcTYJP8TSF5%~nMUY|_b((ZcIb zP+ov2XYH;n76>9wbbgjc;X}>7o1)8^hg0GyW9y%Z`-F_l{~q#n)YktV^8G-#!11pf zzLFQjnw`7tbB|-M@&@kqdTvbEL1?<&(7}#=zjF%%YjEe3&$^sR-4ofEw!aCNx#P?D z?z=3etM?_2DMMoVThj!+oliw&y+xT0OZ;=)=&JDG5|Y|FT%S>SykcbIXS~WxYR5!z zl86*!K+6kRnW^~6&EFz=@68L7T|P6W0J|Nt=IPzxAVItzPxQ#7FJq*w`M@eiX!dH$ z)uhJTnhBzBPUSOCxXUPi-{PC;lqO#UFpk^48g*eM(gM94W0_rNywm66H=!0pZ-87Z z3REYlg(&hsy6%|iL9Qt8ET&zAmgApw@=VnKS)|T7O}XP)Iwk=gb^9uXsf}?}VSxMg zlL2+5H&idkR(gQ!8{@Qzu3yH0jArM!RrufrfMC{X%|$s#47U9R)EFR6&z+d|zI|h? zi;RB?GGCVF_50HoEBEHBm=G{yHguQ1qMJR-C4*WgHQMAOFYT;zgunxfTV!dy2vshh zAFt)QXO@t`rMOF*H=s4(>$&P#8F1#EwG#a069_#%Ix;4`UR1Sr(e&|6)XQpz>fAEZ_!Dz=lFFQrpmF=`x0gK_A2dwWZB$ zOY*$*Nwojr7GF*8hZ_{Pa~b^Gc;LtSysiJO1`Q{DdZNA)`g!ave?~QEJ+6N zX7QnXes2yznPE4#zvnYMHms*Jq+$^)=#c=vx}`!-8$lpAu=IDyhI0|3n<0Swz!qK6 zDXsViy?CKzv%0zZif^(Mv{(-)*h!?Brm5v2H5}fMeNxY;#-DUhvJ~X|DH|3&GbhG6 zy1sZ5W<*aO_T$@0TX-m}tH&Pfc>ea4!Z+ywEcAE_Lix7}${+8v1W=vK)e=Mo&2h5u z8D#9({aQmEO|b>+TQRo21v~i2(rV=R@#14Fwc63g=9g`M z|2#`Wd?)-fiiMzu%C*q3z|!(l8rEc_{mp}pr2XiZY{1I)^N3s-`b0h&8fnHS5{xQ*~Ee+aSq0`25Tbk-|K^sg@Jg*XWT&K!te5YD2Ep542K z%tj)F3J+C?UU7aowM(yA>xWJrW?(Jw1Z!Wpm6c<+v%+|r#$%}M+K#%j2i}NUj2D_V zP?R(_xO;T#2O6!MKxZQGq*^`YCT@jF?(gL^=~lmG;rQMuxHb&o?maxg*sEyZd%|D+ zMdeRf)A^d2x0d7;@tMShX0?k?Lrfh70kf4*!MziXP!8NX7PO*Vd?G*(;VetNP6{=t5=cQgl0o}V)T3m8*T}WKEn?KxD&5OF}^j%p? z?yBrp#b20}-$327uiBtIjc>bQ`1fAvEs>IHLBB1Api!;{NdnToiZ8sWLBEv;8q}22 zQTpB=cVkoo^%;W(q3K;&=Nj({&I!C9m7inJB7A~JGn~2D<4s8hkw?liNTR={r*=gR z<@iQ-u11fe?#H!lPAFk&ti^@PgcUZL!~(sWn&EdkH7e>r&(LxY?0JiP=lO1HN-v289-bO=2?bH@6+VA@iig4MXJxv8X^VnEC z>o=t7gW4!45W00##ve1QLE-h9zQ_MplO(#_Nw*3YB>;-wA>w7<# z(b7<2{X9`QTt^tq^mOPwd8SA2D>@H23Kjuqkc_zV&wqrJ6*QnLOs&!Vg$;oIFN}-q z=fOb8`Hw(&zPC^%IjIet8e>t02Pd1C$I7x+YeGgI zAMnM2i-OxA&6?IHD2Pc1cnr3AEI~G*HI%{`eag6tMZ|lCW?B z`>kBlprRxLwT~OFsz3iJP91r<1Tda&o17xVMQ~jEljsBI62`3P&(QA&lCVsZqqg(j zPsTnPtZXTYfEC--2APt}pkU`+az?iQyv!xI7BI+)LxSbo%RK3|FKc2Wv%lGvW?h

jbl8UyZat0 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%0A`8(1f&m`lvIcQ+MEwA}h&Q}Rub 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 AVE_OC literal 23463 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 diff --git a/frontend/public/index.html b/frontend/public/index.html index 49cbfcc..8e8fdc0 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -10,7 +10,7 @@ - Dolby.io + Dolby Interactivity API Desktop Showcase App diff --git a/frontend/src/app/App.js b/frontend/src/app/App.js index a39ea5b..1e6edbe 100644 --- a/frontend/src/app/App.js +++ b/frontend/src/app/App.js @@ -78,6 +78,7 @@ class App extends Component { this.toggleSimulcastMode = this.toggleSimulcastMode.bind(this); this.toggleDolbyVoice = this.toggleDolbyVoice.bind(this); this.toggleConfiguration = this.toggleConfiguration.bind(this); + this.title = document.title; } componentDidMount() { @@ -145,6 +146,7 @@ class App extends Component { /*ReactDOM.unmountComponentAtNode(document.getElementById('voxeet-widget')); const oldConferenceName = this.state.conferenceName*/ this.setState({ isSubmit: false, isDemo: false }); + document.title=`${this.title}`; if(this.props.handleLeave) { this.props.handleLeave(); } @@ -177,6 +179,7 @@ class App extends Component { } handleClick() { + document.title=`${this.title} - ${this.state.conferenceName}`; this.props.history.push("/" + this.state.conferenceName); /*if (VoxeetSdk.isElectron) { // TODO: Check if possible to integrate into the SDK @@ -339,7 +342,7 @@ class App extends Component {

); diff --git a/frontend/src/index.js b/frontend/src/index.js index eae43b0..bd32588 100644 --- a/frontend/src/index.js +++ b/frontend/src/index.js @@ -4,6 +4,6 @@ import Root from "./Root"; ReactDOM.render(, document.getElementById("root")); -if (module.hot) { +if (module && module.hot) { module.hot.accept(); } \ No newline at end of file diff --git a/frontend/src/main.js b/frontend/src/main.js index 9cc51c8..ad4ee00 100644 --- a/frontend/src/main.js +++ b/frontend/src/main.js @@ -3,6 +3,7 @@ const {app, BrowserWindow, Menu, ipcMain, powerSaveBlocker, systemPreferences, d const path = require('path'); const url = require('url'); const windowStateKeeper = require('electron-window-state'); +const openAboutWindow = require('about-window').default; let arguments = process.argv; @@ -37,7 +38,23 @@ if (process.platform === 'darwin') { const template = [{ label: "Application", submenu: [ - { label: "About Application", selector: "orderFrontStandardAboutPanel:" }, + //{label: "About Application", selector: "orderFrontStandardAboutPanel:"}, + { + label: "About Application", click: function () { + openAboutWindow({ + icon_path: path.join(__dirname, '..', 'dist', 'icon.png'), + adjust_window_size: true, + copyright: 'Copyright (c) 2021 Dolby', + product_name: 'Dolby.io', + description: 'Dolby Interactivity API Desktop Showcase App', + // package_json_dir: __dirname, + // use_version_info: [ + // ['my version entry 1', 'a.b.c'], + // ['my version entry 2', 'x.y.z'], + // ], + }); + } + }, { type: "separator" }, { label: "Quit", accelerator: "Command+Q", click: function() { app.quit(); }} ]}, { @@ -100,6 +117,7 @@ app.on('ready', async () => { y: mainWindowState.y, width: mainWindowState.width, height: mainWindowState.height, + title: app.getName(), webPreferences: { nodeIntegration: false, contextIsolation: true, @@ -108,13 +126,24 @@ app.on('ready', async () => { }); ipcMain.on('conferenceJoined', (e) => { - console.error('conference joined'); - //powerId = powerSaveBlocker.start("prevent-display-sleep"); CCS-1857 + // console.log('conference joined'); + try { + powerId = powerSaveBlocker.start("prevent-display-sleep"); //CCS-1857 + } catch(e) { + console.error('Could not start power save blocker', e.message); + } }); ipcMain.on('conferenceLeft', (e) => { - powerSaveBlocker.stop(powerId); + // console.log('conference left'); + try { + if (powerId !== null) { + powerSaveBlocker.stop(powerId); + } powerId = null; + } catch(e) { + console.error('Could not stop power save blocker', e.message); + } }); ipcMain.on('leave', (e) => { diff --git a/frontend/webpack.config.electron.common.js b/frontend/webpack.config.electron.common.js index 07db319..3812f74 100644 --- a/frontend/webpack.config.electron.common.js +++ b/frontend/webpack.config.electron.common.js @@ -63,7 +63,7 @@ module.exports = configuration => { // use: "url-loader?limit=10000&mimetype=application/font-woff", type: 'asset/resource', generator: { - filename: "fonts/[name].[ext]", + filename: "fonts/[name][ext]", }, }, { @@ -71,7 +71,7 @@ module.exports = configuration => { // use: "url-loader?limit=10000&mimetype=application/font-woff", type: 'asset/resource', generator: { - filename: "fonts/[name].[ext]", + filename: "fonts/[name][ext]", }, }, { @@ -79,7 +79,7 @@ module.exports = configuration => { // use: "url-loader?limit=10000&mimetype=application/octet-stream", type: 'asset/resource', generator: { - filename: "fonts/[name].[ext]", + filename: "fonts/[name][ext]", }, }, { @@ -87,7 +87,7 @@ module.exports = configuration => { // use: "file-loader", type: 'asset/resource', generator: { - filename: "fonts/[name].[ext]", + filename: "fonts/[name][ext]", }, }, { @@ -95,14 +95,14 @@ module.exports = configuration => { // use: "url-loader?limit=10000&mimetype=image/svg+xml", type: 'asset/resource', generator: { - filename: "images/[name].[ext]", + filename: "images/[name][ext]", }, }, { test: /\.(jpg|jpeg|gif|png)$/, type: 'asset/resource', generator: { - filename: "images/[name].[ext]", + filename: "images/[name][ext]", }, // use: "url-loader?limit=65000&name=images/[name].[ext]", }, @@ -111,7 +111,7 @@ module.exports = configuration => { // use: "url-loader?limit=10000&mimetype=application/octet-stream", type: 'asset/resource', generator: { - filename: "fonts/[name].[ext]", + filename: "fonts/[name][ext]", }, }, ], @@ -126,6 +126,8 @@ module.exports = configuration => { }), new CopyPlugin({ patterns: [ + { from: "./public/favicon.ico"}, + { from: "./public/icon.png"}, { from: "./src/static"}, { from: "./node_modules/@voxeet/react-components/dist/fonts", to:'./fonts'}, { from: "./node_modules/@voxeet/react-components/dist/images", to:'./images'}, diff --git a/frontend/webpack.config.prod.js b/frontend/webpack.config.prod.js index 172469a..ddb305e 100644 --- a/frontend/webpack.config.prod.js +++ b/frontend/webpack.config.prod.js @@ -50,16 +50,20 @@ module.exports = { module: { rules: [ { - test: /.js?$/, + test: /\.js?$/, use: ["babel-loader"], include: path.resolve(__dirname), }, { test: /\.css$/, - use: ["style-loader", "css-loader"], + use: [ + MiniCssExtractPlugin.loader, + "style-loader", + "css-loader" + ], }, { - test: /.less$/, + test: /\.less$/, use: [ MiniCssExtractPlugin.loader, 'css-loader', @@ -67,7 +71,7 @@ module.exports = { ], }, { - test: /.jsx?$/, + test: /\.jsx?$/, use: ["babel-loader"], include: path.resolve(__dirname), }, @@ -76,7 +80,7 @@ module.exports = { // use: "file-loader", type: 'asset/resource', generator: { - filename: "sounds/[name].[ext]", + filename: "sounds/[name][ext]", }, }, { @@ -84,7 +88,7 @@ module.exports = { // use: "url-loader?limit=10000&mimetype=application/font-woff", type: 'asset/resource', generator: { - filename: "fonts/[name].[ext]", + filename: "fonts/[name][ext]", }, }, { @@ -92,7 +96,7 @@ module.exports = { // use: "url-loader?limit=10000&mimetype=application/font-woff", type: 'asset/resource', generator: { - filename: "fonts/[name].[ext]", + filename: "fonts/[name][ext]", }, }, { @@ -100,7 +104,7 @@ module.exports = { // use: "url-loader?limit=10000&mimetype=application/octet-stream", type: 'asset/resource', generator: { - filename: "fonts/[name].[ext]", + filename: "fonts/[name][ext]", }, }, { @@ -108,7 +112,7 @@ module.exports = { // use: "file-loader", type: 'asset/resource', generator: { - filename: "fonts/[name].[ext]", + filename: "fonts/[name][ext]", }, }, { @@ -116,14 +120,14 @@ module.exports = { // use: "url-loader?limit=10000&mimetype=image/svg+xml", type: 'asset/resource', generator: { - filename: "images/[name].[ext]", + filename: "images/[name][ext]", }, }, { test: /\.(jpg|jpeg|gif|png)$/, type: 'asset/resource', generator: { - filename: "images/[name].[ext]", + filename: "images/[name][ext]", }, // use: "url-loader?limit=65000&name=images/[name].[ext]", }, @@ -132,7 +136,7 @@ module.exports = { // use: "url-loader?limit=10000&mimetype=application/octet-stream", type: 'asset/resource', generator: { - filename: "fonts/[name].[ext]", + filename: "fonts/[name][ext]", }, }, ],