diff --git a/.github/workflows/ci_apps_cli.yml b/.github/workflows/ci_apps_cli.yml index 5c39b699..1bb14385 100644 --- a/.github/workflows/ci_apps_cli.yml +++ b/.github/workflows/ci_apps_cli.yml @@ -3,9 +3,9 @@ on: push: paths: - 'packages/components/**' - - 'packages/utils/**' - 'apps/cli/**' - '.github/workflows/ci_apps_cli.yml' + - 'shared.eslint.config.js' defaults: run: @@ -17,49 +17,41 @@ jobs: steps: - uses: actions/checkout@v4 - run: npm i - - run: npm run build - working-directory: ./packages/utils - - run: npm run build + - run: | + npm i + npm run build working-directory: ./packages/components - run: npm run lint typecheck: runs-on: ubuntu-latest - defaults: - run: - working-directory: ./ steps: - uses: actions/checkout@v4 - run: npm i - - run: npm run build - working-directory: ./packages/utils - - run: npm run build + - run: | + npm i + npm run build working-directory: ./packages/components - run: tsc - working-directory: ./apps/cli test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm i - - run: npm run build - working-directory: ./packages/utils - - run: npm run build + - run: | + npm i + npm run build working-directory: ./packages/components - run: npm run coverage buildcheck: runs-on: ubuntu-latest - defaults: - run: - working-directory: ./ steps: - uses: actions/checkout@v4 - run: npm i - - run: npm run build - working-directory: ./packages/utils - - run: npm run build + - run: | + npm i + npm run build working-directory: ./packages/components - run: npm run build - working-directory: ./apps/cli diff --git a/.github/workflows/ci_apps_hightable_demo.yml b/.github/workflows/ci_apps_hightable_demo.yml index 3703d078..fc6f62c4 100644 --- a/.github/workflows/ci_apps_hightable_demo.yml +++ b/.github/workflows/ci_apps_hightable_demo.yml @@ -4,6 +4,7 @@ on: paths: - 'apps/hightable-demo/**' - '.github/workflows/ci_apps_hightable_demo.yml' + - 'shared.eslint.config.js' defaults: run: diff --git a/.github/workflows/ci_apps_hyparquet_demo.yml b/.github/workflows/ci_apps_hyparquet_demo.yml index f4feaeb9..d3bfe9be 100644 --- a/.github/workflows/ci_apps_hyparquet_demo.yml +++ b/.github/workflows/ci_apps_hyparquet_demo.yml @@ -2,9 +2,9 @@ name: apps/hyparquet-demo on: push: paths: - - 'packages/utils/**' - 'apps/hyparquet-demo/**' - '.github/workflows/ci_apps_hyparquet_demo.yml' + - 'shared.eslint.config.js' defaults: run: @@ -16,8 +16,6 @@ jobs: steps: - uses: actions/checkout@v4 - run: npm i - - run: npm run build - working-directory: ./packages/utils - run: npm run lint typecheck: @@ -25,8 +23,6 @@ jobs: steps: - uses: actions/checkout@v4 - run: npm i - - run: npm run build - working-directory: ./packages/utils - run: tsc test: @@ -34,8 +30,6 @@ jobs: steps: - uses: actions/checkout@v4 - run: npm i - - run: npm run build - working-directory: ./packages/utils - run: npm run coverage buildcheck: @@ -43,6 +37,4 @@ jobs: steps: - uses: actions/checkout@v4 - run: npm i - - run: npm run build - working-directory: ./packages/utils - run: npm run build \ No newline at end of file diff --git a/.github/workflows/ci_packages_components.yml b/.github/workflows/ci_packages_components.yml index 51a2f3cf..3836b7b2 100644 --- a/.github/workflows/ci_packages_components.yml +++ b/.github/workflows/ci_packages_components.yml @@ -3,8 +3,8 @@ on: push: paths: - 'packages/components/**' - - 'packages/utils/**' - '.github/workflows/ci_packages_components.yml' + - 'shared.eslint.config.js' defaults: run: @@ -16,8 +16,6 @@ jobs: steps: - uses: actions/checkout@v4 - run: npm i - - run: npm run build - working-directory: ./packages/utils - run: npm run lint typecheck: @@ -25,8 +23,6 @@ jobs: steps: - uses: actions/checkout@v4 - run: npm i - - run: npm run build - working-directory: ./packages/utils - run: tsc test: @@ -34,8 +30,6 @@ jobs: steps: - uses: actions/checkout@v4 - run: npm i - - run: npm run build - working-directory: ./packages/utils - run: npm run coverage buildcheck: @@ -44,5 +38,3 @@ jobs: - uses: actions/checkout@v4 - run: npm i - run: npm run build - working-directory: ./packages/utils - - run: npm run build diff --git a/.github/workflows/ci_packages_utils.yml b/.github/workflows/ci_packages_utils.yml index 244e9448..eac83cfd 100644 --- a/.github/workflows/ci_packages_utils.yml +++ b/.github/workflows/ci_packages_utils.yml @@ -4,6 +4,7 @@ on: paths: - 'packages/utils/**' - '.github/workflows/ci_packages_utils.yml' + - 'shared.eslint.config.js' defaults: run: diff --git a/.github/workflows/deploy_pages.yml b/.github/workflows/deploy_pages.yml index acb49655..08d29b20 100644 --- a/.github/workflows/deploy_pages.yml +++ b/.github/workflows/deploy_pages.yml @@ -17,21 +17,16 @@ jobs: steps: - name: Checkout the repository uses: actions/checkout@v4 - - name: Install dependencies - run: npm i - - name: Build @hyparam/utils package - run: npm run build - working-directory: ./packages/utils - name: Build hyparquet demo - run: npm run build + run: | + npm i + npm run build working-directory: ./apps/hyparquet-demo - name: Build hightable demo - run: npm run build - working-directory: ./apps/hightable-demo - - name: Create index file content run: | - - id: index_content + npm i + npm run build + working-directory: ./apps/hightable-demo - name: Move the build outputs to a folder run: | mkdir -p build_outputs_folder/apps diff --git a/README.md b/README.md index 5187d9fc..5ff05e29 100644 --- a/README.md +++ b/README.md @@ -10,3 +10,9 @@ It also contains the following applications: - [`hyperparam`](./apps/cli): a cli tool for viewing arbitrarily large datasets in the browser. - [`hightable-demo`](./apps/hightable-demo): an example project showing how to use [hightable](https://github.com/hyparam/hightable). - [`hyparquet-demo`](./apps/hyparquet-demo): an example project showing how to use [hyparquet](https://github.com/hyparam/hyparquet). + +## Development + +The dependencies between the packages and applications of this monorepo are pinned, and the packages are published to npm. It means that the changes in a dependency are not automatically reflected in the dependent package or application. + +To make the development easier, you can locally replace the npm dependencies with the local packages, replacing the pinned versions (eg `"@hyparam/utils": "0.1.0",`) with a relative path (`"@hyparam/utils": "file:../../packages/utils",`). It's not ideal, we might switch to pnpm or yarn workspaces in the future. \ No newline at end of file diff --git a/apps/cli/eslint.config.js b/apps/cli/eslint.config.js index 69c0dd0f..6014d3e1 100644 --- a/apps/cli/eslint.config.js +++ b/apps/cli/eslint.config.js @@ -1,7 +1,8 @@ import javascript from '@eslint/js' import globals from 'globals' import typescript from 'typescript-eslint' -import { sharedJsRules } from '../../shared.eslint.config.js' +import sharedEslintRules from '../../shared.eslint.config.js' +const { sharedJsRules } = sharedEslintRules export default [ { diff --git a/apps/cli/package.json b/apps/cli/package.json index f84565c5..09ea3e30 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -23,7 +23,9 @@ }, "dependencies": { "highlight.js": "11.10.0", - "@hyparam/components": "file:../../packages/components" + "@hyparam/components": "0.1.0", + "react": "18.3.1", + "react-dom": "18.3.1" }, "devDependencies": { "@rollup/plugin-commonjs": "28.0.1", diff --git a/apps/cli/public/build/app.min.js b/apps/cli/public/build/app.min.js index 903e0f47..de4b9c74 100644 --- a/apps/cli/public/build/app.min.js +++ b/apps/cli/public/build/app.min.js @@ -1,13 +1,4 @@ -function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var l,n,t,a,d={exports:{}},r={},c={exports:{}},i={};function V(){if(l)return i;l=1;var e=Symbol.for("react.element"),n=Symbol.for("react.portal"),t=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),r=Symbol.for("react.provider"),c=Symbol.for("react.context"),V=Symbol.for("react.forward_ref"),s=Symbol.for("react.suspense"),o=Symbol.for("react.memo"),Z=Symbol.for("react.lazy"),u=Symbol.iterator;var U={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m=Object.assign,W={};function N(e,l,n){this.props=e,this.context=l,this.refs=W,this.updater=n||U}function R(){}function p(e,l,n){this.props=e,this.context=l,this.refs=W,this.updater=n||U}N.prototype.isReactComponent={},N.prototype.setState=function(e,l){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,l,"setState")},N.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},R.prototype=N.prototype;var b=p.prototype=new R;b.constructor=p,m(b,N.prototype),b.isPureReactComponent=!0;var T=Array.isArray,F=Object.prototype.hasOwnProperty,M={current:null},h={key:!0,ref:!0,__self:!0,__source:!0};function S(l,n,t){var a,d={},r=null,c=null;if(null!=n)for(a in void 0!==n.ref&&(c=n.ref),void 0!==n.key&&(r=""+n.key),n)F.call(n,a)&&!h.hasOwnProperty(a)&&(d[a]=n[a]);var i=arguments.length-2;if(1===i)d.children=t;else if(1>>1,d=e[t];if(!(0>>1;ta(i,n))Va(s,i)?(e[t]=s,e[V]=n,t=V):(e[t]=i,e[c]=n,t=c);else{if(!(Va(s,n)))break e;e[t]=s,e[V]=n,t=V}}}return l}function a(e,l){var n=e.sortIndex-l.sortIndex;return 0!==n?n:e.id-l.id}if("object"==typeof performance&&"function"==typeof performance.now){var d=performance;e.unstable_now=function(){return d.now()}}else{var r=Date,c=r.now();e.unstable_now=function(){return r.now()-c}}var i=[],V=[],s=1,o=null,Z=3,u=!1,U=!1,m=!1,W="function"==typeof setTimeout?setTimeout:null,N="function"==typeof clearTimeout?clearTimeout:null,R="undefined"!=typeof setImmediate?setImmediate:null;function p(e){for(var a=n(V);null!==a;){if(null===a.callback)t(V);else{if(!(a.startTime<=e))break;t(V),a.sortIndex=a.expirationTime,l(i,a)}a=n(V)}}function b(e){if(m=!1,p(e),!U)if(null!==n(i))U=!0,f(T);else{var l=n(V);null!==l&&x(b,l.startTime-e)}}function T(l,a){U=!1,m&&(m=!1,N(S),S=-1),u=!0;var d=Z;try{for(p(a),o=n(i);null!==o&&(!(o.expirationTime>a)||l&&!Q());){var r=o.callback;if("function"==typeof r){o.callback=null,Z=o.priorityLevel;var c=r(o.expirationTime<=a);a=e.unstable_now(),"function"==typeof c?o.callback=c:o===n(i)&&t(i),p(a)}else t(i);o=n(i)}if(null!==o)var s=!0;else{var W=n(V);null!==W&&x(b,W.startTime-a),s=!1}return s}finally{o=null,Z=d,u=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var F,M=!1,h=null,S=-1,k=5,y=-1;function Q(){return!(e.unstable_now()-ye||125r?(t.sortIndex=d,l(V,t),null===n(i)&&t===n(V)&&(m?(N(S),S=-1):m=!0,x(b,d-r))):(t.sortIndex=c,l(i,t),U||u||(U=!0,f(T))),t},e.unstable_shouldYield=Q,e.unstable_wrapCallback=function(e){var l=Z;return function(){var n=Z;Z=l;try{return e.apply(this,arguments)}finally{Z=n}}}}(T)),T)),b.exports} +import{jsx as e,jsxs as l,Fragment as n}from"react/jsx-runtime";import t,{useState as d,useEffect as a,useRef as r,useCallback as c,useReducer as i,useMemo as V,createRef as o}from"react";import{flushSync as s}from"react-dom";function Z(e){if(null==e||!e.lastModified)return"";const l=new Date(e.lastModified),n=l.getTime();return Date.now()-n<864e5?l.toLocaleTimeString():l.toLocaleDateString()}function u(e){if(null==e||!e.lastModified)return"";const l=new Date(e.lastModified);return isFinite(l.getTime())?l.toLocaleString():""}function U(e){return void 0!==(null==e?void 0:e.fileSize)?function(e){const l=["b","kb","mb","gb","tb"];if(0===e)return"0 b";const n=Math.floor(Math.log2(e)/10);if(0===n)return e.toLocaleString("en-US")+" b";const t=e/Math.pow(1024,n);return(t<10?t.toFixed(1):Math.round(t)).toLocaleString("en-US")+" "+l[n]}(e.fileSize):""}function m(e){const l=e.get("content-length");return l?Number(l):void 0}const W={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",svg:"image/svg+xml",tiff:"image/tiff",webp:"image/webp"},N=[".png",".jpg",".jpeg",".gif",".svg",".tiff",".webp"];function R(){let e,l;const n=function(e){e instanceof Promise||(e=Promise.resolve(e));const l=e.then((e=>(l.resolved=e,e))).catch((e=>{throw l.rejected=e,e}));return l}(new Promise(((n,t)=>{e=n,l=t})));return n.resolve=e,n.reject=l,n}function p(e,l,n){const t=e[l],d=[];let a=1;if(t.num_children)for(;d.lengthl.element.name===e));if(!d)throw new Error(`parquet schema element not found: ${l}`);t.push(d),n=d}return t}const T="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NvbnN0IGF0PVsiQk9PTEVBTiIsIklOVDMyIiwiSU5UNjQiLCJJTlQ5NiIsIkZMT0FUIiwiRE9VQkxFIiwiQllURV9BUlJBWSIsIkZJWEVEX0xFTl9CWVRFX0FSUkFZIl0sZWU9WyJQTEFJTiIsdm9pZCAwLCJQTEFJTl9ESUNUSU9OQVJZIiwiUkxFIiwiQklUX1BBQ0tFRCIsIkRFTFRBX0JJTkFSWV9QQUNLRUQiLCJERUxUQV9MRU5HVEhfQllURV9BUlJBWSIsIkRFTFRBX0JZVEVfQVJSQVkiLCJSTEVfRElDVElPTkFSWSIsIkJZVEVfU1RSRUFNX1NQTElUIl0sY249WyJSRVFVSVJFRCIsIk9QVElPTkFMIiwiUkVQRUFURUQiXSx3bj1bIlVURjgiLCJNQVAiLCJNQVBfS0VZX1ZBTFVFIiwiTElTVCIsIkVOVU0iLCJERUNJTUFMIiwiREFURSIsIlRJTUVfTUlMTElTIiwiVElNRV9NSUNST1MiLCJUSU1FU1RBTVBfTUlMTElTIiwiVElNRVNUQU1QX01JQ1JPUyIsIlVJTlRfOCIsIlVJTlRfMTYiLCJVSU5UXzMyIiwiVUlOVF82NCIsIklOVF84IiwiSU5UXzE2IiwiSU5UXzMyIiwiSU5UXzY0IiwiSlNPTiIsIkJTT04iLCJJTlRFUlZBTCJdLHVuPVsiVU5DT01QUkVTU0VEIiwiU05BUFBZIiwiR1pJUCIsIkxaTyIsIkJST1RMSSIsIkxaNCIsIlpTVEQiLCJMWjRfUkFXIl0sY3Q9WyJEQVRBX1BBR0UiLCJJTkRFWF9QQUdFIiwiRElDVElPTkFSWV9QQUdFIiwiREFUQV9QQUdFX1YyIl0sd3Q9ODY0ZTU7ZnVuY3Rpb24gdXQoZSx0LG4scixpPSEwKXtpZih0JiZyLmVuZHNXaXRoKCJfRElDVElPTkFSWSIpKXt0PWR0KHQsbixpKTtsZXQgbz1lO2UgaW5zdGFuY2VvZiBVaW50OEFycmF5JiYhKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KSYmKG89bmV3IHQuY29uc3RydWN0b3IoZS5sZW5ndGgpKTtmb3IobGV0IGY9MDtmPGUubGVuZ3RoO2YrKylvW2ZdPXRbZVtmXV07cmV0dXJuIG99ZWxzZSByZXR1cm4gZHQoZSxuLGkpfWZ1bmN0aW9uIGR0KGUsdCxuPSEwKXt2YXIgaSxvO2NvbnN0IHI9dC5jb252ZXJ0ZWRfdHlwZTtpZihyPT09IkRFQ0lNQUwiKXtjb25zdCBmPXQuc2NhbGV8fDAscz1NYXRoLnBvdygxMCwtZiksbD1uZXcgQXJyYXkoZS5sZW5ndGgpO2ZvcihsZXQgQT0wO0E8bC5sZW5ndGg7QSsrKWVbMF1pbnN0YW5jZW9mIFVpbnQ4QXJyYXk/bFtBXT1ndChlW0FdKSpzOmxbQV09TnVtYmVyKGVbQV0pKnM7cmV0dXJuIGx9aWYocj09PXZvaWQgMCYmdC50eXBlPT09IklOVDk2IilyZXR1cm4gQXJyYXkuZnJvbShlKS5tYXAoZG4pO2lmKHI9PT0iREFURSIpe2NvbnN0IGY9bmV3IEFycmF5KGUubGVuZ3RoKTtmb3IobGV0IHM9MDtzPGYubGVuZ3RoO3MrKylmW3NdPW5ldyBEYXRlKGVbc10qd3QpO3JldHVybiBmfWlmKHI9PT0iVElNRVNUQU1QX01JTExJUyIpe2NvbnN0IGY9bmV3IEFycmF5KGUubGVuZ3RoKTtmb3IobGV0IHM9MDtzPGYubGVuZ3RoO3MrKylmW3NdPW5ldyBEYXRlKE51bWJlcihlW3NdKSk7cmV0dXJuIGZ9aWYocj09PSJUSU1FU1RBTVBfTUlDUk9TIil7Y29uc3QgZj1uZXcgQXJyYXkoZS5sZW5ndGgpO2ZvcihsZXQgcz0wO3M8Zi5sZW5ndGg7cysrKWZbc109bmV3IERhdGUoTnVtYmVyKGVbc10vMTAwMG4pKTtyZXR1cm4gZn1pZihyPT09IkpTT04iKXtjb25zdCBmPW5ldyBUZXh0RGVjb2RlcjtyZXR1cm4gZS5tYXAocz0+SlNPTi5wYXJzZShmLmRlY29kZShzKSkpfWlmKHI9PT0iQlNPTiIpdGhyb3cgbmV3IEVycm9yKCJwYXJxdWV0IGJzb24gbm90IHN1cHBvcnRlZCIpO2lmKHI9PT0iSU5URVJWQUwiKXRocm93IG5ldyBFcnJvcigicGFycXVldCBpbnRlcnZhbCBub3Qgc3VwcG9ydGVkIik7aWYocj09PSJVVEY4Inx8biYmdC50eXBlPT09IkJZVEVfQVJSQVkiKXtjb25zdCBmPW5ldyBUZXh0RGVjb2RlcixzPW5ldyBBcnJheShlLmxlbmd0aCk7Zm9yKGxldCBsPTA7bDxzLmxlbmd0aDtsKyspc1tsXT1lW2xdJiZmLmRlY29kZShlW2xdKTtyZXR1cm4gc31pZihyPT09IlVJTlRfNjQiKXtjb25zdCBmPW5ldyBCaWdVaW50NjRBcnJheShlLmxlbmd0aCk7Zm9yKGxldCBzPTA7czxmLmxlbmd0aDtzKyspZltzXT1CaWdJbnQoZVtzXSk7cmV0dXJuIGZ9aWYoKChpPXQubG9naWNhbF90eXBlKT09bnVsbD92b2lkIDA6aS50eXBlKT09PSJGTE9BVDE2IilyZXR1cm4gQXJyYXkuZnJvbShlKS5tYXAoaHQpO2lmKCgobz10LmxvZ2ljYWxfdHlwZSk9PW51bGw/dm9pZCAwOm8udHlwZSk9PT0iVElNRVNUQU1QIil7Y29uc3R7dW5pdDpmfT10LmxvZ2ljYWxfdHlwZTtsZXQgcz0xbjtmPT09Ik1JQ1JPUyImJihzPTEwMDBuKSxmPT09Ik5BTk9TIiYmKHM9MTAwMDAwMG4pO2NvbnN0IGw9bmV3IEFycmF5KGUubGVuZ3RoKTtmb3IobGV0IEE9MDtBPGwubGVuZ3RoO0ErKylsW0FdPW5ldyBEYXRlKE51bWJlcihlW0FdL3MpKTtyZXR1cm4gbH1yZXR1cm4gZX1mdW5jdGlvbiBndChlKXtsZXQgdD0wO2Zvcihjb25zdCBuIG9mIGUpdD10PDw4fG47cmV0dXJuIHR9ZnVuY3Rpb24gZG4oZSl7Y29uc3QgdD1OdW1iZXIoKGU+PjY0biktMjQ0MDU4OG4pLG49TnVtYmVyKChlJjB4ZmZmZmZmZmZmZmZmZmZmZm4pLzEwMDAwMDBuKSxyPXQqd3QrbjtyZXR1cm4gbmV3IERhdGUocil9ZnVuY3Rpb24gaHQoZSl7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9ZVsxXTw8OHxlWzBdLG49dD4+MTU/LTE6MSxyPXQ+PjEwJjMxLGk9dCYxMDIzO3JldHVybiByPT09MD9uKk1hdGgucG93KDIsLTE0KSooaS8xMDI0KTpyPT09MzE/aT9OYU46biooMS8wKTpuKk1hdGgucG93KDIsci0xNSkqKDEraS8xMDI0KX1mdW5jdGlvbiBJdChlLHQsbil7Y29uc3Qgcj1lW3RdLGk9W107bGV0IG89MTtpZihyLm51bV9jaGlsZHJlbilmb3IoO2kubGVuZ3RoPHIubnVtX2NoaWxkcmVuOyl7Y29uc3QgZj1lW3Qrb10scz1JdChlLHQrbyxbLi4ubixmLm5hbWVdKTtvKz1zLmNvdW50LGkucHVzaChzKX1yZXR1cm57Y291bnQ6byxlbGVtZW50OnIsY2hpbGRyZW46aSxwYXRoOm59fWZ1bmN0aW9uIEV0KGUsdCl7bGV0IG49SXQoZSwwLFtdKTtjb25zdCByPVtuXTtmb3IoY29uc3QgaSBvZiB0KXtjb25zdCBvPW4uY2hpbGRyZW4uZmluZChmPT5mLmVsZW1lbnQubmFtZT09PWkpO2lmKCFvKXRocm93IG5ldyBFcnJvcihgcGFycXVldCBzY2hlbWEgZWxlbWVudCBub3QgZm91bmQ6ICR7dH1gKTtyLnB1c2gobyksbj1vfXJldHVybiByfWZ1bmN0aW9uIEJ0KGUpe2xldCB0PTA7Zm9yKGNvbnN0e2VsZW1lbnQ6bn1vZiBlKW4ucmVwZXRpdGlvbl90eXBlPT09IlJFUEVBVEVEIiYmdCsrO3JldHVybiB0fWZ1bmN0aW9uIFFlKGUpe2xldCB0PTA7Zm9yKGNvbnN0e2VsZW1lbnQ6bn1vZiBlLnNsaWNlKDEpKW4ucmVwZXRpdGlvbl90eXBlIT09IlJFUVVJUkVEIiYmdCsrO3JldHVybiB0fWZ1bmN0aW9uIGduKGUpe2lmKCFlfHxlLmVsZW1lbnQuY29udmVydGVkX3R5cGUhPT0iTElTVCJ8fGUuY2hpbGRyZW4ubGVuZ3RoPjEpcmV0dXJuITE7Y29uc3QgdD1lLmNoaWxkcmVuWzBdO3JldHVybiEodC5jaGlsZHJlbi5sZW5ndGg+MXx8dC5lbGVtZW50LnJlcGV0aXRpb25fdHlwZSE9PSJSRVBFQVRFRCIpfWZ1bmN0aW9uIGhuKGUpe2lmKCFlfHxlLmVsZW1lbnQuY29udmVydGVkX3R5cGUhPT0iTUFQInx8ZS5jaGlsZHJlbi5sZW5ndGg+MSlyZXR1cm4hMTtjb25zdCB0PWUuY2hpbGRyZW5bMF07aWYodC5jaGlsZHJlbi5sZW5ndGghPT0yfHx0LmVsZW1lbnQucmVwZXRpdGlvbl90eXBlIT09IlJFUEVBVEVEIilyZXR1cm4hMTtjb25zdCBuPXQuY2hpbGRyZW4uZmluZChpPT5pLmVsZW1lbnQubmFtZT09PSJrZXkiKTtpZigobj09bnVsbD92b2lkIDA6bi5lbGVtZW50LnJlcGV0aXRpb25fdHlwZSk9PT0iUkVQRUFURUQiKXJldHVybiExO2NvbnN0IHI9dC5jaGlsZHJlbi5maW5kKGk9PmkuZWxlbWVudC5uYW1lPT09InZhbHVlIik7cmV0dXJuKHI9PW51bGw/dm9pZCAwOnIuZWxlbWVudC5yZXBldGl0aW9uX3R5cGUpIT09IlJFUEVBVEVEIn1jb25zdCBIPXtTVE9QOjAsVFJVRToxLEZBTFNFOjIsQllURTozLEkxNjo0LEkzMjo1LEk2NDo2LERPVUJMRTo3LEJJTkFSWTo4LExJU1Q6OSxTRVQ6MTAsTUFQOjExLFNUUlVDVDoxMixVVUlEOjEzfTtmdW5jdGlvbiB5dChlKXtsZXQgdD0wO2NvbnN0IG49e307Zm9yKDtlLm9mZnNldDxlLnZpZXcuYnl0ZUxlbmd0aDspe2NvbnN0W3IsaSxvXT1wdChlLHQpO2lmKHQ9byxyPT09SC5TVE9QKWJyZWFrO25bYGZpZWxkXyR7aX1gXT1iZShlLHIpfXJldHVybiBufWZ1bmN0aW9uIGJlKGUsdCl7c3dpdGNoKHQpe2Nhc2UgSC5UUlVFOnJldHVybiEwO2Nhc2UgSC5GQUxTRTpyZXR1cm4hMTtjYXNlIEguQllURTpyZXR1cm4gZS52aWV3LmdldEludDgoZS5vZmZzZXQrKyk7Y2FzZSBILkkxNjpjYXNlIEguSTMyOnJldHVybiBFbihlKTtjYXNlIEguSTY0OnJldHVybiBWZShlKTtjYXNlIEguRE9VQkxFOntjb25zdCBuPWUudmlldy5nZXRGbG9hdDY0KGUub2Zmc2V0LCEwKTtyZXR1cm4gZS5vZmZzZXQrPTgsbn1jYXNlIEguQklOQVJZOntjb25zdCBuPXRlKGUpLHI9bmV3IFVpbnQ4QXJyYXkoZS52aWV3LmJ1ZmZlcixlLnZpZXcuYnl0ZU9mZnNldCtlLm9mZnNldCxuKTtyZXR1cm4gZS5vZmZzZXQrPW4scn1jYXNlIEguTElTVDp7Y29uc3RbbixyXT1CbihlKSxpPW49PT1ILlRSVUV8fG49PT1ILkZBTFNFLG89bmV3IEFycmF5KHIpO2ZvcihsZXQgZj0wO2Y8cjtmKyspb1tmXT1pP2JlKGUsSC5CWVRFKT09PTE6YmUoZSxuKTtyZXR1cm4gb31jYXNlIEguU1RSVUNUOntjb25zdCBuPXt9O2xldCByPTA7Zm9yKDs7KXtsZXQgaSxvO2lmKFtpLG8scl09cHQoZSxyKSxpPT09SC5TVE9QKWJyZWFrO25bYGZpZWxkXyR7b31gXT1iZShlLGkpfXJldHVybiBufWNhc2UgSC5VVUlEOntsZXQgbj0iIjtmb3IobGV0IHI9MDtyPDE2O3IrKyluKz1lLnZpZXcuZ2V0VWludDgoZS5vZmZzZXQrKykudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKTtyZXR1cm4gbn1kZWZhdWx0OnRocm93IG5ldyBFcnJvcihgdGhyaWZ0IHVuaGFuZGxlZCB0eXBlOiAke3R9YCl9fWZ1bmN0aW9uIHRlKGUpe2xldCB0PTAsbj0wO2Zvcig7Oyl7Y29uc3Qgcj1lLnZpZXcuZ2V0VWludDgoZS5vZmZzZXQrKyk7aWYodHw9KHImMTI3KTw8biwhKHImMTI4KSlyZXR1cm4gdDtuKz03fX1mdW5jdGlvbiBJbihlKXtsZXQgdD0wbixuPTBuO2Zvcig7Oyl7Y29uc3Qgcj1lLnZpZXcuZ2V0VWludDgoZS5vZmZzZXQrKyk7aWYodHw9QmlnSW50KHImMTI3KTw8biwhKHImMTI4KSlyZXR1cm4gdDtuKz03bn19ZnVuY3Rpb24gRW4oZSl7Y29uc3QgdD10ZShlKTtyZXR1cm4gdD4+PjFeLSh0JjEpfWZ1bmN0aW9uIFZlKGUpe2NvbnN0IHQ9SW4oZSk7cmV0dXJuIHQ+PkJpZ0ludCgxKV4tKHQmQmlnSW50KDEpKX1mdW5jdGlvbiB2dChlKXtyZXR1cm4gZSYxNX1mdW5jdGlvbiBwdChlLHQpe2NvbnN0IG49ZS52aWV3LmdldFVpbnQ4KGUub2Zmc2V0KyspO2lmKChuJjE1KT09PUguU1RPUClyZXR1cm5bMCwwLHRdO2NvbnN0IHI9bj4+NDtsZXQgaTtpZihyKWk9dCtyO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJub24tZGVsdGEgZmllbGQgaWQgbm90IHN1cHBvcnRlZCIpO3JldHVyblt2dChuKSxpLGldfWZ1bmN0aW9uIEJuKGUpe2NvbnN0IHQ9ZS52aWV3LmdldFVpbnQ4KGUub2Zmc2V0KyspLG49dD4+NCxyPXZ0KHQpO2lmKG49PT0xNSl7Y29uc3QgaT10ZShlKTtyZXR1cm5bcixpXX1yZXR1cm5bcixuXX1hc3luYyBmdW5jdGlvbiBHZShlLHQ9MTw8MTkpe2lmKCFlKXRocm93IG5ldyBFcnJvcigicGFycXVldCBmaWxlIGlzIHJlcXVpcmVkIik7aWYoIShlLmJ5dGVMZW5ndGg+PTApKXRocm93IG5ldyBFcnJvcigicGFycXVldCBmaWxlIGJ5dGVMZW5ndGggaXMgcmVxdWlyZWQiKTtjb25zdCBuPU1hdGgubWF4KDAsZS5ieXRlTGVuZ3RoLXQpLHI9YXdhaXQgZS5zbGljZShuLGUuYnl0ZUxlbmd0aCksaT1uZXcgRGF0YVZpZXcocik7aWYoaS5nZXRVaW50MzIoci5ieXRlTGVuZ3RoLTQsITApIT09ODI3NDc0MjU2KXRocm93IG5ldyBFcnJvcigicGFycXVldCBmaWxlIGludmFsaWQgKGZvb3RlciAhPSBQQVIxKSIpO2NvbnN0IG89aS5nZXRVaW50MzIoci5ieXRlTGVuZ3RoLTgsITApO2lmKG8+ZS5ieXRlTGVuZ3RoLTgpdGhyb3cgbmV3IEVycm9yKGBwYXJxdWV0IG1ldGFkYXRhIGxlbmd0aCAke299IGV4Y2VlZHMgYXZhaWxhYmxlIGJ1ZmZlciAke2UuYnl0ZUxlbmd0aC04fWApO2lmKG8rOD50KXtjb25zdCBmPWUuYnl0ZUxlbmd0aC1vLTgscz1hd2FpdCBlLnNsaWNlKGYsbiksbD1uZXcgQXJyYXlCdWZmZXIobys4KSxBPW5ldyBVaW50OEFycmF5KGwpO3JldHVybiBBLnNldChuZXcgVWludDhBcnJheShzKSksQS5zZXQobmV3IFVpbnQ4QXJyYXkociksbi1mKSxDdChsKX1lbHNlIHJldHVybiBDdChyKX1mdW5jdGlvbiBDdChlKXt2YXIgYztpZighZSl0aHJvdyBuZXcgRXJyb3IoInBhcnF1ZXQgZmlsZSBpcyByZXF1aXJlZCIpO2NvbnN0IHQ9bmV3IERhdGFWaWV3KGUpO2lmKHQuYnl0ZUxlbmd0aDw4KXRocm93IG5ldyBFcnJvcigicGFycXVldCBmaWxlIGlzIHRvbyBzaG9ydCIpO2lmKHQuZ2V0VWludDMyKHQuYnl0ZUxlbmd0aC00LCEwKSE9PTgyNzQ3NDI1Nil0aHJvdyBuZXcgRXJyb3IoInBhcnF1ZXQgZmlsZSBpbnZhbGlkIChmb290ZXIgIT0gUEFSMSkiKTtjb25zdCBuPXQuYnl0ZUxlbmd0aC04LHI9dC5nZXRVaW50MzIobiwhMCk7aWYocj50LmJ5dGVMZW5ndGgtOCl0aHJvdyBuZXcgRXJyb3IoYHBhcnF1ZXQgbWV0YWRhdGEgbGVuZ3RoICR7cn0gZXhjZWVkcyBhdmFpbGFibGUgYnVmZmVyICR7dC5ieXRlTGVuZ3RoLTh9YCk7Y29uc3QgaT1uLXIsZj15dCh7dmlldzp0LG9mZnNldDppfSkscz1uZXcgVGV4dERlY29kZXI7ZnVuY3Rpb24gbChJKXtyZXR1cm4gSSYmcy5kZWNvZGUoSSl9Y29uc3QgQT1mLmZpZWxkXzEsYT1mLmZpZWxkXzIubWFwKEk9Pih7dHlwZTphdFtJLmZpZWxkXzFdLHR5cGVfbGVuZ3RoOkkuZmllbGRfMixyZXBldGl0aW9uX3R5cGU6Y25bSS5maWVsZF8zXSxuYW1lOmwoSS5maWVsZF80KSxudW1fY2hpbGRyZW46SS5maWVsZF81LGNvbnZlcnRlZF90eXBlOnduW0kuZmllbGRfNl0sc2NhbGU6SS5maWVsZF83LHByZWNpc2lvbjpJLmZpZWxkXzgsZmllbGRfaWQ6SS5maWVsZF85LGxvZ2ljYWxfdHlwZTp5bihJLmZpZWxkXzEwKX0pKSx1PWEuZmlsdGVyKEk9PkkudHlwZSksdz1mLmZpZWxkXzMsaD1mLmZpZWxkXzQubWFwKEk9Pnt2YXIgdjtyZXR1cm57Y29sdW1uczpJLmZpZWxkXzEubWFwKChCLFEpPT57dmFyIGIsQztyZXR1cm57ZmlsZV9wYXRoOmwoQi5maWVsZF8xKSxmaWxlX29mZnNldDpCLmZpZWxkXzIsbWV0YV9kYXRhOkIuZmllbGRfMyYme3R5cGU6YXRbQi5maWVsZF8zLmZpZWxkXzFdLGVuY29kaW5nczooYj1CLmZpZWxkXzMuZmllbGRfMik9PW51bGw/dm9pZCAwOmIubWFwKEw9PmVlW0xdKSxwYXRoX2luX3NjaGVtYTpCLmZpZWxkXzMuZmllbGRfMy5tYXAobCksY29kZWM6dW5bQi5maWVsZF8zLmZpZWxkXzRdLG51bV92YWx1ZXM6Qi5maWVsZF8zLmZpZWxkXzUsdG90YWxfdW5jb21wcmVzc2VkX3NpemU6Qi5maWVsZF8zLmZpZWxkXzYsdG90YWxfY29tcHJlc3NlZF9zaXplOkIuZmllbGRfMy5maWVsZF83LGtleV92YWx1ZV9tZXRhZGF0YTpCLmZpZWxkXzMuZmllbGRfOCxkYXRhX3BhZ2Vfb2Zmc2V0OkIuZmllbGRfMy5maWVsZF85LGluZGV4X3BhZ2Vfb2Zmc2V0OkIuZmllbGRfMy5maWVsZF8xMCxkaWN0aW9uYXJ5X3BhZ2Vfb2Zmc2V0OkIuZmllbGRfMy5maWVsZF8xMSxzdGF0aXN0aWNzOnZuKEIuZmllbGRfMy5maWVsZF8xMix1W1FdKSxlbmNvZGluZ19zdGF0czooQz1CLmZpZWxkXzMuZmllbGRfMTMpPT1udWxsP3ZvaWQgMDpDLm1hcChMPT4oe3BhZ2VfdHlwZTpjdFtMLmZpZWxkXzFdLGVuY29kaW5nOmVlW0wuZmllbGRfMl0sY291bnQ6TC5maWVsZF8zfSkpLGJsb29tX2ZpbHRlcl9vZmZzZXQ6Qi5maWVsZF8zLmZpZWxkXzE0LGJsb29tX2ZpbHRlcl9sZW5ndGg6Qi5maWVsZF8zLmZpZWxkXzE1LHNpemVfc3RhdGlzdGljczpCLmZpZWxkXzMuZmllbGRfMTYmJnt1bmVuY29kZWRfYnl0ZV9hcnJheV9kYXRhX2J5dGVzOkIuZmllbGRfMy5maWVsZF8xNi5maWVsZF8xLHJlcGV0aXRpb25fbGV2ZWxfaGlzdG9ncmFtOkIuZmllbGRfMy5maWVsZF8xNi5maWVsZF8yLGRlZmluaXRpb25fbGV2ZWxfaGlzdG9ncmFtOkIuZmllbGRfMy5maWVsZF8xNi5maWVsZF8zfX0sb2Zmc2V0X2luZGV4X29mZnNldDpCLmZpZWxkXzQsb2Zmc2V0X2luZGV4X2xlbmd0aDpCLmZpZWxkXzUsY29sdW1uX2luZGV4X29mZnNldDpCLmZpZWxkXzYsY29sdW1uX2luZGV4X2xlbmd0aDpCLmZpZWxkXzcsY3J5cHRvX21ldGFkYXRhOkIuZmllbGRfNyxlbmNyeXB0ZWRfY29sdW1uX21ldGFkYXRhOkIuZmllbGRfOH19KSx0b3RhbF9ieXRlX3NpemU6SS5maWVsZF8yLG51bV9yb3dzOkkuZmllbGRfMyxzb3J0aW5nX2NvbHVtbnM6KHY9SS5maWVsZF80KT09bnVsbD92b2lkIDA6di5tYXAoQj0+KHtjb2x1bW5faWR4OkIuZmllbGRfMSxkZXNjZW5kaW5nOkIuZmllbGRfMixudWxsc19maXJzdDpCLmZpZWxkXzN9KSksZmlsZV9vZmZzZXQ6SS5maWVsZF81LHRvdGFsX2NvbXByZXNzZWRfc2l6ZTpJLmZpZWxkXzYsb3JkaW5hbDpJLmZpZWxkXzd9fSksRT0oYz1mLmZpZWxkXzUpPT1udWxsP3ZvaWQgMDpjLm1hcChJPT4oe2tleTpsKEkuZmllbGRfMSksdmFsdWU6bChJLmZpZWxkXzIpfSkpLGc9bChmLmZpZWxkXzYpO3JldHVybnt2ZXJzaW9uOkEsc2NoZW1hOmEsbnVtX3Jvd3M6dyxyb3dfZ3JvdXBzOmgsa2V5X3ZhbHVlX21ldGFkYXRhOkUsY3JlYXRlZF9ieTpnLG1ldGFkYXRhX2xlbmd0aDpyfX1mdW5jdGlvbiB5bihlKXtyZXR1cm4gZSE9bnVsbCYmZS5maWVsZF8xP3t0eXBlOiJTVFJJTkcifTplIT1udWxsJiZlLmZpZWxkXzI/e3R5cGU6Ik1BUCJ9OmUhPW51bGwmJmUuZmllbGRfMz97dHlwZToiTElTVCJ9OmUhPW51bGwmJmUuZmllbGRfND97dHlwZToiRU5VTSJ9OmUhPW51bGwmJmUuZmllbGRfNT97dHlwZToiREVDSU1BTCIsc2NhbGU6ZS5maWVsZF81LmZpZWxkXzEscHJlY2lzaW9uOmUuZmllbGRfNS5maWVsZF8yfTplIT1udWxsJiZlLmZpZWxkXzY/e3R5cGU6IkRBVEUifTplIT1udWxsJiZlLmZpZWxkXzc/e3R5cGU6IlRJTUUiLGlzQWRqdXN0ZWRUb1VUQzplLmZpZWxkXzcuZmllbGRfMSx1bml0Om10KGUuZmllbGRfNy5maWVsZF8yKX06ZSE9bnVsbCYmZS5maWVsZF84P3t0eXBlOiJUSU1FU1RBTVAiLGlzQWRqdXN0ZWRUb1VUQzplLmZpZWxkXzguZmllbGRfMSx1bml0Om10KGUuZmllbGRfOC5maWVsZF8yKX06ZSE9bnVsbCYmZS5maWVsZF8xMD97dHlwZToiSU5URUdFUiIsYml0V2lkdGg6ZS5maWVsZF8xMC5maWVsZF8xLGlzU2lnbmVkOmUuZmllbGRfMTAuZmllbGRfMn06ZSE9bnVsbCYmZS5maWVsZF8xMT97dHlwZToiTlVMTCJ9OmUhPW51bGwmJmUuZmllbGRfMTI/e3R5cGU6IkpTT04ifTplIT1udWxsJiZlLmZpZWxkXzEzP3t0eXBlOiJCU09OIn06ZSE9bnVsbCYmZS5maWVsZF8xND97dHlwZToiVVVJRCJ9OmUhPW51bGwmJmUuZmllbGRfMTU/e3R5cGU6IkZMT0FUMTYifTplfWZ1bmN0aW9uIG10KGUpe2lmKGUuZmllbGRfMSlyZXR1cm4iTUlMTElTIjtpZihlLmZpZWxkXzIpcmV0dXJuIk1JQ1JPUyI7aWYoZS5maWVsZF8zKXJldHVybiJOQU5PUyI7dGhyb3cgbmV3IEVycm9yKCJwYXJxdWV0IHRpbWUgdW5pdCByZXF1aXJlZCIpfWZ1bmN0aW9uIHZuKGUsdCl7cmV0dXJuIGUmJnttYXg6TGUoZS5maWVsZF8xLHQpLG1pbjpMZShlLmZpZWxkXzIsdCksbnVsbF9jb3VudDplLmZpZWxkXzMsZGlzdGluY3RfY291bnQ6ZS5maWVsZF80LG1heF92YWx1ZTpMZShlLmZpZWxkXzUsdCksbWluX3ZhbHVlOkxlKGUuZmllbGRfNix0KSxpc19tYXhfdmFsdWVfZXhhY3Q6ZS5maWVsZF83LGlzX21pbl92YWx1ZV9leGFjdDplLmZpZWxkXzh9fWZ1bmN0aW9uIExlKGUsdCl7Y29uc3R7dHlwZTpuLGNvbnZlcnRlZF90eXBlOnIsbG9naWNhbF90eXBlOml9PXQ7aWYoZT09PXZvaWQgMClyZXR1cm4gZTtpZihuPT09IkJPT0xFQU4iKXJldHVybiBlWzBdPT09MTtpZihuPT09IkJZVEVfQVJSQVkiKXJldHVybiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZSk7Y29uc3Qgbz1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCk7cmV0dXJuIG49PT0iRkxPQVQiJiZvLmJ5dGVMZW5ndGg9PT00P28uZ2V0RmxvYXQzMigwLCEwKTpuPT09IkRPVUJMRSImJm8uYnl0ZUxlbmd0aD09PTg/by5nZXRGbG9hdDY0KDAsITApOm49PT0iSU5UMzIiJiZyPT09IkRBVEUiP25ldyBEYXRlKG8uZ2V0SW50MzIoMCwhMCkqODY0ZTUpOm49PT0iSU5UNjQiJiZyPT09IlRJTUVTVEFNUF9NSUNST1MiP25ldyBEYXRlKE51bWJlcihvLmdldEJpZ0ludDY0KDAsITApLzEwMDBuKSk6bj09PSJJTlQ2NCImJnI9PT0iVElNRVNUQU1QX01JTExJUyI/bmV3IERhdGUoTnVtYmVyKG8uZ2V0QmlnSW50NjQoMCwhMCkpKTpuPT09IklOVDY0IiYmKGk9PW51bGw/dm9pZCAwOmkudHlwZSk9PT0iVElNRVNUQU1QIj9uZXcgRGF0ZShOdW1iZXIoby5nZXRCaWdJbnQ2NCgwLCEwKSkpOm49PT0iSU5UMzIiJiZvLmJ5dGVMZW5ndGg9PT00P28uZ2V0SW50MzIoMCwhMCk6bj09PSJJTlQ2NCImJm8uYnl0ZUxlbmd0aD09PTg/by5nZXRCaWdJbnQ2NCgwLCEwKTpyPT09IkRFQ0lNQUwiP2d0KGUpKk1hdGgucG93KDEwLC0odC5zY2FsZXx8MCkpOihpPT1udWxsP3ZvaWQgMDppLnR5cGUpPT09IkZMT0FUMTYiP2h0KGUpOmV9ZnVuY3Rpb24gUXQoZSx0LG4scixpLG8pe2NvbnN0IGY9KHQ9PW51bGw/dm9pZCAwOnQubGVuZ3RoKXx8bi5sZW5ndGg7bGV0IHM9MDtjb25zdCBsPVtlXTtsZXQgQT1lLGE9MCx1PTAsdz0wO2lmKG5bMF0pZm9yKDthPGkubGVuZ3RoLTImJnc8blswXTspQT1BLmF0KC0xKSxsLnB1c2goQSksYSsrLGlbYV0hPT0iUkVRVUlSRUQiJiZ1KyssaVthXT09PSJSRVBFQVRFRCImJncrKztmb3IobGV0IGg9MDtoPGY7aCsrKXtjb25zdCBFPXQhPW51bGwmJnQubGVuZ3RoP3RbaF06byxnPW5baF07Zm9yKDthJiYoZzx3fHxpW2FdIT09IlJFUEVBVEVEIik7KWlbYV0hPT0iUkVRVUlSRUQiJiYobC5wb3AoKSx1LS0pLGlbYV09PT0iUkVQRUFURUQiJiZ3LS0sYS0tO2ZvcihBPWwuYXQoLTEpOyhhPGkubGVuZ3RoLTJ8fGlbYSsxXT09PSJSRVBFQVRFRCIpJiYodTxFfHxpW2ErMV09PT0iUkVRVUlSRUQiKTspe2lmKGErKyxpW2FdIT09IlJFUVVJUkVEIil7Y29uc3QgYz1bXTtBLnB1c2goYyksQT1jLGwucHVzaChjKSx1Kyt9aVthXT09PSJSRVBFQVRFRCImJncrK31FPT09bz9BLnB1c2gocltzKytdKTphPT09aS5sZW5ndGgtMj9BLnB1c2gobnVsbCk6QS5wdXNoKFtdKX1pZighZS5sZW5ndGgpZm9yKGxldCBoPTA7aDxvO2grKyl7Y29uc3QgRT1bXTtBLnB1c2goRSksQT1FfXJldHVybiBlfWZ1bmN0aW9uIGRlKGUsdCxuPTApe2NvbnN0IHI9dC5wYXRoLmpvaW4oIi4iKSxpPXQuZWxlbWVudC5yZXBldGl0aW9uX3R5cGU9PT0iT1BUSU9OQUwiLG89aT9uKzE6bjtpZihnbih0KSl7bGV0IGY9dC5jaGlsZHJlblswXSxzPW87Zi5jaGlsZHJlbi5sZW5ndGg9PT0xJiYoZj1mLmNoaWxkcmVuWzBdLHMrKyksZGUoZSxmLHMpO2NvbnN0IGw9Zi5wYXRoLmpvaW4oIi4iKSxBPWUuZ2V0KGwpO2lmKCFBKXRocm93IG5ldyBFcnJvcigicGFycXVldCBsaXN0IGNvbHVtbiBtaXNzaW5nIHZhbHVlcyIpO2kmJlVlKEEsbiksZS5zZXQocixBKSxlLmRlbGV0ZShsKTtyZXR1cm59aWYoaG4odCkpe2NvbnN0IGY9dC5jaGlsZHJlblswXS5lbGVtZW50Lm5hbWU7ZGUoZSx0LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLG8rMSksZGUoZSx0LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzFdLG8rMSk7Y29uc3Qgcz1lLmdldChgJHtyfS4ke2Z9LmtleWApLGw9ZS5nZXQoYCR7cn0uJHtmfS52YWx1ZWApO2lmKCFzKXRocm93IG5ldyBFcnJvcigicGFycXVldCBtYXAgY29sdW1uIG1pc3Npbmcga2V5cyIpO2lmKCFsKXRocm93IG5ldyBFcnJvcigicGFycXVldCBtYXAgY29sdW1uIG1pc3NpbmcgdmFsdWVzIik7aWYocy5sZW5ndGghPT1sLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoInBhcnF1ZXQgbWFwIGNvbHVtbiBrZXkvdmFsdWUgbGVuZ3RoIG1pc21hdGNoIik7Y29uc3QgQT1idChzLGwsbyk7aSYmVWUoQSxuKSxlLmRlbGV0ZShgJHtyfS4ke2Z9LmtleWApLGUuZGVsZXRlKGAke3J9LiR7Zn0udmFsdWVgKSxlLnNldChyLEEpO3JldHVybn1pZih0LmNoaWxkcmVuLmxlbmd0aCl7Y29uc3QgZj10LmVsZW1lbnQucmVwZXRpdGlvbl90eXBlPT09IlJFUVVJUkVEIj9uOm4rMSxzPXt9O2Zvcihjb25zdCBBIG9mIHQuY2hpbGRyZW4pe2RlKGUsQSxmKTtjb25zdCBhPWUuZ2V0KEEucGF0aC5qb2luKCIuIikpO2lmKCFhKXRocm93IG5ldyBFcnJvcigicGFycXVldCBzdHJ1Y3QgbWlzc2luZyBjaGlsZCBkYXRhIik7c1tBLmVsZW1lbnQubmFtZV09YX1mb3IoY29uc3QgQSBvZiB0LmNoaWxkcmVuKWUuZGVsZXRlKEEucGF0aC5qb2luKCIuIikpO2NvbnN0IGw9THQocyxmKTtpJiZVZShsLG4pLGUuc2V0KHIsbCl9fWZ1bmN0aW9uIFVlKGUsdCl7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdD9VZShlW25dLHQtMSk6ZVtuXT1lW25dWzBdfWZ1bmN0aW9uIGJ0KGUsdCxuKXtjb25zdCByPVtdO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKWlmKG4pci5wdXNoKGJ0KGVbaV0sdFtpXSxuLTEpKTtlbHNlIGlmKGVbaV0pe2NvbnN0IG89e307Zm9yKGxldCBmPTA7ZjxlW2ldLmxlbmd0aDtmKyspe2NvbnN0IHM9dFtpXVtmXTtvW2VbaV1bZl1dPXM9PT12b2lkIDA/bnVsbDpzfXIucHVzaChvKX1lbHNlIHIucHVzaCh2b2lkIDApO3JldHVybiByfWZ1bmN0aW9uIEx0KGUsdCl7dmFyIG87Y29uc3Qgbj1PYmplY3Qua2V5cyhlKSxyPShvPWVbblswXV0pPT1udWxsP3ZvaWQgMDpvLmxlbmd0aCxpPVtdO2ZvcihsZXQgZj0wO2Y8cjtmKyspe2NvbnN0IHM9e307Zm9yKGNvbnN0IGwgb2Ygbil7aWYoZVtsXS5sZW5ndGghPT1yKXRocm93IG5ldyBFcnJvcigicGFycXVldCBzdHJ1Y3QgcGFyc2luZyBlcnJvciIpO3NbbF09ZVtsXVtmXX10P2kucHVzaChMdChzLHQtMSkpOmkucHVzaChzKX1yZXR1cm4gaX1mdW5jdGlvbiBGZShlKXtyZXR1cm4gMzItTWF0aC5jbHozMihlKX1mdW5jdGlvbiBuZShlLHQsbixyKXtufHwoZS5vZmZzZXQrPTQpO2xldCBpPTA7Zm9yKDtpPHIubGVuZ3RoOyl7Y29uc3Qgbz10ZShlKTtpZihvJjEpaT1DbihlLG8sdCxyLGkpO2Vsc2V7Y29uc3QgZj1vPj4+MTtwbihlLGYsdCxyLGkpLGkrPWZ9fX1mdW5jdGlvbiBwbihlLHQsbixyLGkpe2NvbnN0IG89bis3Pj4zO2xldCBmPTA7Zm9yKGxldCBzPTA7czxvO3MrKylmfD1lLnZpZXcuZ2V0VWludDgoZS5vZmZzZXQrKyk8PChzPDwzKTtmb3IobGV0IHM9MDtzPHQ7cysrKXJbaStzXT1mfWZ1bmN0aW9uIENuKGUsdCxuLHIsaSl7bGV0IG89dD4+MTw8Mztjb25zdCBmPSgxPDxuKS0xO2xldCBzPTA7aWYoZS5vZmZzZXQ8ZS52aWV3LmJ5dGVMZW5ndGgpcz1lLnZpZXcuZ2V0VWludDgoZS5vZmZzZXQrKyk7ZWxzZSBpZihmKXRocm93IG5ldyBFcnJvcihgcGFycXVldCBiaXRwYWNrIG9mZnNldCAke2Uub2Zmc2V0fSBvdXQgb2YgcmFuZ2VgKTtsZXQgbD04LEE9MDtmb3IoO287KUE+OD8oQS09OCxsLT04LHM+Pj49OCk6bC1BPG4/KHN8PWUudmlldy5nZXRVaW50OChlLm9mZnNldCk8PGwsZS5vZmZzZXQrKyxsKz04KTooaTxyLmxlbmd0aCYmKHJbaSsrXT1zPj5BJmYpLG8tLSxBKz1uKTtyZXR1cm4gaX1mdW5jdGlvbiBVdChlLHQsbixyKXtjb25zdCBpPW1uKG4sciksbz1uZXcgVWludDhBcnJheSh0KmkpO2ZvcihsZXQgZj0wO2Y8aTtmKyspZm9yKGxldCBzPTA7czx0O3MrKylvW3MqaStmXT1lLnZpZXcuZ2V0VWludDgoZS5vZmZzZXQrKyk7aWYobj09PSJGTE9BVCIpcmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoby5idWZmZXIpO2lmKG49PT0iRE9VQkxFIilyZXR1cm4gbmV3IEZsb2F0NjRBcnJheShvLmJ1ZmZlcik7aWYobj09PSJJTlQzMiIpcmV0dXJuIG5ldyBJbnQzMkFycmF5KG8uYnVmZmVyKTtpZihuPT09IklOVDY0IilyZXR1cm4gbmV3IEJpZ0ludDY0QXJyYXkoby5idWZmZXIpO2lmKG49PT0iRklYRURfTEVOX0JZVEVfQVJSQVkiKXtjb25zdCBmPW5ldyBBcnJheSh0KTtmb3IobGV0IHM9MDtzPHQ7cysrKWZbc109by5zdWJhcnJheShzKmksKHMrMSkqaSk7cmV0dXJuIGZ9dGhyb3cgbmV3IEVycm9yKGBwYXJxdWV0IGJ5dGVfc3RyZWFtX3NwbGl0IHVuc3VwcG9ydGVkIHR5cGU6ICR7bn1gKX1mdW5jdGlvbiBtbihlLHQpe3N3aXRjaChlKXtjYXNlIklOVDMyIjpjYXNlIkZMT0FUIjpyZXR1cm4gNDtjYXNlIklOVDY0IjpjYXNlIkRPVUJMRSI6cmV0dXJuIDg7Y2FzZSJGSVhFRF9MRU5fQllURV9BUlJBWSI6aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJwYXJxdWV0IGJ5dGVXaWR0aCBtaXNzaW5nIHR5cGVfbGVuZ3RoIik7cmV0dXJuIHQ7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYHBhcnF1ZXQgdW5zdXBwb3J0ZWQgdHlwZTogJHtlfWApfX1mdW5jdGlvbiBaZShlLHQsbixyKXtpZihuPT09MClyZXR1cm5bXTtpZih0PT09IkJPT0xFQU4iKXJldHVybiBRbihlLG4pO2lmKHQ9PT0iSU5UMzIiKXJldHVybiBibihlLG4pO2lmKHQ9PT0iSU5UNjQiKXJldHVybiBMbihlLG4pO2lmKHQ9PT0iSU5UOTYiKXJldHVybiBVbihlLG4pO2lmKHQ9PT0iRkxPQVQiKXJldHVybiBGbihlLG4pO2lmKHQ9PT0iRE9VQkxFIilyZXR1cm4gU24oZSxuKTtpZih0PT09IkJZVEVfQVJSQVkiKXJldHVybiB4bihlLG4pO2lmKHQ9PT0iRklYRURfTEVOX0JZVEVfQVJSQVkiKXtpZighcil0aHJvdyBuZXcgRXJyb3IoInBhcnF1ZXQgbWlzc2luZyBmaXhlZCBsZW5ndGgiKTtyZXR1cm4gUm4oZSxuLHIpfWVsc2UgdGhyb3cgbmV3IEVycm9yKGBwYXJxdWV0IHVuaGFuZGxlZCB0eXBlOiAke3R9YCl9ZnVuY3Rpb24gUW4oZSx0KXtjb25zdCBuPW5ldyBBcnJheSh0KTtmb3IobGV0IHI9MDtyPHQ7cisrKXtjb25zdCBpPWUub2Zmc2V0KyhyLzh8MCksbz1yJTgsZj1lLnZpZXcuZ2V0VWludDgoaSk7bltyXT0oZiYxPDxvKSE9PTB9cmV0dXJuIGUub2Zmc2V0Kz1NYXRoLmNlaWwodC84KSxufWZ1bmN0aW9uIGJuKGUsdCl7Y29uc3Qgbj0oZS52aWV3LmJ5dGVPZmZzZXQrZS5vZmZzZXQpJTQ/bmV3IEludDMyQXJyYXkoU2UoZS52aWV3LmJ1ZmZlcixlLnZpZXcuYnl0ZU9mZnNldCtlLm9mZnNldCx0KjQpKTpuZXcgSW50MzJBcnJheShlLnZpZXcuYnVmZmVyLGUudmlldy5ieXRlT2Zmc2V0K2Uub2Zmc2V0LHQpO3JldHVybiBlLm9mZnNldCs9dCo0LG59ZnVuY3Rpb24gTG4oZSx0KXtjb25zdCBuPShlLnZpZXcuYnl0ZU9mZnNldCtlLm9mZnNldCklOD9uZXcgQmlnSW50NjRBcnJheShTZShlLnZpZXcuYnVmZmVyLGUudmlldy5ieXRlT2Zmc2V0K2Uub2Zmc2V0LHQqOCkpOm5ldyBCaWdJbnQ2NEFycmF5KGUudmlldy5idWZmZXIsZS52aWV3LmJ5dGVPZmZzZXQrZS5vZmZzZXQsdCk7cmV0dXJuIGUub2Zmc2V0Kz10Kjgsbn1mdW5jdGlvbiBVbihlLHQpe2NvbnN0IG49bmV3IEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDtyKyspe2NvbnN0IGk9ZS52aWV3LmdldEJpZ0ludDY0KGUub2Zmc2V0K3IqMTIsITApLG89ZS52aWV3LmdldEludDMyKGUub2Zmc2V0K3IqMTIrOCwhMCk7bltyXT1CaWdJbnQobyk8PDY0bnxpfXJldHVybiBlLm9mZnNldCs9dCoxMixufWZ1bmN0aW9uIEZuKGUsdCl7Y29uc3Qgbj0oZS52aWV3LmJ5dGVPZmZzZXQrZS5vZmZzZXQpJTQ/bmV3IEZsb2F0MzJBcnJheShTZShlLnZpZXcuYnVmZmVyLGUudmlldy5ieXRlT2Zmc2V0K2Uub2Zmc2V0LHQqNCkpOm5ldyBGbG9hdDMyQXJyYXkoZS52aWV3LmJ1ZmZlcixlLnZpZXcuYnl0ZU9mZnNldCtlLm9mZnNldCx0KTtyZXR1cm4gZS5vZmZzZXQrPXQqNCxufWZ1bmN0aW9uIFNuKGUsdCl7Y29uc3Qgbj0oZS52aWV3LmJ5dGVPZmZzZXQrZS5vZmZzZXQpJTg/bmV3IEZsb2F0NjRBcnJheShTZShlLnZpZXcuYnVmZmVyLGUudmlldy5ieXRlT2Zmc2V0K2Uub2Zmc2V0LHQqOCkpOm5ldyBGbG9hdDY0QXJyYXkoZS52aWV3LmJ1ZmZlcixlLnZpZXcuYnl0ZU9mZnNldCtlLm9mZnNldCx0KTtyZXR1cm4gZS5vZmZzZXQrPXQqOCxufWZ1bmN0aW9uIHhuKGUsdCl7Y29uc3Qgbj1uZXcgQXJyYXkodCk7Zm9yKGxldCByPTA7cjx0O3IrKyl7Y29uc3QgaT1lLnZpZXcuZ2V0SW50MzIoZS5vZmZzZXQsITApO2Uub2Zmc2V0Kz00LG5bcl09bmV3IFVpbnQ4QXJyYXkoZS52aWV3LmJ1ZmZlcixlLnZpZXcuYnl0ZU9mZnNldCtlLm9mZnNldCxpKSxlLm9mZnNldCs9aX1yZXR1cm4gbn1mdW5jdGlvbiBSbihlLHQsbil7Y29uc3Qgcj1uZXcgQXJyYXkodCk7Zm9yKGxldCBpPTA7aTx0O2krKylyW2ldPW5ldyBVaW50OEFycmF5KGUudmlldy5idWZmZXIsZS52aWV3LmJ5dGVPZmZzZXQrZS5vZmZzZXQsbiksZS5vZmZzZXQrPW47cmV0dXJuIHJ9ZnVuY3Rpb24gU2UoZSx0LG4pe2NvbnN0IHI9bmV3IEFycmF5QnVmZmVyKG4pO3JldHVybiBuZXcgVWludDhBcnJheShyKS5zZXQobmV3IFVpbnQ4QXJyYXkoZSx0LG4pKSxyfWNvbnN0IE5uPVswLDI1NSw2NTUzNSwxNjc3NzIxNSw0Mjk0OTY3Mjk1XTtmdW5jdGlvbiBZbihlLHQsbixyLGkpe2ZvcihsZXQgbz0wO288aTtvKyspbltyK29dPWVbdCtvXX1mdW5jdGlvbiBEbihlLHQsbixyKXtmb3IobGV0IGk9MDtpPHI7aSsrKWVbdCtpXT1lW3QtbitpXX1mdW5jdGlvbiBXbihlLHQpe2NvbnN0IG49ZS5ieXRlTGVuZ3RoLHI9dC5ieXRlTGVuZ3RoO2xldCBpPTAsbz0wO2Zvcig7aTxuOyl7Y29uc3QgZj1lW2ldO2lmKGkrKyxmPDEyOClicmVha31pZihyJiZpPj1uKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzbmFwcHkgbGVuZ3RoIGhlYWRlciIpO2Zvcig7aTxuOyl7Y29uc3QgZj1lW2ldO2xldCBzPTA7aWYoaSsrLGk+PW4pdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nIGVvZiBtYXJrZXIiKTtpZihmJjMpe2xldCBsPTA7c3dpdGNoKGYmMyl7Y2FzZSAxOnM9KGY+Pj4yJjcpKzQsbD1lW2ldKyhmPj4+NTw8OCksaSsrO2JyZWFrO2Nhc2UgMjppZihuPD1pKzEpdGhyb3cgbmV3IEVycm9yKCJzbmFwcHkgZXJyb3IgZW5kIG9mIGlucHV0Iik7cz0oZj4+PjIpKzEsbD1lW2ldKyhlW2krMV08PDgpLGkrPTI7YnJlYWs7Y2FzZSAzOmlmKG48PWkrMyl0aHJvdyBuZXcgRXJyb3IoInNuYXBweSBlcnJvciBlbmQgb2YgaW5wdXQiKTtzPShmPj4+MikrMSxsPWVbaV0rKGVbaSsxXTw8OCkrKGVbaSsyXTw8MTYpKyhlW2krM108PDI0KSxpKz00O2JyZWFrfWlmKGw9PT0wfHxpc05hTihsKSl0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb2Zmc2V0ICR7bH0gcG9zICR7aX0gaW5wdXRMZW5ndGggJHtufWApO2lmKGw+byl0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCBjb3B5IGZyb20gYmVmb3JlIHN0YXJ0IG9mIGJ1ZmZlciIpO0RuKHQsbyxsLHMpLG8rPXN9ZWxzZXtsZXQgbD0oZj4+PjIpKzE7aWYobD42MCl7aWYoaSszPj1uKXRocm93IG5ldyBFcnJvcigic25hcHB5IGVycm9yIGxpdGVyYWwgcG9zICsgMyA+PSBpbnB1dExlbmd0aCIpO2NvbnN0IEE9bC02MDtsPWVbaV0rKGVbaSsxXTw8OCkrKGVbaSsyXTw8MTYpKyhlW2krM108PDI0KSxsPShsJk5uW0FdKSsxLGkrPUF9aWYoaStsPm4pdGhyb3cgbmV3IEVycm9yKCJzbmFwcHkgZXJyb3IgbGl0ZXJhbCBleGNlZWRzIGlucHV0IGxlbmd0aCIpO1luKGUsaSx0LG8sbCksaSs9bCxvKz1sfX1pZihvIT09cil0aHJvdyBuZXcgRXJyb3IoInByZW1hdHVyZSBlbmQgb2YgaW5wdXQiKX1mdW5jdGlvbiBQbihlLHQsbix7dHlwZTpyfSl7Y29uc3QgaT1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCksbz17dmlldzppLG9mZnNldDowfTtsZXQgZjtjb25zdCBzPWtuKG8sdCxuKSx7ZGVmaW5pdGlvbkxldmVsczpsLG51bU51bGxzOkF9PXFuKG8sdCxuKSxhPXQubnVtX3ZhbHVlcy1BO2lmKHQuZW5jb2Rpbmc9PT0iUExBSU4iKXtjb25zdHt0eXBlX2xlbmd0aDp1fT1uW24ubGVuZ3RoLTFdLmVsZW1lbnQ7Zj1aZShvLHIsYSx1KX1lbHNlIGlmKHQuZW5jb2Rpbmc9PT0iUExBSU5fRElDVElPTkFSWSJ8fHQuZW5jb2Rpbmc9PT0iUkxFX0RJQ1RJT05BUlkifHx0LmVuY29kaW5nPT09IlJMRSIpe2NvbnN0IHU9cj09PSJCT09MRUFOIj8xOmkuZ2V0VWludDgoby5vZmZzZXQrKyk7dT8oZj1uZXcgQXJyYXkoYSksbmUobyx1LGkuYnl0ZUxlbmd0aC1vLm9mZnNldCxmKSk6Zj1uZXcgVWludDhBcnJheShhKX1lbHNlIGlmKHQuZW5jb2Rpbmc9PT0iQllURV9TVFJFQU1fU1BMSVQiKXtjb25zdHt0eXBlX2xlbmd0aDp1fT1uW24ubGVuZ3RoLTFdLmVsZW1lbnQ7Zj1VdChvLGEscix1KX1lbHNlIHRocm93IG5ldyBFcnJvcihgcGFycXVldCB1bnN1cHBvcnRlZCBlbmNvZGluZzogJHt0LmVuY29kaW5nfWApO3JldHVybntkZWZpbml0aW9uTGV2ZWxzOmwscmVwZXRpdGlvbkxldmVsczpzLGRhdGFQYWdlOmZ9fWZ1bmN0aW9uIFRuKGUsdCxuLHIpe2NvbnN0IG89e3ZpZXc6bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLG9mZnNldDowfTtyZXR1cm4gWmUobyxuLnR5cGUsdC5udW1fdmFsdWVzLHIpfWZ1bmN0aW9uIGtuKGUsdCxuKXtpZihuLmxlbmd0aD4xKXtjb25zdCByPUJ0KG4pO2lmKHIpe2NvbnN0IGk9bmV3IEFycmF5KHQubnVtX3ZhbHVlcyk7cmV0dXJuIG5lKGUsRmUociksMCxpKSxpfX1yZXR1cm5bXX1mdW5jdGlvbiBxbihlLHQsbil7Y29uc3Qgcj1RZShuKTtpZighcilyZXR1cm57ZGVmaW5pdGlvbkxldmVsczpbXSxudW1OdWxsczowfTtjb25zdCBpPW5ldyBBcnJheSh0Lm51bV92YWx1ZXMpO25lKGUsRmUociksMCxpKTtsZXQgbz10Lm51bV92YWx1ZXM7Zm9yKGNvbnN0IGYgb2YgaSlmPT09ciYmby0tO3JldHVybiBvPT09MCYmKGkubGVuZ3RoPTApLHtkZWZpbml0aW9uTGV2ZWxzOmksbnVtTnVsbHM6b319ZnVuY3Rpb24gemUoZSx0LG4scil7bGV0IGk7Y29uc3Qgbz1yPT1udWxsP3ZvaWQgMDpyW25dO2lmKG49PT0iVU5DT01QUkVTU0VEIilpPWU7ZWxzZSBpZihvKWk9byhlLHQpO2Vsc2UgaWYobj09PSJTTkFQUFkiKWk9bmV3IFVpbnQ4QXJyYXkodCksV24oZSxpKTtlbHNlIHRocm93IG5ldyBFcnJvcihgcGFycXVldCB1bnN1cHBvcnRlZCBjb21wcmVzc2lvbiBjb2RlYzogJHtufWApO2lmKChpPT1udWxsP3ZvaWQgMDppLmxlbmd0aCkhPT10KXRocm93IG5ldyBFcnJvcihgcGFycXVldCBkZWNvbXByZXNzZWQgcGFnZSBsZW5ndGggJHtpPT1udWxsP3ZvaWQgMDppLmxlbmd0aH0gZG9lcyBub3QgbWF0Y2ggaGVhZGVyICR7dH1gKTtyZXR1cm4gaX1mdW5jdGlvbiB4ZShlLHQsbil7Y29uc3Qgcj1uIGluc3RhbmNlb2YgSW50MzJBcnJheSxpPXRlKGUpLG89dGUoZSk7dGUoZSk7bGV0IGY9VmUoZSkscz0wO25bcysrXT1yP051bWJlcihmKTpmO2NvbnN0IGw9aS9vO2Zvcig7czx0Oyl7Y29uc3QgQT1WZShlKSxhPW5ldyBVaW50OEFycmF5KG8pO2ZvcihsZXQgdT0wO3U8bzt1KyspYVt1XT1lLnZpZXcuZ2V0VWludDgoZS5vZmZzZXQrKyk7Zm9yKGxldCB1PTA7dTxvJiZzPHQ7dSsrKXtjb25zdCB3PUJpZ0ludChhW3VdKTtpZih3KXtsZXQgaD0wbixFPWw7Y29uc3QgZz0oMW48PHcpLTFuO2Zvcig7RSYmczx0Oyl7bGV0IGM9QmlnSW50KGUudmlldy5nZXRVaW50OChlLm9mZnNldCkpPj5oJmc7Zm9yKGgrPXc7aD49ODspaC09OG4sZS5vZmZzZXQrKyxoJiYoY3w9QmlnSW50KGUudmlldy5nZXRVaW50OChlLm9mZnNldCkpPDx3LWgmZyk7Y29uc3QgST1BK2M7Zis9SSxuW3MrK109cj9OdW1iZXIoZik6ZixFLS19RSYmKGUub2Zmc2V0Kz1NYXRoLmNlaWwoKEUqTnVtYmVyKHcpK051bWJlcihoKSkvOCkpfWVsc2UgZm9yKGxldCBoPTA7aDxsJiZzPHQ7aCsrKWYrPUEsbltzKytdPXI/TnVtYmVyKGYpOmZ9fX1mdW5jdGlvbiBNbihlLHQsbil7Y29uc3Qgcj1uZXcgSW50MzJBcnJheSh0KTt4ZShlLHQscik7Zm9yKGxldCBpPTA7aTx0O2krKyluW2ldPW5ldyBVaW50OEFycmF5KGUudmlldy5idWZmZXIsZS52aWV3LmJ5dGVPZmZzZXQrZS5vZmZzZXQscltpXSksZS5vZmZzZXQrPXJbaV19ZnVuY3Rpb24gSG4oZSx0LG4pe2NvbnN0IHI9bmV3IEludDMyQXJyYXkodCk7eGUoZSx0LHIpO2NvbnN0IGk9bmV3IEludDMyQXJyYXkodCk7eGUoZSx0LGkpO2ZvcihsZXQgbz0wO288dDtvKyspe2NvbnN0IGY9bmV3IFVpbnQ4QXJyYXkoZS52aWV3LmJ1ZmZlcixlLnZpZXcuYnl0ZU9mZnNldCtlLm9mZnNldCxpW29dKTtyW29dPyhuW29dPW5ldyBVaW50OEFycmF5KHJbb10raVtvXSksbltvXS5zZXQobltvLTFdLnN1YmFycmF5KDAscltvXSkpLG5bb10uc2V0KGYscltvXSkpOm5bb109ZixlLm9mZnNldCs9aVtvXX19ZnVuY3Rpb24gT24oZSx0LG4scixpKXtjb25zdCBmPXt2aWV3Om5ldyBEYXRhVmlldyhlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKSxvZmZzZXQ6MH0se2NvZGVjOnMsdHlwZTpsfT1yLEE9dC5kYXRhX3BhZ2VfaGVhZGVyX3YyO2lmKCFBKXRocm93IG5ldyBFcnJvcigicGFycXVldCBkYXRhIHBhZ2UgaGVhZGVyIHYyIGlzIHVuZGVmaW5lZCIpO2NvbnN0IGE9Vm4oZixBLG4pO2Yub2Zmc2V0PUEucmVwZXRpdGlvbl9sZXZlbHNfYnl0ZV9sZW5ndGg7Y29uc3QgdT1HbihmLEEsbiksdz10LnVuY29tcHJlc3NlZF9wYWdlX3NpemUtQS5kZWZpbml0aW9uX2xldmVsc19ieXRlX2xlbmd0aC1BLnJlcGV0aXRpb25fbGV2ZWxzX2J5dGVfbGVuZ3RoO2xldCBoPWUuc3ViYXJyYXkoZi5vZmZzZXQpO0EuaXNfY29tcHJlc3NlZCE9PSExJiYoaD16ZShoLHcscyxpKSk7Y29uc3QgRT1uZXcgRGF0YVZpZXcoaC5idWZmZXIsaC5ieXRlT2Zmc2V0LGguYnl0ZUxlbmd0aCksZz17dmlldzpFLG9mZnNldDowfTtsZXQgYztjb25zdCBJPUEubnVtX3ZhbHVlcy1BLm51bV9udWxscztpZihBLmVuY29kaW5nPT09IlBMQUlOIil7Y29uc3R7dHlwZV9sZW5ndGg6dn09bltuLmxlbmd0aC0xXS5lbGVtZW50O2M9WmUoZyxsLEksdil9ZWxzZSBpZihBLmVuY29kaW5nPT09IlJMRSIpYz1uZXcgQXJyYXkoSSksbmUoZywxLDAsYyksYz1jLm1hcCh2PT4hIXYpO2Vsc2UgaWYoQS5lbmNvZGluZz09PSJQTEFJTl9ESUNUSU9OQVJZInx8QS5lbmNvZGluZz09PSJSTEVfRElDVElPTkFSWSIpe2NvbnN0IHY9RS5nZXRVaW50OChnLm9mZnNldCsrKTtjPW5ldyBBcnJheShJKSxuZShnLHYsdy0xLGMpfWVsc2UgaWYoQS5lbmNvZGluZz09PSJERUxUQV9CSU5BUllfUEFDS0VEIiljPWw9PT0iSU5UMzIiP25ldyBJbnQzMkFycmF5KEkpOm5ldyBCaWdJbnQ2NEFycmF5KEkpLHhlKGcsSSxjKTtlbHNlIGlmKEEuZW5jb2Rpbmc9PT0iREVMVEFfTEVOR1RIX0JZVEVfQVJSQVkiKWM9bmV3IEFycmF5KEkpLE1uKGcsSSxjKTtlbHNlIGlmKEEuZW5jb2Rpbmc9PT0iREVMVEFfQllURV9BUlJBWSIpYz1uZXcgQXJyYXkoSSksSG4oZyxJLGMpO2Vsc2UgaWYoQS5lbmNvZGluZz09PSJCWVRFX1NUUkVBTV9TUExJVCIpe2NvbnN0e3R5cGVfbGVuZ3RoOnZ9PW5bbi5sZW5ndGgtMV0uZWxlbWVudDtjPVV0KGYsSSxsLHYpfWVsc2UgdGhyb3cgbmV3IEVycm9yKGBwYXJxdWV0IHVuc3VwcG9ydGVkIGVuY29kaW5nOiAke0EuZW5jb2Rpbmd9YCk7cmV0dXJue2RlZmluaXRpb25MZXZlbHM6dSxyZXBldGl0aW9uTGV2ZWxzOmEsZGF0YVBhZ2U6Y319ZnVuY3Rpb24gVm4oZSx0LG4pe2NvbnN0IHI9QnQobik7aWYoIXIpcmV0dXJuW107Y29uc3QgaT1uZXcgQXJyYXkodC5udW1fdmFsdWVzKTtyZXR1cm4gbmUoZSxGZShyKSx0LnJlcGV0aXRpb25fbGV2ZWxzX2J5dGVfbGVuZ3RoLGkpLGl9ZnVuY3Rpb24gR24oZSx0LG4pe2NvbnN0IHI9UWUobik7aWYocil7Y29uc3QgaT1uZXcgQXJyYXkodC5udW1fdmFsdWVzKTtyZXR1cm4gbmUoZSxGZShyKSx0LmRlZmluaXRpb25fbGV2ZWxzX2J5dGVfbGVuZ3RoLGkpLGl9fWZ1bmN0aW9uIFpuKGUpe2NvbnN0IHQ9eXQoZSksbj1jdFt0LmZpZWxkXzFdLHI9dC5maWVsZF8yLGk9dC5maWVsZF8zLG89dC5maWVsZF80LGY9dC5maWVsZF81JiZ7bnVtX3ZhbHVlczp0LmZpZWxkXzUuZmllbGRfMSxlbmNvZGluZzplZVt0LmZpZWxkXzUuZmllbGRfMl0sZGVmaW5pdGlvbl9sZXZlbF9lbmNvZGluZzplZVt0LmZpZWxkXzUuZmllbGRfM10scmVwZXRpdGlvbl9sZXZlbF9lbmNvZGluZzplZVt0LmZpZWxkXzUuZmllbGRfNF0sc3RhdGlzdGljczp0LmZpZWxkXzUuZmllbGRfNSYme21heDp0LmZpZWxkXzUuZmllbGRfNS5maWVsZF8xLG1pbjp0LmZpZWxkXzUuZmllbGRfNS5maWVsZF8yLG51bGxfY291bnQ6dC5maWVsZF81LmZpZWxkXzUuZmllbGRfMyxkaXN0aW5jdF9jb3VudDp0LmZpZWxkXzUuZmllbGRfNS5maWVsZF80LG1heF92YWx1ZTp0LmZpZWxkXzUuZmllbGRfNS5maWVsZF81LG1pbl92YWx1ZTp0LmZpZWxkXzUuZmllbGRfNS5maWVsZF82fX0scz10LmZpZWxkXzYsbD10LmZpZWxkXzcmJntudW1fdmFsdWVzOnQuZmllbGRfNy5maWVsZF8xLGVuY29kaW5nOmVlW3QuZmllbGRfNy5maWVsZF8yXSxpc19zb3J0ZWQ6dC5maWVsZF83LmZpZWxkXzN9LEE9dC5maWVsZF84JiZ7bnVtX3ZhbHVlczp0LmZpZWxkXzguZmllbGRfMSxudW1fbnVsbHM6dC5maWVsZF84LmZpZWxkXzIsbnVtX3Jvd3M6dC5maWVsZF84LmZpZWxkXzMsZW5jb2Rpbmc6ZWVbdC5maWVsZF84LmZpZWxkXzRdLGRlZmluaXRpb25fbGV2ZWxzX2J5dGVfbGVuZ3RoOnQuZmllbGRfOC5maWVsZF81LHJlcGV0aXRpb25fbGV2ZWxzX2J5dGVfbGVuZ3RoOnQuZmllbGRfOC5maWVsZF82LGlzX2NvbXByZXNzZWQ6dC5maWVsZF84LmZpZWxkXzc9PT12b2lkIDA/ITA6dC5maWVsZF84LmZpZWxkXzcsc3RhdGlzdGljczp0LmZpZWxkXzguZmllbGRfOH07cmV0dXJue3R5cGU6bix1bmNvbXByZXNzZWRfcGFnZV9zaXplOnIsY29tcHJlc3NlZF9wYWdlX3NpemU6aSxjcmM6byxkYXRhX3BhZ2VfaGVhZGVyOmYsaW5kZXhfcGFnZV9oZWFkZXI6cyxkaWN0aW9uYXJ5X3BhZ2VfaGVhZGVyOmwsZGF0YV9wYWdlX2hlYWRlcl92MjpBfX1mdW5jdGlvbiBLZShlLHQpe2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cis9MWU0KWUucHVzaCguLi50LnNsaWNlKHIscisxZTQpKX1hc3luYyBmdW5jdGlvbiB6bihlKXtyZXR1cm4gYXdhaXQgZmV0Y2goZSx7bWV0aG9kOiJIRUFEIn0pLnRoZW4odD0+e2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcihgZmV0Y2ggaGVhZCBmYWlsZWQgJHt0LnN0YXR1c31gKTtjb25zdCBuPXQuaGVhZGVycy5nZXQoIkNvbnRlbnQtTGVuZ3RoIik7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nIGNvbnRlbnQgbGVuZ3RoIik7cmV0dXJuIHBhcnNlSW50KG4pfSl9YXN5bmMgZnVuY3Rpb24gS24oZSx0KXtyZXR1cm4gdHx8KHQ9YXdhaXQgem4oZSkpLHtieXRlTGVuZ3RoOnQsYXN5bmMgc2xpY2UobixyKXtjb25zdCBpPW5ldyBIZWFkZXJzLG89cj09PXZvaWQgMD8iIjpyLTE7aS5zZXQoIlJhbmdlIixgYnl0ZXM9JHtufS0ke299YCk7Y29uc3QgZj1hd2FpdCBmZXRjaChlLHtoZWFkZXJzOml9KTtpZighZi5va3x8IWYuYm9keSl0aHJvdyBuZXcgRXJyb3IoYGZldGNoIGZhaWxlZCAke2Yuc3RhdHVzfWApO3JldHVybiBmLmFycmF5QnVmZmVyKCl9fX1mdW5jdGlvbiBKbihlLHQsbixyLHtjb21wcmVzc29yczppLHV0Zjg6b30pe2NvbnN0e2VsZW1lbnQ6Zn09cltyLmxlbmd0aC0xXTtsZXQgcztjb25zdCBsPVtdO2Zvcig7bC5sZW5ndGg8dDspe2NvbnN0IEE9Wm4oZSksYT1uZXcgVWludDhBcnJheShlLnZpZXcuYnVmZmVyLGUudmlldy5ieXRlT2Zmc2V0K2Uub2Zmc2V0LEEuY29tcHJlc3NlZF9wYWdlX3NpemUpO2xldCB1O2lmKEEudHlwZT09PSJEQVRBX1BBR0UiKXtjb25zdCB3PUEuZGF0YV9wYWdlX2hlYWRlcjtpZighdyl0aHJvdyBuZXcgRXJyb3IoInBhcnF1ZXQgZGF0YSBwYWdlIGhlYWRlciBpcyB1bmRlZmluZWQiKTtjb25zdCBoPXplKGEsTnVtYmVyKEEudW5jb21wcmVzc2VkX3BhZ2Vfc2l6ZSksbi5jb2RlYyxpKSx7ZGVmaW5pdGlvbkxldmVsczpFLHJlcGV0aXRpb25MZXZlbHM6ZyxkYXRhUGFnZTpjfT1QbihoLHcscixuKTtpZih1PXV0KGMscyxmLHcuZW5jb2RpbmcsbyksZy5sZW5ndGh8fEUhPW51bGwmJkUubGVuZ3RoKXtjb25zdCBJPVFlKHIpLHY9ci5tYXAoKHtlbGVtZW50OkJ9KT0+Qi5yZXBldGl0aW9uX3R5cGUpO1F0KGwsRSxnLHUsdixJKX1lbHNle2ZvcihsZXQgST0yO0k8ci5sZW5ndGg7SSsrKXJbSV0uZWxlbWVudC5yZXBldGl0aW9uX3R5cGUhPT0iUkVRVUlSRUQiJiYodT1BcnJheS5mcm9tKHUsdj0+W3ZdKSk7S2UobCx1KX19ZWxzZSBpZihBLnR5cGU9PT0iREFUQV9QQUdFX1YyIil7Y29uc3Qgdz1BLmRhdGFfcGFnZV9oZWFkZXJfdjI7aWYoIXcpdGhyb3cgbmV3IEVycm9yKCJwYXJxdWV0IGRhdGEgcGFnZSBoZWFkZXIgdjIgaXMgdW5kZWZpbmVkIik7Y29uc3R7ZGVmaW5pdGlvbkxldmVsczpoLHJlcGV0aXRpb25MZXZlbHM6RSxkYXRhUGFnZTpnfT1PbihhLEEscixuLGkpO2lmKHU9dXQoZyxzLGYsdy5lbmNvZGluZyxvKSxFLmxlbmd0aHx8aCE9bnVsbCYmaC5sZW5ndGgpe2NvbnN0IGM9UWUociksST1yLm1hcCgoe2VsZW1lbnQ6dn0pPT52LnJlcGV0aXRpb25fdHlwZSk7UXQobCxoLEUsdSxJLGMpfWVsc2UgS2UobCx1KX1lbHNlIGlmKEEudHlwZT09PSJESUNUSU9OQVJZX1BBR0UiKXtjb25zdCB3PUEuZGljdGlvbmFyeV9wYWdlX2hlYWRlcjtpZighdyl0aHJvdyBuZXcgRXJyb3IoInBhcnF1ZXQgZGljdGlvbmFyeSBwYWdlIGhlYWRlciBpcyB1bmRlZmluZWQiKTtjb25zdCBoPXplKGEsTnVtYmVyKEEudW5jb21wcmVzc2VkX3BhZ2Vfc2l6ZSksbi5jb2RlYyxpKTtzPVRuKGgsdyxuLGYudHlwZV9sZW5ndGgpfWVsc2UgdGhyb3cgbmV3IEVycm9yKGBwYXJxdWV0IHVuc3VwcG9ydGVkIHBhZ2UgdHlwZTogJHtBLnR5cGV9YCk7ZS5vZmZzZXQrPUEuY29tcHJlc3NlZF9wYWdlX3NpemV9aWYobC5sZW5ndGg8dCl0aHJvdyBuZXcgRXJyb3IoYHBhcnF1ZXQgcm93IGRhdGEgbGVuZ3RoICR7bC5sZW5ndGh9IGRvZXMgbm90IG1hdGNoIHJvdyBncm91cCBsaW1pdCAke3R9fWApO3JldHVybiBsLmxlbmd0aD50JiYobC5sZW5ndGg9dCksbH1mdW5jdGlvbiBGdCh7ZGljdGlvbmFyeV9wYWdlX29mZnNldDplLGRhdGFfcGFnZV9vZmZzZXQ6dCx0b3RhbF9jb21wcmVzc2VkX3NpemU6bn0pe2xldCByPWU7cmV0dXJuKCFyfHx0PHIpJiYocj10KSxbcixyK25dfWFzeW5jIGZ1bmN0aW9uIFhuKGUpe2lmKCFlLmZpbGUpdGhyb3cgbmV3IEVycm9yKCJwYXJxdWV0IGZpbGUgaXMgcmVxdWlyZWQiKTtpZihlLm1ldGFkYXRhfHwoZS5tZXRhZGF0YT1hd2FpdCBHZShlLmZpbGUpKSwhZS5tZXRhZGF0YSl0aHJvdyBuZXcgRXJyb3IoInBhcnF1ZXQgbWV0YWRhdGEgbm90IGZvdW5kIik7Y29uc3R7bWV0YWRhdGE6dCxvbkNvbXBsZXRlOm4scm93RW5kOnJ9PWUsaT1lLnJvd1N0YXJ0fHwwLG89W107bGV0IGY9MDtmb3IoY29uc3QgcyBvZiB0LnJvd19ncm91cHMpe2NvbnN0IGw9TnVtYmVyKHMubnVtX3Jvd3MpO2lmKGYrbD49aSYmKHI9PT12b2lkIDB8fGY8cikpe2NvbnN0IEE9ciYmci1mLGE9YXdhaXQgam4oZSxzLGYsQSk7aWYobil7Y29uc3QgdT1NYXRoLm1heChpLWYsMCksdz1yPT09dm9pZCAwP3ZvaWQgMDpyLWY7S2UobyxhLnNsaWNlKHUsdykpfX1mKz1sfW4mJm4obyl9YXN5bmMgZnVuY3Rpb24gam4oZSx0LG4scil7Y29uc3R7ZmlsZTppLG1ldGFkYXRhOm8sY29sdW1uczpmfT1lO2lmKCFvKXRocm93IG5ldyBFcnJvcigicGFycXVldCBtZXRhZGF0YSBub3QgZm91bmQiKTsocj09PXZvaWQgMHx8cj50Lm51bV9yb3dzKSYmKHI9TnVtYmVyKHQubnVtX3Jvd3MpKTtsZXRbcyxsXT1baS5ieXRlTGVuZ3RoLDBdO2lmKHQuY29sdW1ucy5mb3JFYWNoKCh7bWV0YV9kYXRhOkV9KT0+e2lmKCFFKXRocm93IG5ldyBFcnJvcigicGFycXVldCBjb2x1bW4gbWV0YWRhdGEgaXMgdW5kZWZpbmVkIik7aWYoZiYmIWYuaW5jbHVkZXMoRS5wYXRoX2luX3NjaGVtYVswXSkpcmV0dXJuO2NvbnN0W2csY109RnQoRSkubWFwKE51bWJlcik7cz1NYXRoLm1pbihzLGcpLGw9TWF0aC5tYXgobCxjKX0pLHM+PWwmJihmIT1udWxsJiZmLmxlbmd0aCkpdGhyb3cgbmV3IEVycm9yKGBwYXJxdWV0IGNvbHVtbnMgbm90IGZvdW5kOiAke2Yuam9pbigiLCAiKX1gKTtsZXQgQTtsLXM8PTE8PDI1JiYoQT1hd2FpdCBpLnNsaWNlKHMsbCkpO2NvbnN0IGE9W10se2NoaWxkcmVuOnV9PUV0KG8uc2NoZW1hLFtdKVswXSx3PW5ldyBNYXAodS5tYXAoRT0+W0UuZWxlbWVudC5uYW1lLFN0KEUpXSkpLGg9bmV3IE1hcDtmb3IobGV0IEU9MDtFPHQuY29sdW1ucy5sZW5ndGg7RSsrKXtjb25zdCBnPXQuY29sdW1uc1tFXS5tZXRhX2RhdGE7aWYoIWcpdGhyb3cgbmV3IEVycm9yKCJwYXJxdWV0IGNvbHVtbiBtZXRhZGF0YSBpcyB1bmRlZmluZWQiKTtjb25zdCBjPWcucGF0aF9pbl9zY2hlbWFbMF07aWYoZiYmIWYuaW5jbHVkZXMoYykpY29udGludWU7Y29uc3RbSSx2XT1GdChnKS5tYXAoTnVtYmVyKSxCPXYtSTtpZihCPjE8PDMwKXtjb25zb2xlLndhcm4oYHBhcnF1ZXQgc2tpcHBpbmcgaHVnZSBjb2x1bW4gIiR7Zy5wYXRoX2luX3NjaGVtYX0iICR7Qi50b0xvY2FsZVN0cmluZygpfSBieXRlc2ApO2NvbnRpbnVlfWxldCBRLGI9MDtBPyhRPVByb21pc2UucmVzb2x2ZShBKSxiPUktcyk6UT1Qcm9taXNlLnJlc29sdmUoaS5zbGljZShJLHYpKSxhLnB1c2goUS50aGVuKEM9Pnt2YXIgTjtjb25zdCBMPUV0KG8uc2NoZW1hLGcucGF0aF9pbl9zY2hlbWEpLFA9e3ZpZXc6bmV3IERhdGFWaWV3KEMpLG9mZnNldDpifTtsZXQgeD1KbihQLHIsZyxMLGUpO2NvbnN0IFM9Zy5wYXRoX2luX3NjaGVtYS5qb2luKCIuIik7aC5zZXQoUyx4KSx4PXZvaWQgMDtjb25zdCBZPXcuZ2V0KGMpO2lmKFkhPW51bGwmJlkuZXZlcnkoVD0+aC5oYXMoVCkpJiYoZGUoaCxMWzFdKSx4PWguZ2V0KGMpLCF4KSl0aHJvdyBuZXcgRXJyb3IoYHBhcnF1ZXQgY29sdW1uIGRhdGEgbm90IGFzc2VtYmxlZDogJHtjfWApO3gmJigoTj1lLm9uQ2h1bmspPT1udWxsfHxOLmNhbGwoZSx7Y29sdW1uTmFtZTpjLGNvbHVtbkRhdGE6eCxyb3dTdGFydDpuLHJvd0VuZDpuK3gubGVuZ3RofSkpfSkpfWlmKGF3YWl0IFByb21pc2UuYWxsKGEpLGUub25Db21wbGV0ZSl7Y29uc3QgRT1uZXcgQXJyYXkociksZz11Lm1hcCh2PT52LmVsZW1lbnQubmFtZSkuZmlsdGVyKHY9PiFmfHxmLmluY2x1ZGVzKHYpKSxjPWZ8fGcsST1jLm1hcCh2PT5nLmluY2x1ZGVzKHYpP2guZ2V0KHYpOnZvaWQgMCk7Zm9yKGxldCB2PTA7djxyO3YrKylpZihlLnJvd0Zvcm1hdD09PSJvYmplY3QiKXtjb25zdCBCPXt9O2MuZm9yRWFjaCgoUSxiKT0+e3ZhciBDO0JbUV09KEM9SVtiXSk9PW51bGw/dm9pZCAwOkNbdl19KSxFW3ZdPUJ9ZWxzZSBFW3ZdPUkubWFwKEI9PkI9PW51bGw/dm9pZCAwOkJbdl0pO3JldHVybiBFfXJldHVybltdfWZ1bmN0aW9uIFN0KGUsdD1bXSl7aWYoZS5jaGlsZHJlbi5sZW5ndGgpZm9yKGNvbnN0IG4gb2YgZS5jaGlsZHJlbilTdChuLHQpO2Vsc2UgdC5wdXNoKGUucGF0aC5qb2luKCIuIikpO3JldHVybiB0fWFzeW5jIGZ1bmN0aW9uIHh0KGUpe2NvbnN0e2ZpbGU6dCxyb3dTdGFydDpuLHJvd0VuZDpyLG9yZGVyQnk6aX09ZTtpZihlLm1ldGFkYXRhfHwoZS5tZXRhZGF0YT1hd2FpdCBHZSh0KSksdHlwZW9mIGk9PSJzdHJpbmciKXtjb25zdCBvPWF3YWl0IEplKHsuLi5lLHJvd1N0YXJ0OnZvaWQgMCxyb3dFbmQ6dm9pZCAwLGNvbHVtbnM6W2ldfSksZj1BcnJheS5mcm9tKG8sKEEsYSk9PmEpLnNvcnQoKEEsYSk9PiRuKG9bQV1baV0sb1thXVtpXSkpLnNsaWNlKG4scikscz1hd2FpdCBfbih7Li4uZSxyb3dzOmZ9KTtyZXR1cm4gZi5tYXAoQT0+c1tBXSl9ZWxzZSByZXR1cm4gYXdhaXQgSmUoZSl9YXN5bmMgZnVuY3Rpb24gX24oZSl7Y29uc3R7ZmlsZTp0LHJvd3M6bn09ZTtlLm1ldGFkYXRhfHwoZS5tZXRhZGF0YT1hd2FpdCBHZSh0KSk7Y29uc3R7cm93X2dyb3VwczpyfT1lLm1ldGFkYXRhLGk9QXJyYXkoci5sZW5ndGgpLmZpbGwoITEpO2xldCBvPTA7Y29uc3QgZj1yLm1hcChhPT5vKz1OdW1iZXIoYS5udW1fcm93cykpO2Zvcihjb25zdCBhIG9mIG4pe2NvbnN0IHU9Zi5maW5kSW5kZXgodz0+YTx3KTtpW3VdPSEwfWNvbnN0IHM9W107bGV0IGw7bz0wO2ZvcihsZXQgYT0wO2E8aS5sZW5ndGg7YSsrKXtjb25zdCB1PW8rTnVtYmVyKHJbYV0ubnVtX3Jvd3MpO2lbYV0/bD09PXZvaWQgMCYmKGw9byk6bCE9PXZvaWQgMCYmKHMucHVzaChbbCx1XSksbD12b2lkIDApLG89dX1sIT09dm9pZCAwJiZzLnB1c2goW2wsb10pO2NvbnN0IEE9bmV3IEFycmF5KE51bWJlcihlLm1ldGFkYXRhLm51bV9yb3dzKSk7Zm9yKGNvbnN0W2EsdV1vZiBzKXtjb25zdCB3PWF3YWl0IEplKHsuLi5lLHJvd1N0YXJ0OmEscm93RW5kOnV9KTtmb3IobGV0IGg9YTtoPHU7aCsrKUFbaF09d1toLWFdLEFbaF0uX19pbmRleF9fPWh9cmV0dXJuIEF9ZnVuY3Rpb24gJG4oZSx0KXtyZXR1cm4gZTx0Py0xOihlPnQsMSl9ZnVuY3Rpb24gZXIoe2J5dGVMZW5ndGg6ZSxzbGljZTp0fSl7Y29uc3Qgbj1uZXcgTWFwO3JldHVybntieXRlTGVuZ3RoOmUsc2xpY2UocixpKXtjb25zdCBvPXRyKHIsaSxlKSxmPW4uZ2V0KG8pO2lmKGYpcmV0dXJuIGY7Y29uc3Qgcz10KHIsaSk7cmV0dXJuIG4uc2V0KG8scyksc319fWZ1bmN0aW9uIHRyKGUsdCxuKXtpZihlPDApe2lmKHQhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHN1ZmZpeCByYW5nZSBbJHtlfSwgJHt0fV1gKTtyZXR1cm4gbj09PXZvaWQgMD9gJHtlfSxgOmAke24rZX0sJHtufWB9ZWxzZSBpZih0IT09dm9pZCAwKXtpZihlPnQpdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGVtcHR5IHJhbmdlIFske2V9LCAke3R9XWApO3JldHVybmAke2V9LCR7dH1gfWVsc2UgcmV0dXJuIG49PT12b2lkIDA/YCR7ZX0sYDpgJHtlfSwke259YH1mdW5jdGlvbiBKZShlKXtyZXR1cm4gbmV3IFByb21pc2UoKHQsbik9PntYbih7cm93Rm9ybWF0OiJvYmplY3QiLC4uLmUsb25Db21wbGV0ZTp0fSkuY2F0Y2gobil9KX12YXIgbnI9QXJyYXlCdWZmZXIsRD1VaW50OEFycmF5LFJlPVVpbnQxNkFycmF5LHJyPUludDE2QXJyYXksTmU9SW50MzJBcnJheSxYZT1mdW5jdGlvbihlLHQsbil7aWYoRC5wcm90b3R5cGUuc2xpY2UpcmV0dXJuIEQucHJvdG90eXBlLnNsaWNlLmNhbGwoZSx0LG4pOyh0PT1udWxsfHx0PDApJiYodD0wKSwobj09bnVsbHx8bj5lLmxlbmd0aCkmJihuPWUubGVuZ3RoKTt2YXIgcj1uZXcgRChuLXQpO3JldHVybiByLnNldChlLnN1YmFycmF5KHQsbikpLHJ9LGdlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKEQucHJvdG90eXBlLmZpbGwpcmV0dXJuIEQucHJvdG90eXBlLmZpbGwuY2FsbChlLHQsbixyKTtmb3IoKG49PW51bGx8fG48MCkmJihuPTApLChyPT1udWxsfHxyPmUubGVuZ3RoKSYmKHI9ZS5sZW5ndGgpO248cjsrK24pZVtuXT10O3JldHVybiBlfSxpcj1mdW5jdGlvbihlLHQsbixyKXtpZihELnByb3RvdHlwZS5jb3B5V2l0aGluKXJldHVybiBELnByb3RvdHlwZS5jb3B5V2l0aGluLmNhbGwoZSx0LG4scik7Zm9yKChuPT1udWxsfHxuPDApJiYobj0wKSwocj09bnVsbHx8cj5lLmxlbmd0aCkmJihyPWUubGVuZ3RoKTtuPHI7KWVbdCsrXT1lW24rK119LG9yPVsiaW52YWxpZCB6c3RkIGRhdGEiLCJ3aW5kb3cgc2l6ZSB0b28gbGFyZ2UgKD4yMDQ2TUIpIiwiaW52YWxpZCBibG9jayB0eXBlIiwiRlNFIGFjY3VyYWN5IHRvbyBoaWdoIiwibWF0Y2ggZGlzdGFuY2UgdG9vIGZhciBiYWNrIiwidW5leHBlY3RlZCBFT0YiXSxrPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uZXcgRXJyb3IodHx8b3JbZV0pO2lmKHIuY29kZT1lLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShyLGspLCFuKXRocm93IHI7cmV0dXJuIHJ9LFJ0PWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MCxpPTA7cjxuOysrcilpfD1lW3QrK108PChyPDwzKTtyZXR1cm4gaX0sZnI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oZVt0XXxlW3QrMV08PDh8ZVt0KzJdPDwxNnxlW3QrM108PDI0KT4+PjB9LHNyPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZVswXXxlWzFdPDw4fGVbMl08PDE2O2lmKG49PTMxMjY1NjgmJmVbM109PTI1Myl7dmFyIHI9ZVs0XSxpPXI+PjUmMSxvPXI+PjImMSxmPXImMyxzPXI+PjY7ciY4JiZrKDApO3ZhciBsPTYtaSxBPWY9PTM/NDpmLGE9UnQoZSxsLEEpO2wrPUE7dmFyIHU9cz8xPDxzOmksdz1SdChlLGwsdSkrKHM9PTEmJjI1NiksaD13O2lmKCFpKXt2YXIgRT0xPDwxMCsoZVs1XT4+Myk7aD1FKyhFPj4zKSooZVs1XSY3KX1oPjIxNDUzODY0OTYmJmsoMSk7dmFyIGc9bmV3IEQoKHQ9PTE/d3x8aDp0PzA6aCkrMTIpO3JldHVybiBnWzBdPTEsZ1s0XT00LGdbOF09OCx7YjpsK3UseTowLGw6MCxkOmEsdzp0JiZ0IT0xP3Q6Zy5zdWJhcnJheSgxMiksZTpoLG86bmV3IE5lKGcuYnVmZmVyLDAsMyksdTp3LGM6byxtOk1hdGgubWluKDEzMTA3MixoKX19ZWxzZSBpZigobj4+NHxlWzNdPDwyMCk9PTI1NDgxODkzKXJldHVybiBmcihlLDQpKzg7aygwKX0scmU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7MTw8dDw9ZTsrK3QpO3JldHVybiB0LTF9LGhlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0odDw8MykrNCxpPShlW3RdJjE1KSs1O2k+biYmaygzKTtmb3IodmFyIG89MTw8aSxmPW8scz0tMSxsPS0xLEE9LTEsYT1vLHU9bmV3IG5yKDUxMisobzw8MikpLHc9bmV3IHJyKHUsMCwyNTYpLGg9bmV3IFJlKHUsMCwyNTYpLEU9bmV3IFJlKHUsNTEyLG8pLGc9NTEyKyhvPDwxKSxjPW5ldyBEKHUsZyxvKSxJPW5ldyBEKHUsZytvKTtzPDI1NSYmZj4wOyl7dmFyIHY9cmUoZisxKSxCPXI+PjMsUT0oMTw8disxKS0xLGI9KGVbQl18ZVtCKzFdPDw4fGVbQisyXTw8MTYpPj4ociY3KSZRLEM9KDE8PHYpLTEsTD1RLWYtMSxQPWImQztpZihQPEw/KHIrPXYsYj1QKToocis9disxLGI+QyYmKGItPUwpKSx3Wysrc109LS1iLGI9PS0xPyhmKz1iLGNbLS1hXT1zKTpmLT1iLCFiKWRve3ZhciB4PXI+PjM7bD0oZVt4XXxlW3grMV08PDgpPj4ociY3KSYzLHIrPTIscys9bH13aGlsZShsPT0zKX0ocz4yNTV8fGYpJiZrKDApO2Zvcih2YXIgUz0wLFk9KG8+PjEpKyhvPj4zKSszLE49by0xLFQ9MDtUPD1zOysrVCl7dmFyIEY9d1tUXTtpZihGPDEpe2hbVF09LUY7Y29udGludWV9Zm9yKEE9MDtBPEY7KytBKXtjW1NdPVQ7ZG8gUz1TK1kmTjt3aGlsZShTPj1hKX19Zm9yKFMmJmsoMCksQT0wO0E8bzsrK0Epe3ZhciBVPWhbY1tBXV0rKyxNPUlbQV09aS1yZShVKTtFW0FdPShVPDxNKS1vfXJldHVybltyKzc+PjMse2I6aSxzOmMsbjpJLHQ6RX1dfSxBcj1mdW5jdGlvbihlLHQpe3ZhciBuPTAscj0tMSxpPW5ldyBEKDI5Miksbz1lW3RdLGY9aS5zdWJhcnJheSgwLDI1Nikscz1pLnN1YmFycmF5KDI1NiwyNjgpLGw9bmV3IFJlKGkuYnVmZmVyLDI2OCk7aWYobzwxMjgpe3ZhciBBPWhlKGUsdCsxLDYpLGE9QVswXSx1PUFbMV07dCs9bzt2YXIgdz1hPDwzLGg9ZVt0XTtofHxrKDApO2Zvcih2YXIgRT0wLGc9MCxjPXUuYixJPWMsdj0oKyt0PDwzKS04K3JlKGgpO3YtPWMsISh2PHcpOyl7dmFyIEI9dj4+MztpZihFKz0oZVtCXXxlW0IrMV08PDgpPj4odiY3KSYoMTw8YyktMSxmWysrcl09dS5zW0VdLHYtPUksdjx3KWJyZWFrO0I9dj4+MyxnKz0oZVtCXXxlW0IrMV08PDgpPj4odiY3KSYoMTw8SSktMSxmWysrcl09dS5zW2ddLGM9dS5uW0VdLEU9dS50W0VdLEk9dS5uW2ddLGc9dS50W2ddfSsrcj4yNTUmJmsoMCl9ZWxzZXtmb3Iocj1vLTEyNztuPHI7bis9Mil7dmFyIFE9ZVsrK3RdO2Zbbl09UT4+NCxmW24rMV09USYxNX0rK3R9dmFyIGI9MDtmb3Iobj0wO248cjsrK24pe3ZhciBDPWZbbl07Qz4xMSYmaygwKSxiKz1DJiYxPDxDLTF9dmFyIEw9cmUoYikrMSxQPTE8PEwseD1QLWI7Zm9yKHgmeC0xJiZrKDApLGZbcisrXT1yZSh4KSsxLG49MDtuPHI7KytuKXt2YXIgQz1mW25dOysrc1tmW25dPUMmJkwrMS1DXX12YXIgUz1uZXcgRChQPDwxKSxZPVMuc3ViYXJyYXkoMCxQKSxOPVMuc3ViYXJyYXkoUCk7Zm9yKGxbTF09MCxuPUw7bj4wOy0tbil7dmFyIFQ9bFtuXTtnZShOLG4sVCxsW24tMV09VCtzW25dKigxPDxMLW4pKX1mb3IobFswXSE9UCYmaygwKSxuPTA7bjxyOysrbil7dmFyIEY9ZltuXTtpZihGKXt2YXIgVT1sW0ZdO2dlKFksbixVLGxbRl09VSsoMTw8TC1GKSl9fXJldHVyblt0LHtuOk4sYjpMLHM6WX1dfSxscj1oZShuZXcgRChbODEsMTYsOTksMTQwLDQ5LDE5OCwyNCw5OSwxMiwzMywxOTYsMjQsOTksMTAyLDEwMiwxMzQsNzAsMTQ2LDRdKSwwLDYpWzFdLGFyPWhlKG5ldyBEKFszMywyMCwxOTYsMjQsOTksMTQwLDMzLDEzMiwxNiw2Niw4LDMzLDEzMiwxNiw2Niw4LDMzLDY4LDY4LDY4LDY4LDY4LDY4LDY4LDY4LDM2LDldKSwwLDYpWzFdLGNyPWhlKG5ldyBEKFszMiwxMzIsMTYsNjYsMTAyLDcwLDY4LDY4LDY4LDY4LDM2LDczLDJdKSwwLDUpWzFdLE50PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPWUubGVuZ3RoLHI9bmV3IE5lKG4pLGk9MDtpPG47KytpKXJbaV09dCx0Kz0xPDxlW2ldO3JldHVybiByfSxqZT1uZXcgRChuZXcgTmUoWzAsMCwwLDAsMTY4NDMwMDksNTA1Mjg3NzAsMTM0Njc4MDIwLDIwMjA1MDA1NywyNjk0MjIwOTNdKS5idWZmZXIsMCwzNiksd3I9TnQoamUsMCksX2U9bmV3IEQobmV3IE5lKFswLDAsMCwwLDAsMCwwLDAsMTY4NDMwMDksNTA1Mjg3NzAsMTE3NzY5MjIwLDE4NTIwNzA0OCwyNTI1NzkwODQsMTZdKS5idWZmZXIsMCw1MyksdXI9TnQoX2UsMyksSWU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUubGVuZ3RoLGk9dC5sZW5ndGgsbz1lW3ItMV0sZj0oMTw8bi5iKS0xLHM9LW4uYjtvfHxrKDApO2Zvcih2YXIgbD0wLEE9bi5iLGE9KHI8PDMpLTgrcmUobyktQSx1PS0xO2E+cyYmdTxpOyl7dmFyIHc9YT4+MyxoPShlW3ddfGVbdysxXTw8OHxlW3crMl08PDE2KT4+KGEmNyk7bD0obDw8QXxoKSZmLHRbKyt1XT1uLnNbbF0sYS09QT1uLm5bbF19KGEhPXN8fHUrMSE9aSkmJmsoMCl9LGRyPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj02LGk9dC5sZW5ndGgsbz1pKzM+PjIsZj1vPDwxLHM9bytmO0llKGUuc3ViYXJyYXkocixyKz1lWzBdfGVbMV08PDgpLHQuc3ViYXJyYXkoMCxvKSxuKSxJZShlLnN1YmFycmF5KHIscis9ZVsyXXxlWzNdPDw4KSx0LnN1YmFycmF5KG8sZiksbiksSWUoZS5zdWJhcnJheShyLHIrPWVbNF18ZVs1XTw8OCksdC5zdWJhcnJheShmLHMpLG4pLEllKGUuc3ViYXJyYXkociksdC5zdWJhcnJheShzKSxuKX0sZ3I9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9dC5iLG89ZVtpXSxmPW8+PjEmMzt0Lmw9byYxO3ZhciBzPW8+PjN8ZVtpKzFdPDw1fGVbaSsyXTw8MTMsbD0oaSs9MykrcztpZihmPT0xKXJldHVybiBpPj1lLmxlbmd0aD92b2lkIDA6KHQuYj1pKzEsbj8oZ2UobixlW2ldLHQueSx0LnkrPXMpLG4pOmdlKG5ldyBEKHMpLGVbaV0pKTtpZighKGw+ZS5sZW5ndGgpKXtpZihmPT0wKXJldHVybiB0LmI9bCxuPyhuLnNldChlLnN1YmFycmF5KGksbCksdC55KSx0LnkrPXMsbik6WGUoZSxpLGwpO2lmKGY9PTIpe3ZhciBBPWVbaV0sYT1BJjMsdT1BPj4yJjMsdz1BPj40LGg9MCxFPTA7YTwyP3UmMT93fD1lWysraV08PDR8KHUmMiYmZVsrK2ldPDwxMik6dz1BPj4zOihFPXUsdTwyPyh3fD0oZVsrK2ldJjYzKTw8NCxoPWVbaV0+PjZ8ZVsrK2ldPDwyKTp1PT0yPyh3fD1lWysraV08PDR8KGVbKytpXSYzKTw8MTIsaD1lW2ldPj4yfGVbKytpXTw8Nik6KHd8PWVbKytpXTw8NHwoZVsrK2ldJjYzKTw8MTIsaD1lW2ldPj42fGVbKytpXTw8MnxlWysraV08PDEwKSksKytpO3ZhciBnPW4/bi5zdWJhcnJheSh0LnksdC55K3QubSk6bmV3IEQodC5tKSxjPWcubGVuZ3RoLXc7aWYoYT09MClnLnNldChlLnN1YmFycmF5KGksaSs9dyksYyk7ZWxzZSBpZihhPT0xKWdlKGcsZVtpKytdLGMpO2Vsc2V7dmFyIEk9dC5oO2lmKGE9PTIpe3ZhciB2PUFyKGUsaSk7aCs9aS0oaT12WzBdKSx0Lmg9ST12WzFdfWVsc2UgSXx8aygwKTsoRT9kcjpJZSkoZS5zdWJhcnJheShpLGkrPWgpLGcuc3ViYXJyYXkoYyksSSl9dmFyIEI9ZVtpKytdO2lmKEIpe0I9PTI1NT9CPShlW2krK118ZVtpKytdPDw4KSszMjUxMjpCPjEyNyYmKEI9Qi0xMjg8PDh8ZVtpKytdKTt2YXIgUT1lW2krK107USYzJiZrKDApO2Zvcih2YXIgYj1bYXIsY3IsbHJdLEM9MjtDPi0xOy0tQyl7dmFyIEw9UT4+KEM8PDEpKzImMztpZihMPT0xKXt2YXIgUD1uZXcgRChbMCwwLGVbaSsrXV0pO2JbQ109e3M6UC5zdWJhcnJheSgyLDMpLG46UC5zdWJhcnJheSgwLDEpLHQ6bmV3IFJlKFAuYnVmZmVyLDAsMSksYjowfX1lbHNlIEw9PTI/KHI9aGUoZSxpLDktKEMmMSkpLGk9clswXSxiW0NdPXJbMV0pOkw9PTMmJih0LnR8fGsoMCksYltDXT10LnRbQ10pfXZhciB4PXQudD1iLFM9eFswXSxZPXhbMV0sTj14WzJdLFQ9ZVtsLTFdO1R8fGsoMCk7dmFyIEY9KGw8PDMpLTgrcmUoVCktTi5iLFU9Rj4+MyxNPTAsZmU9KGVbVV18ZVtVKzFdPDw4KT4+KEYmNykmKDE8PE4uYiktMTtVPShGLT1ZLmIpPj4zO3ZhciBsZT0oZVtVXXxlW1UrMV08PDgpPj4oRiY3KSYoMTw8WS5iKS0xO1U9KEYtPVMuYik+PjM7dmFyIGFlPShlW1VdfGVbVSsxXTw8OCk+PihGJjcpJigxPDxTLmIpLTE7Zm9yKCsrQjstLUI7KXt2YXIgY2U9Ti5zW2ZlXSxrZT1OLm5bZmVdLHllPVMuc1thZV0sdmU9Uy5uW2FlXSxwZT1ZLnNbbGVdLFg9WS5uW2xlXTtVPShGLT1wZSk+PjM7dmFyIENlPTE8PHBlLEc9Q2UrKChlW1VdfGVbVSsxXTw8OHxlW1UrMl08PDE2fGVbVSszXTw8MjQpPj4+KEYmNykmQ2UtMSk7VT0oRi09X2VbeWVdKT4+Mzt2YXIgaj11clt5ZV0rKChlW1VdfGVbVSsxXTw8OHxlW1UrMl08PDE2KT4+KEYmNykmKDE8PF9lW3llXSktMSk7VT0oRi09amVbY2VdKT4+Mzt2YXIgbT13cltjZV0rKChlW1VdfGVbVSsxXTw8OHxlW1UrMl08PDE2KT4+KEYmNykmKDE8PGplW2NlXSktMSk7aWYoVT0oRi09a2UpPj4zLGZlPU4udFtmZV0rKChlW1VdfGVbVSsxXTw8OCk+PihGJjcpJigxPDxrZSktMSksVT0oRi09dmUpPj4zLGFlPVMudFthZV0rKChlW1VdfGVbVSsxXTw8OCk+PihGJjcpJigxPDx2ZSktMSksVT0oRi09WCk+PjMsbGU9WS50W2xlXSsoKGVbVV18ZVtVKzFdPDw4KT4+KEYmNykmKDE8PFgpLTEpLEc+Myl0Lm9bMl09dC5vWzFdLHQub1sxXT10Lm9bMF0sdC5vWzBdPUctPTM7ZWxzZXt2YXIgXz1HLShtIT0wKTtfPyhHPV89PTM/dC5vWzBdLTE6dC5vW19dLF8+MSYmKHQub1syXT10Lm9bMV0pLHQub1sxXT10Lm9bMF0sdC5vWzBdPUcpOkc9dC5vWzBdfWZvcih2YXIgQz0wO0M8bTsrK0MpZ1tNK0NdPWdbYytDXTtNKz1tLGMrPW07dmFyIFo9TS1HO2lmKFo8MCl7dmFyICQ9LVoscWU9dC5lK1o7JD5qJiYoJD1qKTtmb3IodmFyIEM9MDtDPCQ7KytDKWdbTStDXT10LndbcWUrQ107TSs9JCxqLT0kLFo9MH1mb3IodmFyIEM9MDtDPGo7KytDKWdbTStDXT1nW1orQ107TSs9an1pZihNIT1jKWZvcig7YzxnLmxlbmd0aDspZ1tNKytdPWdbYysrXTtlbHNlIE09Zy5sZW5ndGg7bj90LnkrPU06Zz1YZShnLDAsTSl9ZWxzZSBpZihuKXtpZih0LnkrPXcsYylmb3IodmFyIEM9MDtDPHc7KytDKWdbQ109Z1tjK0NdfWVsc2UgYyYmKGc9WGUoZyxjKSk7cmV0dXJuIHQuYj1sLGd9aygyKX19LGhyPWZ1bmN0aW9uKGUsdCl7aWYoZS5sZW5ndGg9PTEpcmV0dXJuIGVbMF07Zm9yKHZhciBuPW5ldyBEKHQpLHI9MCxpPTA7cjxlLmxlbmd0aDsrK3Ipe3ZhciBvPWVbcl07bi5zZXQobyxpKSxpKz1vLmxlbmd0aH1yZXR1cm4gbn07ZnVuY3Rpb24gSXIoZSx0KXtmb3IodmFyIG49W10scj0rIXQsaT0wLG89MDtlLmxlbmd0aDspe3ZhciBmPXNyKGUscnx8dCk7aWYodHlwZW9mIGY9PSJvYmplY3QiKXtmb3Iocj8odD1udWxsLGYudy5sZW5ndGg9PWYudSYmKG4ucHVzaCh0PWYudyksbys9Zi51KSk6KG4ucHVzaCh0KSxmLmU9MCk7IWYubDspe3ZhciBzPWdyKGUsZix0KTtzfHxrKDUpLHQ/Zi5lPWYueToobi5wdXNoKHMpLG8rPXMubGVuZ3RoLGlyKGYudywwLHMubGVuZ3RoKSxmLncuc2V0KHMsZi53Lmxlbmd0aC1zLmxlbmd0aCkpfWk9Zi5iK2YuYyo0fWVsc2UgaT1mO2U9ZS5zdWJhcnJheShpKX1yZXR1cm4gaHIobixvKX1mdW5jdGlvbiBFcigpe2NvbnN0IGU9QnIoKTtyZXR1cm4odCxuKT0+e2NvbnN0e21lbW9yeTpyLHVuY29tcHJlc3M6aX09ZS5leHBvcnRzLG89NjhlMyxmPW8rdC5ieXRlTGVuZ3RoLHM9byt0LmJ5dGVMZW5ndGgrbjtpZihyLmJ1ZmZlci5ieXRlTGVuZ3RoPHMpe2NvbnN0IHU9ci5idWZmZXIuYnl0ZUxlbmd0aC82NTUzNixoPU1hdGguY2VpbChzLzY1NTM2KS11O3IuZ3JvdyhoKX1jb25zdCBsPW5ldyBVaW50OEFycmF5KHIuYnVmZmVyKTtsLnNldCh0LG8pO2NvbnN0IEE9aShvLHQuYnl0ZUxlbmd0aCxmKTtpZihBPT09LTEpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHNuYXBweSBsZW5ndGggaGVhZGVyIik7aWYoQT09PS0yKXRocm93IG5ldyBFcnJvcigibWlzc2luZyBlb2YgbWFya2VyIik7aWYoQT09PS0zKXRocm93IG5ldyBFcnJvcigicHJlbWF0dXJlIGVuZCBvZiBpbnB1dCIpO2lmKEEpdGhyb3cgbmV3IEVycm9yKGBmYWlsZWQgdG8gdW5jb21wcmVzcyBkYXRhICR7QX1gKTtyZXR1cm4gbC5zbGljZShmLGYrbil9fWZ1bmN0aW9uIEJyKCl7Y29uc3QgZT1hdG9iKHlyKSx0PW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrPTEpdFtyXT1lLmNoYXJDb2RlQXQocik7Y29uc3Qgbj1uZXcgV2ViQXNzZW1ibHkuTW9kdWxlKHQpO3JldHVybiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uobil9Y29uc3QgeXI9IkFHRnpiUUVBQUFBQkVBTmdBQUJnQTM5L2Z3Ri9ZQUYvQVg4REJnVUFBUUVCQWdVREFRQUNCajhLZndGQm9Jd0VDMzhBUVlBSUMzOEFRYUFNQzM4QVFhQU1DMzhBUWFDTUJBdC9BRUdBQ0F0L0FFR2dqQVFMZndCQmdJQUlDMzhBUVFBTGZ3QkJBUXNId1FFT0JtMWxiVzl5ZVFJQUVWOWZkMkZ6YlY5allXeHNYMk4wYjNKekFBQUdiV1Z0WTNCNUFBRUhiV1Z0Ylc5MlpRQUNDblZ1WTI5dGNISmxjM01BQXd4ZlgyUnpiMTlvWVc1a2JHVURBUXBmWDJSaGRHRmZaVzVrQXdJTFgxOXpkR0ZqYTE5c2IzY0RBd3hmWDNOMFlXTnJYMmhwWjJnREJBMWZYMmRzYjJKaGJGOWlZWE5sQXdVTFgxOW9aV0Z3WDJKaGMyVURCZ3BmWDJobFlYQmZaVzVrQXdjTlgxOXRaVzF2Y25sZlltRnpaUU1JREY5ZmRHRmliR1ZmWW1GelpRTUpDdUFTQlFJQUM4c0JBUU4vQWtBZ0FrVU5BQUpBQWtBZ0FrRUhjU0lERFFBZ0FDRUVJQUloQlF3QkN5QUFJUVFnQWlFRkEwQWdCQ0FCTFFBQU9nQUFJQVJCQVdvaEJDQUJRUUZxSVFFZ0JVRi9haUVGSUFOQmYyb2lBdzBBQ3dzZ0FrRUlTUTBBQTBBZ0JDQUJMUUFBT2dBQUlBUWdBUzBBQVRvQUFTQUVJQUV0QUFJNkFBSWdCQ0FCTFFBRE9nQURJQVFnQVMwQUJEb0FCQ0FFSUFFdEFBVTZBQVVnQkNBQkxRQUdPZ0FHSUFRZ0FTMEFCem9BQnlBRVFRaHFJUVFnQVVFSWFpRUJJQVZCZUdvaUJRMEFDd3NnQUF1Z0F3RUVmd0pBSUFBZ0FVWU5BQUpBQWtBZ0FDQUJTUTBBSUFFZ0Ftb2lBeUFBU3cwQkN5QUNSUTBCQWtBQ1FDQUNRUWR4SWdNTkFDQUFJUVFnQWlFRkRBRUxJQUFoQkNBQ0lRVURRQ0FFSUFFdEFBQTZBQUFnQkVFQmFpRUVJQUZCQVdvaEFTQUZRWDlxSVFVZ0EwRi9haUlERFFBTEN5QUNRUWhKRFFFRFFDQUVJQUV0QUFBNkFBQWdCQ0FCTFFBQk9nQUJJQVFnQVMwQUFqb0FBaUFFSUFFdEFBTTZBQU1nQkNBQkxRQUVPZ0FFSUFRZ0FTMEFCVG9BQlNBRUlBRXRBQVk2QUFZZ0JDQUJMUUFIT2dBSElBUkJDR29oQkNBQlFRaHFJUUVnQlVGNGFpSUZEUUFNQWdzTElBSkZEUUFDUUFKQUlBSkJBM0VpQkEwQUlBQWdBbW9oQmlBQ0lRVU1BUXNnQWlFRkEwQWdCVUYvYWlJRklBQnFJZ1lnQlNBQmFpSURMUUFBT2dBQUlBUkJmMm9pQkEwQUN3c2dBa0VFU1EwQUlBWkJmR29oQVNBRFFYeHFJUVFEUUNBQlFRTnFJQVJCQTJvdEFBQTZBQUFnQVVFQ2FpQUVRUUpxTFFBQU9nQUFJQUZCQVdvZ0JFRUJhaTBBQURvQUFDQUJJQVF0QUFBNkFBQWdBVUY4YWlFQklBUkJmR29oQkNBRlFYeHFJZ1VOQUFzTElBQUxzd29CQ1g4amdJQ0FnQUJCSUdzaUF5U0FnSUNBQUNBRFFRbHFRZ0EzQUFBZ0EwSUFOd0lFSUFNZ0EwRVlhallDQUVGL0lRUUNRQ0FCUlEwQUlBTWdBVUYvYWlJRk5nSWNJQU1nQUVFQmFqWUNHQ0FBTEFBQUlnWkIvd0J4SVFjQ1FDQUdRWDlLRFFBZ0JVVU5BU0FESUFGQmZtb2lCVFlDSENBRElBQkJBbW8yQWhnZ0FDd0FBU0lHUWY4QWNVRUhkQ0FIY2lFSFFYOGhCQ0FHUVg5S0RRQWdCVVVOQVNBRElBRkJmV29pQlRZQ0hDQURJQUJCQTJvMkFoZ2dBQ3dBQWlJR1FmOEFjVUVPZENBSGNpRUhRWDhoQkNBR1FYOUtEUUFnQlVVTkFTQURJQUZCZkdvaUJUWUNIQ0FESUFCQkJHbzJBaGdnQUN3QUF5SUdRZjhBY1VFVmRDQUhjaUVIUVg4aEJDQUdRWDlLRFFBZ0JVVU5BU0FESUFGQmUybzJBaHdnQXlBQVFRVnFOZ0lZSUFBc0FBUWlBVUVBU0EwQklBRkJISFFnQjNJaEJ3c2dBaUFIYWlFSUFrQUNRQ0FERUlTQWdJQUFEUUFnQWlFQURBRUxJQU1vQWdRaEFTQUNJUUFEUUFKQUlBTW9BZ2dnQVd0QkJFb05BQ0FESUFFMkFnUWdBeENFZ0lDQUFFVU5BaUFES0FJRUlRRUxJQUZCQVdvaEJRSkFBa0FnQVMwQUFDSUdRUU54RFFBZ0NDQUFheUVKSUFNb0FnZ2lDaUFGYXlFRUlBWkJBbllpQzBFQmFpRUhBa0FnQmtFL1N3MEFJQVJCRUVrTkFDQUpRUkJJRFFBZ0FDQUJLQUlCTmdJQUlBQWdBU2dDQlRZQ0JDQUFJQUVvQWdrMkFnZ2dBQ0FCS0FJTk5nSU1JQUFnQjJvaEFDQURLQUlJSUFVZ0Iyb2lBV3RCQkVvTkF5QURJQUUyQWdRZ0F4Q0VnSUNBQUVVTkJBd0NDd0pBQWtBZ0JrSHdBVThOQUNBRklRWU1BUXNnQ2lBRklBdEJSV29pQVdvaUJtc2hCQ0FCUVFKMFFZQ0lnSUFBYWlnQ0FDQUZLQUlBY1VFQmFpRUhDd0pBSUFjZ0JFME5BQU5BSUFnZ0FHc2dCRWtOQlNBQUlBWWdCQkNCZ0lDQUFDRUFJQU1vQWdBaUFTQUJLQUlBSWdrZ0F5Z0NEQ0lGYWlJR05nSUFJQUZCQkdvaUFTQUJLQUlBSWdvZ0JXc2lBVFlDQUNBRElBRTJBZ3dnQUNBRWFpRUFJQUZGRFFVZ0F5QUpJQXBxTmdJSUlBY2dCR3NoQnlBQklRUWdCeUFCU3cwQUN5QUlJQUJySVFrTElBa2dCMGtOQXlBQUlBWWdCeENCZ0lDQUFDQUhhaUVBSUFNb0FnZ2dCaUFIYWlJQmEwRUVTZzBDSUFNZ0FUWUNCQ0FERUlTQWdJQUFEUUVNQXdzZ0FDQUNheUFHUVFGMFFhQ0lnSUFBYWk4QkFDSUJRUXQySWdwQkFuUkJnSWlBZ0FCcUtBSUFJQVVvQWdCeElBRkJnQTV4YWlJSFFYOXFUUTBDSUFnZ0FHc2hCQUpBQWtBZ0FVSC9BWEVpQ1VFUVN3MEFJQWRCQ0VrTkFDQUVRUkJKRFFBZ0FDQUFJQWRySWdFb0FnQTJBZ0FnQUNBQktBSUVOZ0lFSUFBZ0FTZ0NDRFlDQ0NBQUlBRkJER29vQWdBMkFnd01BUXNDUUFKQUFrQWdCQ0FKUVFwcVNRMEFJQUFnQjJzaEJDQUFJUUVnQ1NFR0lBZEJCMHdOQVF3Q0N5QUVJQWxKRFFVZ0NVRUJhaUVFUVFBZ0Iyc2hCeUFBSVFFRFFDQUJJQUVnQjJvdEFBQTZBQUFnQVVFQmFpRUJJQVJCZjJvaUJFRUJTdzBBREFNTEN3TkFJQUVnQkNnQ0FEWUNBQ0FCSUFRb0FnUTJBZ1FnQmlBSGF5RUdJQUVnQjJvaUFTQUVheUlIUVFoSURRQUxDeUFHUVFGSURRQWdCa0VJYWlFSEEwQWdBU0FFS0FJQU5nSUFJQUVnQkNnQ0JEWUNCQ0FCUVFocUlRRWdCRUVJYWlFRUlBZEJlR29pQjBFSVN3MEFDd3NnQUNBSmFpRUFJQU1vQWdnZ0JTQUthaUlCYTBFRVNnMEJJQU1nQVRZQ0JDQURFSVNBZ0lBQVJRMENDeUFES0FJRUlRRU1BQXNMSUFNb0FnQWlBU0FCS0FJRUlBTW9BZ3dpQkdzMkFnUWdBU0FFSUFFb0FnQnFOZ0lBQWtBZ0F5MEFFQTBBUVg0aEJBd0JDMEVBUVgwZ0NDQUFSaHNoQkFzZ0EwRWdhaVNBZ0lDQUFDQUVDN1lEQVFkL0FrQWdBQ2dDQkNJQklBQW9BZ2dpQWtjTkFDQUFLQUlBSWdJZ0FpZ0NBQ0lESUFBb0Fnd2lCR29pQVRZQ0FDQUNRUVJxSWdJZ0FpZ0NBQ0lDSUFScklnVTJBZ0FnQUNBRk5nSU1Ba0FnQWlBRVJ3MEFJQUJCQVRvQUVFRUFEd3NnQUNBRElBSnFJZ0kyQWdnTEFrQUNRQUpBSUFJZ0FXc2lBaUFCTFFBQVFRRjBRYUNJZ0lBQWFpOEJBRUVMZGtFQmFpSUZUdzBBSUFCQkVXb2dBU0FDRUlLQWdJQUFJUVlnQUNnQ0RDRUVRUUFoQnlBQVFRQTJBZ3dnQUNnQ0FDSUJJQUVvQWdRZ0JHczJBZ1FnQVNBRUlBRW9BZ0JxSWdNMkFnQURRQ0FCUVFScUtBSUFJZ0ZGRFFNZ0JpQUNhaUFESUFVZ0Ftc2lCQ0FCSUFRZ0FVa2JJZ1FRZ1lDQWdBQWFJQUFvQWdBaUFTQUJLQUlFSUFSck5nSUVJQUVnQVNnQ0FDQUVhaUlETmdJQUlBUWdBbW9pQWlBRlNRMEFDeUFBSUFZMkFnUWdBQ0FHSUFWcU5nSUlEQUVMQWtBZ0FrRUVTdzBBSUFBZ0FFRVJhaUFCSUFJUWdvQ0FnQUFpQVNBQ2FqWUNDQ0FBSUFFMkFnUWdBQ2dDRENFQ0lBQkJBRFlDRENBQUtBSUFJZ0VnQVNnQ0JDQUNhellDQkNBQklBSWdBU2dDQUdvMkFnQU1BUXNnQUNBQk5nSUVDMEVCSVFjTElBY0xDNmdFQVFCQmdBZ0xvQVFBQUFBQS93QUFBUC8vQUFELy8vOEEvLy8vL3dBQUFBQUFBQUFBQUFBQUFBRUFCQWdCRUFFZ0FnQUZDQUlRQWlBREFBWUlBeEFESUFRQUJ3Z0VFQVFnQlFBSUNBVVFCU0FHQUFrSUJoQUdJQWNBQ2dnSEVBY2dDQUFMQ0FnUUNDQUpBQVFKQ1JBSklBb0FCUWtLRUFvZ0N3QUdDUXNRQ3lBTUFBY0pEQkFNSUEwQUNBa05FQTBnRGdBSkNRNFFEaUFQQUFvSkR4QVBJQkFBQ3drUUVCQWdFUUFFQ2hFUUVTQVNBQVVLRWhBU0lCTUFCZ29URUJNZ0ZBQUhDaFFRRkNBVkFBZ0tGUkFWSUJZQUNRb1dFQllnRndBS0NoY1FGeUFZQUFzS0dCQVlJQmtBQkFzWkVCa2dHZ0FGQ3hvUUdpQWJBQVlMR3hBYklCd0FCd3NjRUJ3Z0hRQUlDeDBRSFNBZUFBa0xIaEFlSUI4QUNnc2ZFQjhnSUFBTEN5QVFJQ0FoQUFRTUlSQWhJQ0lBQlF3aUVDSWdJd0FHRENNUUl5QWtBQWNNSkJBa0lDVUFDQXdsRUNVZ0pnQUpEQ1lRSmlBbkFBb01KeEFuSUNnQUN3d29FQ2dnS1FBRURTa1FLU0FxQUFVTktoQXFJQ3NBQmcwckVDc2dMQUFIRFN3UUxDQXRBQWdOTFJBdElDNEFDUTB1RUM0Z0x3QUtEUzhRTHlBd0FBc05NQkF3SURFQUJBNHhFREVnTWdBRkRqSVFNaUF6QUFZT014QXpJRFFBQnc0MEVEUWdOUUFJRGpVUU5TQTJBQWtPTmhBMklEY0FDZzQzRURjZ09BQUxEamdRT0NBNUFBUVBPUkE1SURvQUJRODZFRG9nT3dBR0R6c1FPeUE4QUFjUFBCQThJQUVJQ0E4OUVEMGdBUkFKRHo0UVBpQUJHQW9QUHhBL0lBRWdDdzlBRUVBZ0FHUUVibUZ0WlFFOUJRQVJYMTkzWVhOdFgyTmhiR3hmWTNSdmNuTUJCbTFsYldOd2VRSUhiV1Z0Ylc5MlpRTUtkVzVqYjIxd2NtVnpjd1FLY21WbWFXeHNYM1JoWndjU0FRQVBYMTl6ZEdGamExOXdiMmx1ZEdWeUNRb0JBQWN1Y205a1lYUmhBRElKY0hKdlpIVmpaWEp6QVF4d2NtOWpaWE56WldRdFlua0JERlZpZFc1MGRTQmpiR0Z1WndzeE5pNHdMallnS0RFMUtRQXNEM1JoY21kbGRGOW1aV0YwZFhKbGN3SXJEMjExZEdGaWJHVXRaMnh2WW1Gc2N5c0ljMmxuYmkxbGVIUT0iLGllPTQwOTYsdnI9MippZSszMixZdD0yKmllLTEscHI9bmV3IFVpbnQzMkFycmF5KFswLDEsMyw3LDE1LDMxLDYzLDEyNywyNTUsNTExLDEwMjMsMjA0Nyw0MDk1LDgxOTEsMTYzODMsMzI3NjcsNjU1MzUsMTMxMDcxLDI2MjE0Myw1MjQyODcsMTA0ODU3NSwyMDk3MTUxLDQxOTQzMDMsODM4ODYwNywxNjc3NzIxNV0pO2Z1bmN0aW9uIE8oZSl7dGhpcy5idWZfPW5ldyBVaW50OEFycmF5KHZyKSx0aGlzLmlucHV0Xz1lLHRoaXMuYnVmX3B0cl89MCx0aGlzLnZhbF89MCx0aGlzLnBvc189MCx0aGlzLnJlc2V0KCl9Ty5SRUFEX1NJWkU9aWUsTy5JQlVGX01BU0s9WXQsTy5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmJ1Zl9wdHJfPTAsdGhpcy52YWxfPTAsdGhpcy5wb3NfPTAsdGhpcy5iaXRfcG9zXz0wLHRoaXMuYml0X2VuZF9wb3NfPTAsdGhpcy5lb3NfPTAsdGhpcy5yZWFkTW9yZUlucHV0KCk7Zm9yKGxldCBlPTA7ZTw0O2UrKyl0aGlzLnZhbF98PXRoaXMuYnVmX1t0aGlzLnBvc19dPDw4KmUsdGhpcy5wb3NfKys7cmV0dXJuIHRoaXMuYml0X2VuZF9wb3NfPjB9LE8ucHJvdG90eXBlLnJlYWRNb3JlSW5wdXQ9ZnVuY3Rpb24oKXtpZighKHRoaXMuYml0X2VuZF9wb3NfPjI1NikpaWYodGhpcy5lb3NfKXtpZih0aGlzLmJpdF9wb3NfPnRoaXMuYml0X2VuZF9wb3NfKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgIit0aGlzLmJpdF9wb3NfKyIgIit0aGlzLmJpdF9lbmRfcG9zXyl9ZWxzZXtjb25zdCBlPXRoaXMuYnVmX3B0cl8sdD10aGlzLmlucHV0Xy5yZWFkKHRoaXMuYnVmXyxlLGllKTtpZih0PDApdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCIpO2lmKHQ8aWUpe3RoaXMuZW9zXz0xO2ZvcihsZXQgbj0wO248MzI7bisrKXRoaXMuYnVmX1tlK3Qrbl09MH1pZihlPT09MCl7Zm9yKGxldCBuPTA7bjwzMjtuKyspdGhpcy5idWZfWyhpZTw8MSkrbl09dGhpcy5idWZfW25dO3RoaXMuYnVmX3B0cl89aWV9ZWxzZSB0aGlzLmJ1Zl9wdHJfPTA7dGhpcy5iaXRfZW5kX3Bvc18rPXQ8PDN9fSxPLnByb3RvdHlwZS5maWxsQml0V2luZG93PWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmJpdF9wb3NfPj04Oyl0aGlzLnZhbF8+Pj49OCx0aGlzLnZhbF98PXRoaXMuYnVmX1t0aGlzLnBvc18mWXRdPDwyNCx0aGlzLnBvc18rKyx0aGlzLmJpdF9wb3NfPXRoaXMuYml0X3Bvc18tOD4+PjAsdGhpcy5iaXRfZW5kX3Bvc189dGhpcy5iaXRfZW5kX3Bvc18tOD4+PjB9LE8ucHJvdG90eXBlLnJlYWRCaXRzPWZ1bmN0aW9uKGUpezMyLXRoaXMuYml0X3Bvc188ZSYmdGhpcy5maWxsQml0V2luZG93KCk7Y29uc3QgdD10aGlzLnZhbF8+Pj50aGlzLmJpdF9wb3NfJnByW2VdO3JldHVybiB0aGlzLmJpdF9wb3NfKz1lLHR9O2NvbnN0IER0PW5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDAsMCw0LDQsMCwwLDQsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsOCwxMiwxNiwxMiwxMiwyMCwxMiwxNiwyNCwyOCwxMiwxMiwzMiwxMiwzNiwxMiw0NCw0NCw0NCw0NCw0NCw0NCw0NCw0NCw0NCw0NCwzMiwzMiwyNCw0MCwyOCwxMiwxMiw0OCw1Miw1Miw1Miw0OCw1Miw1Miw1Miw0OCw1Miw1Miw1Miw1Miw1Miw0OCw1Miw1Miw1Miw1Miw1Miw0OCw1Miw1Miw1Miw1Miw1MiwyNCwxMiwyOCwxMiwxMiwxMiw1Niw2MCw2MCw2MCw1Niw2MCw2MCw2MCw1Niw2MCw2MCw2MCw2MCw2MCw1Niw2MCw2MCw2MCw2MCw2MCw1Niw2MCw2MCw2MCw2MCw2MCwyNCwxMiwyOCwxMiwwLDAsMSwwLDEsMCwxLDAsMSwwLDEsMCwxLDAsMSwwLDEsMCwxLDAsMSwwLDEsMCwxLDAsMSwwLDEsMCwxLDAsMSwwLDEsMCwxLDAsMSwwLDEsMCwxLDAsMSwwLDEsMCwxLDAsMSwwLDEsMCwxLDAsMSwwLDEsMCwxLDAsMSwwLDEsMiwzLDIsMywyLDMsMiwzLDIsMywyLDMsMiwzLDIsMywyLDMsMiwzLDIsMywyLDMsMiwzLDIsMywyLDMsMiwzLDIsMywyLDMsMiwzLDIsMywyLDMsMiwzLDIsMywyLDMsMiwzLDIsMywyLDMsMiwzLDIsMywyLDMsMiwzLDIsMywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwyLDIsMiwyLDIsMiwyLDIsMiwyLDEsMSwxLDEsMSwxLDEsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDEsMSwxLDEsMSwxLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywxLDEsMSwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDAsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMyw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDcsMCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwyNCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0MCw0OCw0OCw0OCw0OCw0OCw0OCw0OCw0OCw0OCw0OCw0OCw0OCw0OCw0OCw0OCw1NiwwLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2MywwLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDAsMCwwLDAsMSwxLDEsMSwyLDIsMiwyLDMsMywzLDMsNCw0LDQsNCw1LDUsNSw1LDYsNiw2LDYsNyw3LDcsNyw4LDgsOCw4LDksOSw5LDksMTAsMTAsMTAsMTAsMTEsMTEsMTEsMTEsMTIsMTIsMTIsMTIsMTMsMTMsMTMsMTMsMTQsMTQsMTQsMTQsMTUsMTUsMTUsMTUsMTYsMTYsMTYsMTYsMTcsMTcsMTcsMTcsMTgsMTgsMTgsMTgsMTksMTksMTksMTksMjAsMjAsMjAsMjAsMjEsMjEsMjEsMjEsMjIsMjIsMjIsMjIsMjMsMjMsMjMsMjMsMjQsMjQsMjQsMjQsMjUsMjUsMjUsMjUsMjYsMjYsMjYsMjYsMjcsMjcsMjcsMjcsMjgsMjgsMjgsMjgsMjksMjksMjksMjksMzAsMzAsMzAsMzAsMzEsMzEsMzEsMzEsMzIsMzIsMzIsMzIsMzMsMzMsMzMsMzMsMzQsMzQsMzQsMzQsMzUsMzUsMzUsMzUsMzYsMzYsMzYsMzYsMzcsMzcsMzcsMzcsMzgsMzgsMzgsMzgsMzksMzksMzksMzksNDAsNDAsNDAsNDAsNDEsNDEsNDEsNDEsNDIsNDIsNDIsNDIsNDMsNDMsNDMsNDMsNDQsNDQsNDQsNDQsNDUsNDUsNDUsNDUsNDYsNDYsNDYsNDYsNDcsNDcsNDcsNDcsNDgsNDgsNDgsNDgsNDksNDksNDksNDksNTAsNTAsNTAsNTAsNTEsNTEsNTEsNTEsNTIsNTIsNTIsNTIsNTMsNTMsNTMsNTMsNTQsNTQsNTQsNTQsNTUsNTUsNTUsNTUsNTYsNTYsNTYsNTYsNTcsNTcsNTcsNTcsNTgsNTgsNTgsNTgsNTksNTksNTksNTksNjAsNjAsNjAsNjAsNjEsNjEsNjEsNjEsNjIsNjIsNjIsNjIsNjMsNjMsNjMsNjMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF0pLFllPW5ldyBVaW50MTZBcnJheShbMTAyNCwxNTM2LDEyODAsMTUzNiwwLDI1Niw3NjgsNTEyXSksQ3I9OCwkZT04LG1yPTI1NSxldD0xOCxRcj1uZXcgVWludDhBcnJheShbMSwyLDMsNCwwLDUsMTcsNiwxNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNV0pO2Z1bmN0aW9uIFIoZSx0KXt0aGlzLmJpdHM9ZSx0aGlzLnZhbHVlPXR9Y29uc3QgV3Q9MTYsc2U9MTU7ZnVuY3Rpb24gUHQoZSx0KXtsZXQgbj0xPDx0LTE7Zm9yKDtlJm47KW4+Pj0xO3JldHVybihlJm4tMSkrbn1mdW5jdGlvbiBUdChlLHQsbixyLGkpe2RvIHItPW4sZVt0K3JdPW5ldyBSKGkuYml0cyxpLnZhbHVlKTt3aGlsZShyPjApfWZ1bmN0aW9uIGJyKGUsdCxuKXtsZXQgcj0xPDx0LW47Zm9yKDt0PHNlJiYoci09ZVt0XSwhKHI8PTApKTspKyt0LHI8PD0xO3JldHVybiB0LW59ZnVuY3Rpb24ga3QoZSx0LG4scixpKXtjb25zdCBvPXQsZj1uZXcgSW50MzJBcnJheShzZSsxKSxzPW5ldyBJbnQzMkFycmF5KHNlKzEpLGw9bmV3IEludDMyQXJyYXkoaSk7Zm9yKGxldCBjPTA7YzxpO2MrKylmW3JbY11dKys7c1sxXT0wO2ZvcihsZXQgYz0xO2M8c2U7YysrKXNbYysxXT1zW2NdK2ZbY107Zm9yKGxldCBjPTA7YzxpO2MrKylyW2NdIT09MCYmKGxbc1tyW2NdXSsrXT1jKTtsZXQgQT1uLGE9MTw8QSx1PWE7aWYoc1tzZV09PT0xKXtmb3IobGV0IGM9MDtjPHU7KytjKWVbdCtjXT1uZXcgUigwLGxbMF0mNjU1MzUpO3JldHVybiB1fWxldCB3PTAsaD0wO2ZvcihsZXQgYz0xLEk9MjtjPD1uOysrYyxJPDw9MSlmb3IoO2ZbY10+MDstLWZbY10pe2NvbnN0IHY9bmV3IFIoYyYyNTUsbFtoKytdJjY1NTM1KTtUdChlLHQrdyxJLGEsdiksdz1QdCh3LGMpfWNvbnN0IEU9dS0xO2xldCBnPS0xO2ZvcihsZXQgYz1uKzEsST0yO2M8PXNlOysrYyxJPDw9MSlmb3IoO2ZbY10+MDstLWZbY10peyh3JkUpIT09ZyYmKHQrPWEsQT1icihmLGMsbiksYT0xPDxBLHUrPWEsZz13JkUsZVtvK2ddPW5ldyBSKEErbiYyNTUsdC1vLWcmNjU1MzUpKTtjb25zdCB2PW5ldyBSKGMtbiYyNTUsbFtoKytdJjY1NTM1KTtUdChlLHQrKHc+Pm4pLEksYSx2KSx3PVB0KHcsYyl9cmV0dXJuIHV9ZnVuY3Rpb24gRGUoZSx0LG4scil7Y29uc3QgaT1uZXcgVWludDhBcnJheShlKTtyLnJlYWRNb3JlSW5wdXQoKTtjb25zdCBvPXIucmVhZEJpdHMoMik7aWYobz09PTEpe2xldCBzPWUtMSxsPTA7Y29uc3QgQT1uZXcgSW50MzJBcnJheSg0KSxhPXIucmVhZEJpdHMoMikrMTtmb3IoO3M7KXM+Pj0xLGwrKztmb3IobGV0IHU9MDt1PGE7dSsrKUFbdV09ci5yZWFkQml0cyhsKSVlLGlbQVt1XV09Mjtzd2l0Y2goaVtBWzBdXT0xLGEpe2Nhc2UgMTpicmVhaztjYXNlIDM6aWYoQVswXT09PUFbMV18fEFbMF09PT1BWzJdfHxBWzFdPT09QVsyXSl0aHJvdyBuZXcgRXJyb3IoIltSZWFkSHVmZm1hbkNvZGVdIGludmFsaWQgc3ltYm9scyIpO2JyZWFrO2Nhc2UgMjppZihBWzBdPT09QVsxXSl0aHJvdyBuZXcgRXJyb3IoIltSZWFkSHVmZm1hbkNvZGVdIGludmFsaWQgc3ltYm9scyIpO2lbQVsxXV09MTticmVhaztjYXNlIDQ6aWYoQVswXT09PUFbMV18fEFbMF09PT1BWzJdfHxBWzBdPT09QVszXXx8QVsxXT09PUFbMl18fEFbMV09PT1BWzNdfHxBWzJdPT09QVszXSl0aHJvdyBuZXcgRXJyb3IoIltSZWFkSHVmZm1hbkNvZGVdIGludmFsaWQgc3ltYm9scyIpO3IucmVhZEJpdHMoMSk/KGlbQVsyXV09MyxpW0FbM11dPTMpOmlbQVswXV09MjticmVha319ZWxzZXtjb25zdCBzPW5ldyBVaW50OEFycmF5KGV0KTtsZXQgbD0zMixBPTA7Y29uc3QgYT1bbmV3IFIoMiwwKSxuZXcgUigyLDQpLG5ldyBSKDIsMyksbmV3IFIoMywyKSxuZXcgUigyLDApLG5ldyBSKDIsNCksbmV3IFIoMiwzKSxuZXcgUig0LDEpLG5ldyBSKDIsMCksbmV3IFIoMiw0KSxuZXcgUigyLDMpLG5ldyBSKDMsMiksbmV3IFIoMiwwKSxuZXcgUigyLDQpLG5ldyBSKDIsMyksbmV3IFIoNCw1KV07Zm9yKGxldCB1PW87dTxldCYmbD4wO3UrKyl7Y29uc3Qgdz1Rclt1XTtsZXQgaD0wO3IuZmlsbEJpdFdpbmRvdygpLGgrPXIudmFsXz4+PnIuYml0X3Bvc18mMTUsci5iaXRfcG9zXys9YVtoXS5iaXRzO2NvbnN0IEU9YVtoXS52YWx1ZTtzW3ddPUUsRSE9PTAmJihsLT0zMj4+RSxBKyspfWlmKCEoQT09PTF8fGw9PT0wKSl0aHJvdyBuZXcgRXJyb3IoIltSZWFkSHVmZm1hbkNvZGVdIGludmFsaWQgbnVtX2NvZGVzIG9yIHNwYWNlIik7THIocyxlLGkscil9Y29uc3QgZj1rdCh0LG4sJGUsaSxlKTtpZighZil0aHJvdyBuZXcgRXJyb3IoImJyb3RsaSBCdWlsZEh1ZmZtYW5UYWJsZSBmYWlsZWQiKTtyZXR1cm4gZn1mdW5jdGlvbiBBZShlLHQsbil7bi5maWxsQml0V2luZG93KCksdCs9bi52YWxfPj4+bi5iaXRfcG9zXyZtcjtjb25zdCByPWVbdF0uYml0cy0kZTtyZXR1cm4gcj4wJiYobi5iaXRfcG9zXys9JGUsdCs9ZVt0XS52YWx1ZSx0Kz1uLnZhbF8+Pj5uLmJpdF9wb3NfJigxPDxyKS0xKSxuLmJpdF9wb3NfKz1lW3RdLmJpdHMsZVt0XS52YWx1ZX1mdW5jdGlvbiBMcihlLHQsbixyKXtsZXQgaT0wLG89Q3IsZj0wLHM9MCxsPTMyNzY4O2NvbnN0IEE9W107Zm9yKGxldCBhPTA7YTwzMjthKyspQS5wdXNoKG5ldyBSKDAsMCkpO2ZvcihrdChBLDAsNSxlLGV0KTtpPHQmJmw+MDspe2xldCBhPTA7ci5yZWFkTW9yZUlucHV0KCksci5maWxsQml0V2luZG93KCksYSs9ci52YWxfPj4+ci5iaXRfcG9zXyYzMSxyLmJpdF9wb3NfKz1BW2FdLmJpdHM7Y29uc3QgdT1BW2FdLnZhbHVlJjI1NTtpZih1PFd0KWY9MCxuW2krK109dSx1IT09MCYmKG89dSxsLT0zMjc2OD4+dSk7ZWxzZXtjb25zdCB3PXUtMTQ7bGV0IGg9MDt1PT09V3QmJihoPW8pLHMhPT1oJiYoZj0wLHM9aCk7Y29uc3QgRT1mO2Y+MCYmKGYtPTIsZjw8PXcpLGYrPXIucmVhZEJpdHModykrMztjb25zdCBnPWYtRTtpZihpK2c+dCl0aHJvdyBuZXcgRXJyb3IoIltSZWFkSHVmZm1hbkNvZGVMZW5ndGhzXSBzeW1ib2wgKyByZXBlYXRfZGVsdGEgPiBudW1fc3ltYm9scyIpO2ZvcihsZXQgYz0wO2M8ZztjKyspbltpK2NdPXM7aSs9ZyxzIT09MCYmKGwtPWc8PDE1LXMpfX1pZihsIT09MCl0aHJvdyBuZXcgRXJyb3IoIltSZWFkSHVmZm1hbkNvZGVMZW5ndGhzXSBzcGFjZSA9ICIrbCk7Zm9yKDtpPHQ7aSsrKW5baV09MH1mdW5jdGlvbiB5KGUsdCl7dGhpcy5vZmZzZXQ9ZSx0aGlzLm5iaXRzPXR9Y29uc3QgcXQ9W25ldyB5KDEsMiksbmV3IHkoNSwyKSxuZXcgeSg5LDIpLG5ldyB5KDEzLDIpLG5ldyB5KDE3LDMpLG5ldyB5KDI1LDMpLG5ldyB5KDMzLDMpLG5ldyB5KDQxLDMpLG5ldyB5KDQ5LDQpLG5ldyB5KDY1LDQpLG5ldyB5KDgxLDQpLG5ldyB5KDk3LDQpLG5ldyB5KDExMyw1KSxuZXcgeSgxNDUsNSksbmV3IHkoMTc3LDUpLG5ldyB5KDIwOSw1KSxuZXcgeSgyNDEsNiksbmV3IHkoMzA1LDYpLG5ldyB5KDM2OSw3KSxuZXcgeSg0OTcsOCksbmV3IHkoNzUzLDkpLG5ldyB5KDEyNjUsMTApLG5ldyB5KDIyODksMTEpLG5ldyB5KDQzMzcsMTIpLG5ldyB5KDg0MzMsMTMpLG5ldyB5KDE2NjI1LDI0KV0sTXQ9W25ldyB5KDAsMCksbmV3IHkoMSwwKSxuZXcgeSgyLDApLG5ldyB5KDMsMCksbmV3IHkoNCwwKSxuZXcgeSg1LDApLG5ldyB5KDYsMSksbmV3IHkoOCwxKSxuZXcgeSgxMCwyKSxuZXcgeSgxNCwyKSxuZXcgeSgxOCwzKSxuZXcgeSgyNiwzKSxuZXcgeSgzNCw0KSxuZXcgeSg1MCw0KSxuZXcgeSg2Niw1KSxuZXcgeSg5OCw1KSxuZXcgeSgxMzAsNiksbmV3IHkoMTk0LDcpLG5ldyB5KDMyMiw4KSxuZXcgeSg1NzgsOSksbmV3IHkoMTA5MCwxMCksbmV3IHkoMjExNCwxMiksbmV3IHkoNjIxMCwxNCksbmV3IHkoMjI1OTQsMjQpXSxIdD1bbmV3IHkoMiwwKSxuZXcgeSgzLDApLG5ldyB5KDQsMCksbmV3IHkoNSwwKSxuZXcgeSg2LDApLG5ldyB5KDcsMCksbmV3IHkoOCwwKSxuZXcgeSg5LDApLG5ldyB5KDEwLDEpLG5ldyB5KDEyLDEpLG5ldyB5KDE0LDIpLG5ldyB5KDE4LDIpLG5ldyB5KDIyLDMpLG5ldyB5KDMwLDMpLG5ldyB5KDM4LDQpLG5ldyB5KDU0LDQpLG5ldyB5KDcwLDUpLG5ldyB5KDEwMiw1KSxuZXcgeSgxMzQsNiksbmV3IHkoMTk4LDcpLG5ldyB5KDMyNiw4KSxuZXcgeSg1ODIsOSksbmV3IHkoMTA5NCwxMCksbmV3IHkoMjExOCwyNCldLFVyPVswLDAsOCw4LDAsMTYsOCwxNiwxNl0sRnI9WzAsOCwwLDgsMTYsMCwxNiw4LDE2XTtmdW5jdGlvbiBPdChlKXt0aGlzLmJ1ZmZlcj1lLHRoaXMucG9zPTB9T3QucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oZSx0LG4pe3RoaXMucG9zK24+dGhpcy5idWZmZXIubGVuZ3RoJiYobj10aGlzLmJ1ZmZlci5sZW5ndGgtdGhpcy5wb3MpO2ZvcihsZXQgcj0wO3I8bjtyKyspZVt0K3JdPXRoaXMuYnVmZmVyW3RoaXMucG9zK3JdO3JldHVybiB0aGlzLnBvcys9bixufTtmdW5jdGlvbiBWdChlKXt0aGlzLmJ1ZmZlcj1lLHRoaXMucG9zPTB9VnQucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5wb3MrdD50aGlzLmJ1ZmZlci5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJicm90bGkgb3V0cHV0IGJ1ZmZlciBpcyBub3QgbGFyZ2UgZW5vdWdoIik7cmV0dXJuIHRoaXMuYnVmZmVyLnNldChlLnN1YmFycmF5KDAsdCksdGhpcy5wb3MpLHRoaXMucG9zKz10LHR9O2NvbnN0IEd0PW5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDAsMSwxLDEsMSwyLDIsMiwyLDMsMywzLDMsNCw0LDQsNCw1LDUsNSw1LDAsMCwwLDBdKSxadD1uZXcgVWludDhBcnJheShbMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LDcsOCw4LDksOSwxMCwxMCwxMSwxMSwxMiwxMiwxMywxMywwLDBdKSxTcj1uZXcgVWludDhBcnJheShbMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV0pO2Z1bmN0aW9uIHp0KGUsdCl7Y29uc3Qgbj1uZXcgVWludDE2QXJyYXkoMzEpO2ZvcihsZXQgaT0wO2k8MzE7aSsrKW5baV09dCs9MTw8ZVtpLTFdO2NvbnN0IHI9bmV3IEludDMyQXJyYXkoblszMF0pO2ZvcihsZXQgaT0xO2k8MzA7aSsrKWZvcihsZXQgbz1uW2ldO288bltpKzFdOysrbylyW29dPW8tbltpXTw8NXxpO3JldHVybntiYXNlOm4scmV2OnJ9fWNvbnN0e2Jhc2U6S3QscmV2OnhyfT16dChHdCwyKTtLdFsyOF09MjU4LHhyWzI1OF09Mjg7Y29uc3R7YmFzZTpScn09enQoWnQsMCksSnQ9bmV3IFVpbnQxNkFycmF5KDMyNzY4KTtmb3IobGV0IGU9MDtlPDMyNzY4O2UrKyl7bGV0IHQ9KGUmNDM2OTApPj4xfChlJjIxODQ1KTw8MTt0PSh0JjUyNDI4KT4+MnwodCYxMzEwNyk8PDIsdD0odCY2MTY4MCk+PjR8KHQmMzg1NSk8PDQsSnRbZV09KCh0JjY1MjgwKT4+OHwodCYyNTUpPDw4KT4+MX1mdW5jdGlvbiBFZShlLHQsbil7Y29uc3Qgcj1uZXcgVWludDE2QXJyYXkodCk7Zm9yKGxldCBmPTA7ZjxlLmxlbmd0aDtmKyspZVtmXSYmKytyW2VbZl0tMV07Y29uc3QgaT1uZXcgVWludDE2QXJyYXkodCk7Zm9yKGxldCBmPTE7Zjx0O2YrKylpW2ZdPWlbZi0xXStyW2YtMV08PDE7bGV0IG87e289bmV3IFVpbnQxNkFycmF5KDE8PHQpO2NvbnN0IGY9MTUtdDtmb3IobGV0IHM9MDtzPGUubGVuZ3RoO3MrKylpZihlW3NdKXtjb25zdCBsPXM8PDR8ZVtzXSxBPXQtZVtzXTtsZXQgYT1pW2Vbc10tMV0rKzw8QTtmb3IoY29uc3QgdT1hfCgxPDxBKS0xO2E8PXU7YSsrKW9bSnRbYV0+PmZdPWx9fXJldHVybiBvfWNvbnN0IEJlPW5ldyBVaW50OEFycmF5KDI4OCk7Zm9yKGxldCBlPTA7ZTwxNDQ7ZSsrKUJlW2VdPTg7Zm9yKGxldCBlPTE0NDtlPDI1NjtlKyspQmVbZV09OTtmb3IobGV0IGU9MjU2O2U8MjgwO2UrKylCZVtlXT03O2ZvcihsZXQgZT0yODA7ZTwyODg7ZSsrKUJlW2VdPTg7Y29uc3QgWHQ9bmV3IFVpbnQ4QXJyYXkoMzIpO2ZvcihsZXQgZT0wO2U8MzI7ZSsrKVh0W2VdPTU7Y29uc3QgTnI9RWUoQmUsOSksWXI9RWUoWHQsNSk7ZnVuY3Rpb24gdHQoZSl7bGV0IHQ9ZVswXTtmb3IobGV0IG49MTtuPGUubGVuZ3RoO24rKyllW25dPnQmJih0PWVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIFYoZSx0LG4pe2NvbnN0IHI9dC84fDA7cmV0dXJuKGVbcl18ZVtyKzFdPDw4KT4+KHQmNykmbn1mdW5jdGlvbiBudChlLHQpe2NvbnN0IG49dC84fDA7cmV0dXJuKGVbbl18ZVtuKzFdPDw4fGVbbisyXTw8MTYpPj4odCY3KX1mdW5jdGlvbiBEcihlKXtyZXR1cm4oZSs3KS84fDB9ZnVuY3Rpb24gV3IoZSx0KXtpZihlW3QrK10hPT0zMXx8ZVt0KytdIT09MTM5fHxlW3QrK10hPT04KXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBnemlwIGRhdGEiKTtjb25zdCBuPWVbdCsrXTt0Kz02LG4mNCYmKHQrPShlW3QrMTBdfGVbdCsxMV08PDgpKzIpO2ZvcihsZXQgcj0obj4+MyYxKSsobj4+NCYxKTtyPjA7ci09KyFlW3QrK10pO3JldHVybiB0KyhuJjIpfWZ1bmN0aW9uIHJ0KGUsdCxuPTAscj0wKXtpZighKGUubGVuZ3RoLW4pKXJldHVybjtjb25zdCBpPVdyKGUsbik7aWYoaT09PWUubGVuZ3RoLTgpcmV0dXJuO2lmKGk+ZS5sZW5ndGgtOCl0aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgRU9GIik7bGV0IG89aSo4LGY9MCxzPTAsbD0wLEEsYTtjb25zdCB1PWUubGVuZ3RoKjg7ZG97aWYoIUEpe2Y9VihlLG8sMSk7Y29uc3QgZz1WKGUsbysxLDMpO2lmKG8rPTMsZylpZihnPT09MSlBPU5yLGE9WXIscz05LGw9NTtlbHNlIGlmKGc9PT0yKXtjb25zdCBjPVYoZSxvLDMxKSsyNTcsST1WKGUsbysxMCwxNSkrNCx2PWMrVihlLG8rNSwzMSkrMTtvKz0xNDtjb25zdCBCPW5ldyBVaW50OEFycmF5KHYpLFE9bmV3IFVpbnQ4QXJyYXkoMTkpO2ZvcihsZXQgUz0wO1M8STsrK1MpUVtTcltTXV09VihlLG8rUyozLDcpO28rPUkqMztjb25zdCBiPXR0KFEpLEM9KDE8PGIpLTEsTD1FZShRLGIpO2ZvcihsZXQgUz0wO1M8djspe2NvbnN0IFk9TFtWKGUsbyxDKV07bys9WSYxNTtjb25zdCBOPVk+PjQ7aWYoTjwxNilCW1MrK109TjtlbHNle2xldCBUPTAsRj0wO2ZvcihOPT09MTY/KEY9MytWKGUsbywzKSxvKz0yLFQ9QltTLTFdKTpOPT09MTc/KEY9MytWKGUsbyw3KSxvKz0zKTpOPT09MTgmJihGPTExK1YoZSxvLDEyNyksbys9Nyk7Ri0tOylCW1MrK109VH19Y29uc3QgUD1CLnN1YmFycmF5KDAsYykseD1CLnN1YmFycmF5KGMpO3M9dHQoUCksbD10dCh4KSxBPUVlKFAscyksYT1FZSh4LGwpfWVsc2UgdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGJsb2NrIHR5cGUiKTtlbHNle2NvbnN0IGM9RHIobykrNCxJPWVbYy00XXxlW2MtM108PDgsdj1jK0k7aWYodj5lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgRU9GIik7dC5zZXQoZS5zdWJhcnJheShjLHYpLHIpLHIrPUksbz12Kjg7Y29udGludWV9aWYobz51KXRocm93IG5ldyBFcnJvcigidW5leHBlY3RlZCBFT0YiKX1jb25zdCB3PSgxPDxzKS0xLGg9KDE8PGwpLTE7bGV0IEU9bztmb3IoOztFPW8pe2NvbnN0IGc9QVtudChlLG8pJnddLGM9Zz4+NDtpZihvKz1nJjE1LG8+dSl0aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgRU9GIik7aWYoIWcpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGxlbmd0aC9saXRlcmFsIik7aWYoYzwyNTYpdFtyKytdPWM7ZWxzZSBpZihjPT09MjU2KXtFPW8sQT12b2lkIDA7YnJlYWt9ZWxzZXtsZXQgST1jLTI1NDtpZihjPjI2NCl7Y29uc3QgQz1jLTI1NyxMPUd0W0NdO0k9VihlLG8sKDE8PEwpLTEpK0t0W0NdLG8rPUx9aWYoIWEpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGRpc3RhbmNlIG1hcCIpO2NvbnN0IHY9YVtudChlLG8pJmhdLEI9dj4+NDtpZighdil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZGlzdGFuY2UiKTtvKz12JjE1O2xldCBRPVJyW0JdO2lmKEI+Myl7Y29uc3QgQz1adFtCXTtRKz1udChlLG8pJigxPDxDKS0xLG8rPUN9aWYobz51KXRocm93IG5ldyBFcnJvcigidW5leHBlY3RlZCBFT0YiKTtjb25zdCBiPXIrSTtpZihyPFEpdGhyb3cgbmV3IEVycm9yKCJ1bmV4cGVjdGVkIGRpY3Rpb25hcnkgY2FzZSIpO2Zvcig7cjxiO3IrKyl0W3JdPXRbci1RXX19bz1FLEEmJihmPTEpfXdoaWxlKCFmKTtpZihyPHQubGVuZ3RoKXtjb25zdCB3PU1hdGguY2VpbChvLzgpKzg7cnQoZSx0LHcscil9fWNvbnN0IFByPWAKSDRzSUFBQUFBQUFBQXp5OTZYSWN4N1V1K3R1STREdVUybWVMeERiUkFFbE5KZ1lIUjBuZUdyZ0Z5cjdiUGc1RmRsVjJkd0hWVmEzS0tvQk4KU1JIZ2dJSGdBRktjQmM0ekpRSWdPR0lnZ1lqREY2RCtrZjhVNTZLNkd4SDNJZTczcllSc0dSTFFuWldWd3hxK3RYS3RsWWxmMFY0MEdBWisKVVFlNm1CU1UyKzlHbnZaVW9rdzVHb3pDb0diOFJMdCtVb3VxT3V4TFRSTDQvYm9ZYXowWXhmMkozcGZVdElxakFSMFhJcThXNEpkaUZGY0sKVWRSZkRWUXQ4QWQwNEllNnJJTnFPYXBvNDN1NkVzVjgxZ3Vpc0pTVWRXWEExNE5GUC9TcXFvVDMxa3d4RFlLeVZsNmk0NHBXYmxuRldoWGoKcUpMRXFhNm91RjhWQXAxV283RHNsOG9ZcHc1VTZJVjYwT2dCSFlZWWo2dU1Ma1JKdVJxWkpEWGFxeWhQbDlHbXJQSGVza3BDVmRHZitXRi8KSVloS3h0K3ZDMmlQOGFGZFAvcjNRendUcjI5MS9sU09BaytIbmhuMGsvSVg2Qi9EOEFiUmgvRkxZWUsyWlRXZ1MrakxhQjI2S2dpcUtpa1AKYXZ3M1NFMUZoMm5SRHlwVkZTZDlrUjhtWmQ4RXZrbEtVWVN4YW04UTh4elVCdDhWVEFWelY0R0pNSndvOXQweTNtOENaWkpFSzB5M1VpdmkKbVg0L0xBMzZRYUR4K2FDS3ZRS2VMZnF4M29NMTZ3K2pRWVVPODlXd1ZNSDZKNWhzRUNtdmhMVTNPaWlHVWFJcnFWc3VhcTVGV0lzanQ5OTMKb3pBS1hSMWduOHJZRTgvWDNpZlluemdOZEJucnB2clVQajhzUm02UUZnSTFhQUp0VEZrRlJjTTlSRi83bzFCdjZ1ajREL3pIdU5pZ3ZhQ2oKV0xtNkVLVFkvelFlMUxxL2lML0xJSm9TMWdtYmlQM0cyTXM2eEpyMDkrdHFVbFVHbmZyVk9Jb3FuK3o5L0RQUVM3aTNWZ1U5b2xNODA2OTEKdFJpb0V1aW5INnZqRlRHZkJPT05zZWNKYUxZdnJWUVRySmFIL2pBR2ZBOEtCaTFpOUxWK3JCWFdJU2xpWDFTYVJLQ05PTytDaGxUUUQ3cXUKRG1CTlBQUmZBYTFqUjVNa2pjTkNoQi9RQ1RnaGlDT2owempZWUxEd2NSUm9QQXBTVEF5V0czdXJzWStCbCsrcmxzQWFsUUVWMS9CTUFsb08KRFFqR2k2UHEzMERUYmxTdGJjcDM1THJhVlk5SnNCQUJkc1BIeTdBK1ZmQlp2dVFYc1FhSmE4eGZTckdxNFEzaHU2V2tNOForWUl4SmdIa2EKNWFNNzVlRWREdll2Nkl2S0lXaWt2eHJGbUp0SjFuKzlyYzBEWFhhMUYzcXFVUlFYT0crczRkZjUzdndnNktZQ2Z0MWMzZGY1S2ZZeVZtSC8KSVBvZVZDRm9LQ0F4ZWYvcytGZG5WYVhCSU5iYnBMSCtYeHZXLzNGUStVa0Zld1BhTTZWSW14SjRBbHRUcW1Jczc3UzFPUUhvSnczOUJQdkcKZnZwQmg1VkJ5STk5bFNCbnlOT1k0dWFPNmo0c0hjWStpUGxHUVRFSzBhY2ZHRlhFdCtoWlZZMExPUkNqNzJJUURSWlVvV2FxS2pUZ2kvY3cKM2cvd0E5WXhvUDBFZkJjTSt2MCtaRUppRWhCTzdHUDZwZllBUERpb1ZYK0N2ZGdObVFPK3g1cUVCbnZZaisydXhXbG8rdEtnQmtuV3Z3bjkKbFNJVmxDQUNETjZudlpMMnZlNmMwWWw1SDkvbCs4eGYzc09ZL2FLendVUVI5aEZ5QW5TWXBBVzlYNU1hUW94RGU2RHBCTndjWWV0QVhuRmwKMDBmVmZTNWtRQm5yWHNBNDlvT1dCeUlzc2pLMUdEd0xtZ3lxR0tPUDlYSkIvMXZ3cmo3c2ZhSktwdUFuQnJRVmdQbVNmZ2l3RUxUYmhRVXUKWWRIKzJ2dmxGMTZhMUw2Z2ZGR0Jya1VwMWozQkV2bGhuOXEvMzZWc3FtbFQ5RTE1Y0hBd0gvc0dmUlpNTmRZRG16QVAvSzAzWTJMYndZOGUKeHJHbG8yTmpBWHNPS3NEWTRoQ3l4Q3RFKy9KRjVjY0J4b1AxWXQ5eFg0bzVhN2ZzRnplOFV3V2Q2UUUvK0Y4YmNxQ0p1QkxnV1EvMFVJVjgKM3RqUjBjRlplckVhTEtkZ2ltcVVGTlBRSzRDUHlyRXVRcklFL2JwbUV2UlJCcjJEOXlIWGRiQUp4R2hTUDhHandWZTl2VG1LZk94SjdlTmQKZTNOWU02MTgwQnlINUhzR1M5c1pxb0ZhQ1F5UitGWHp4ei8vK2M4WUIyU2pWd08vbTlaTzU0ZHF1Zm9YeU80QWZCME1Rc0hzTDIvTi9yTjkKWFlzRDRRUjVGZVJiV3JaOWlINnFxU2xEa3lSWW1rNFhOUENmN1YzdFpXaTREN0ZHa0RGSkRCbm12UHV1QTIwU1lEK2hYVUJWR0VURmg0enEKOTZzSjloODZDdm9oMENYUVRCV2I4UjdXZEYzTHVoYVg5QTJaa01kZ3VncHhqd2FEVnJEWHBkU0huQTZ3VVFhdkJwTW9TcVNvMHU1WFN1LysKOGFQTlFRcGRpMzZ4bEowZ3Fsb0o5RlpPS3BRU2dSZW5wZDFmN2RvVlFqNkZXTU8vZ0ZnRFVpSFdmb0E2QUx5RjlYTkEvM0dzZzFvQk9zaUEKVnJ5MFg0ZktLRmRWOVNCb281UUd4YjJidDJ3dGc5WkE5MGtKTWdYQ0g3b3ZqU0d2YXBzdy8vWHJXenRiTzNNOUZRT2g1WU4vL05nemtDOEYKRGM2QkhOKzc2YU90MkhwREJzRDhndyt3aUVYUXcvOGR1bWdLVWMxQWh1VFJSVzdQbDcxN0N4aFBQL2F1dGZPSEg2QzhhbGczYjhQWC85WDYKYmFvODdFMjlEUXEzRGYrRDBLL2ltWFhBSGNuZVRYL2VPdUM3a0g1ZXpkT0ZwQWNUZ3l3TFFzMXhSb043TjMydzFZTnMwd01xMkx2cHc2MEIKMWg5MEMzSlVRUlg4RTBZREN2eGdTanJVenY4ZE9tT2lJbVJUUlNlK3lISFRWZDRDMlpqR1JlQ0FLblJKVnhMM1FPZjZyZCsvc3dILzFSaFgKc3dCNmdueUpPenBhT3l0KzBPKzB0Zlg0Y1JRQzUzZ2VlR3NRKzJRaVA2aW1pV252TSszQUJyVzltemR2L2JSMyt4ZDdOM2RzVlo2cVlLM3cKcnMwOWZSQ0M2emM2NjZGaWs3MmJOMjExTUIvb1dZaDZYMVVnVzdyYXF6MG1Tb1BQUHYxaUYvZ1JlQ1hHR3J5M3RhdThxZWNqckMxRVFOZWYKUWFkN085N2JXZ0hXMnZyZUIvOEFEV2cvZE12L0E4d0Y4dUtZVjlhM3RvS3VZK3hKU1VPbmdyUkM0SjdRMjdybHczOThFeFcvV2YrdjFrN1EKMWthMGJTU1FpVFhpaG1nd0tJQVh0cjcvd1QvK3FnYlVGcnl2NWZzZld2NWp4NWIvMkxybHZYLzA2V0p4MS8rejUxUEkwdktBRDNVSDBqYkEKRitoajlkdVVPaFQ4QVBxQnJrcXdkdmtDNk5BRHZaYUJSU0F2Z0pIQ1pPdVdELzd4eWQ2OWU5bzJkMndxUnREVTZHUFhGenVkZlJBNFc5OS8KN3gvYnY5ejVQeDc2Nkd6NW9VWHY4OUgrL1g5QXZ4blFUckwraDlaT1lKRUVyTjZwZ09aKytLR3IvWi8rdi9LZlFmLzBWLzdQbzBHOEp3SE4KS2M4emtCWUIySEZmWjhzZmZvRElpa0xzWlI2S29hUGovVmFzUmEwUG90NkFxTUN4a0xOUkVXdlI2bXp1NkFDTmc0ZXhHSUIvd0tuZ2liam0KWWwrVEdpaExBMVA0VVppSE1uT2g1MHA0TDNSaS9uMnMwNTV5Zmlma0FhQ2U0S3NRZk4wUFdvR21VU0gwNFQ3UWlRdTZiL0dnYzkzQXI3WkMKK0h5STU3QU9IVHYvdHROOCtLK2VyZ1I4U1FUcy8rbFByWVBZTjRDTXFBcmxFVlVUcVB4QTc5NzIzd1owRXJadC9tQnZRSGtPV3YvNnE4K2MKUWhvQWwwZjluVCtzYS9sazE3YWQ0TGxXVlNoQVhxdHd3NlkvZndSOFZxWlE2R3IzUVZ1UUpTbHhOSENDWDlYZnQ3VzgwOUd4dVRVRTBQL24KcG45MS92TmZuUzJmUlNVSGVpVloxL0tIUDBCZmxxQlRLd1hJcDlidjFyVjBrQ2F3RC8zUjF2OFBjZzFyM2JQT2JHMXZkL0FncENMeGJXbEQKNjNjdGFPcEFiNjdIOUtwZXFxRC9WSkwvNjU2UFc3R3gzNlpSZ3YrMmdNY2hJWDlZQjFKNER6L3Y0K2NEL0h5SW40L3c4K2ZOSGZMUEp2eHMKeHM4Vy9LRGRaclRiakhhYjBXNHoybTFHdXkxb3R3WHR0cURkRnJUYmduWmIwRzRMMm0xaGYvaHNFNzdiaERhYjBMWUR6M1RnMlE1ODE0RTIKSFdqYmdXZlFBUllEUDJpSGY0SFE4UE1SZmo3RXp3ZjRlUjgvNytGbkMzNDI0MmNUZnREdUk3VDdDTzArUXJ1UDBPNGp0UHNJN1Q1Q3U0L1EKN2lPMCt3anRQa1M3RDlIdVE3VDdFTzArUkxzUDBlNUR0UHNRN1Q1RXV3L1I3Z08wK3dEdFBrQzdEOUR1QTdUN0FPMCtRTHNQME80RHRQc0EKN2Q1SHUvZlI3bjIwZXgvdDNrZTc5OUh1ZmJSN0grM2VSN3YzTWVNT3p2cTlUVnYrRExXRXllTi93S3hSNWRWMVdCT0pKdWlxQXNja2tSZVYKZ2N0ZENDejFhallxK0JEUXI2YVVNcSttQm53UGVzTVFjVVdRU3hFdEV2eXVYT3l0NS9kRnNOMGk0TlFRdXBnV0JhUXBPRFlvUmQrbXIrNFQKMVlib0V6b0NVQUNjQXgxVVVIMThIOGs1VXFWVVZWTkF6REFDU3dKN1E0WUZxVTlWQnlPbkZzR2VVQkNPY2RYSCt3dDRaOEFHUWVUNUVmZ2kKNXJqODE4OWZQM3o5RWo5THIxLzhPdlQ2NGE5RHZ4NzY5YUI4OXZUMU1qNWR3bDl6YVBVU3Z6K1J2NVplUDhOM1MvaGs3dGZoMTVmUjlpbisKbWYzMUtIbzQrdnJIWDQvK2VnRGZQc0x2ai9EZnkremo5ZXpycS9qM0luckNVNit2dmI2Rno1Kyt2b1MyQjlIdWluejZBdjAvZkgwZVAyZncKYy9uWFEvaDhGdTk3K3ZvQzN2LzA5ZnpybC9qc0JmNjVnZWNPdlg3MjlzRGI4VGMzMzQ2OEhYNXpGei96YncrOVBZeS94OTdNdnBuQk4zZngKL1pHM28yL0gzaDUrTzR5ZlEvaUV2NCsrdWZmbU1YNC8vT1kybmgyVlBzYmZIc1F6by9qc0YvUjBqNzlKMjNIOGZoaHQrZDlEYjU1SXI4Tm8KUC94MjVNM1ArR3djYlViZVRNa1R3L2ptQ2Q3K0JOamRKTmg0SFFXd3BoT1k1YkNEc1R0QWRiVDZDVGtLeEljeHZ6WFUvclRzQVg5QVE3QXQKZkxmb3czSW1xSXlyTkhPaG9vSHlZRzBCa2NGTWgwaUlQZUEvb3dGcTB5bzlCb2J1QWdOeXBCRUhjMzhRdjlCa2k2MEFCakNrNVE0N3V3cUoKRHV5RDkrbzRobUVjUXZlcVFwUW05QXNBV0NZQnJjRkF6UDRFTmdta0dZeFFvTU80Sk80Rkk3WTVxWWV3MllWWjZxYkdoZEVUMCtnTENqUmoKQ05GZ2d3aVZLWG9sWUxjcjJqc1Z2THZtVTdQU1cyQUF2MFBhb2V3ZXJ3ZmFnSjRCSEFJK2dKSi9GNEN4RS9PQWlSM0ZycTVTUWRPUWhrWXIKK2FFcTRnbm9VajhCbGt3MXZSbjRBcmdHcWxQdlN5SkFWeUprOUl4UDhXeVlBTVFiVTBqOUlCSFRGMHBBQTMybFhnM002Tkc4RGoxRFV4UC8KeGRLVllRclQ1V0xBbWxCclVNZG9ET2hEVjRCSFAwV0lWUnZRUUxtbVhQVDN3YnpHZ01JSTZDK201d1hZRkRnTE9sSUZNUXpzbUJhdCtUYUYKZnNhU1ZIVTVyYWdRV3BxdUMxLzhDOURPMFBaZUFSenB3clJ4S1ZxdzRzRG81UUIyVVNqR3p5QkVqYVpEeDlDYllqeDJEUkVSNndLbUQycysKVGNvd2svQXNYbWV3MkVsNWtPNFpUdG9ENmJuRVlnbVhNNjBrc0Njb1ZPS0V6cFRhRGtpR2ZscHdNWDFMMkZCWXFvR3FhU0tQdU1aMzFGSXgKMDdsTUxoWTJ3ZWJGRGtBdDZhcWFWbWtlRzFXdEJyVlB1YjhGNEtwU1dvVndwSitFMUlSZXNLYUc1cmpCQnNVUVVOaGFDc0ordWxwb3BoRncKQXhxWUZJOVZsVHlMN2tsYkliMHVJWW1HdmlQdDdTV3hjdURtWTNJQVJGc0lmRUJ2VG9TRkxTclFMLzFLTlpXQ0NMbGJCdE1QTkgwVjdaeWcKUjIrVzhRQjNhN0RLQWhwTEt1bExZYjRtWmZvb1lGZWFrSU11MEUzZ1J2UW4wQm5IQ1dwNlJJeGJjL2x2Z0dNNldBd2xhLzhndHhsNFRvZFYKWDd1RTlYNVF4RVExelVweUh2UzhYNEhKcWtnZFBveEF3aDQwQnluVFphZEpQV0MvMUMwWHVNNXhWQU1xTXYwYW13Y1VnL21STE1CZ0RsY0MKWUQwcHk0NFNYZFdpWWhFazRVWlZ6Y1dFaVFVV0IzcmdUbHV2SE1SQ1RIOEk5RWVjeEVSVENyWTRwaHFGMkZBUk1qQXhDSGQ3S1RJK0k5V0IKVnF1MXlIVmhhdXBpc2hXNDNaUkJ4UW5YQUNZbEdZZCtONVBHZ0R0RnZwSUVqSTNtV3FWSjFJbmRTWFNlOWxlRlRBSmpUd1gvUThveGVCbW0KQ25TTEpSN0VwM2d2emQ0UVV0Q25jOEl0ZjhYKzZJcUVoSXpkTXNHUHBxZlAwTTFvdkNndHdKS3FoVzRDYnFJVkhnMWlMM1d4UmphQTlRS3oKbUhZcEtHRUFHd3JlcGJmUzdDQmY5bEp5RVhqWCtzVFRDRHNxQU01emRRY3Q4RjZLelNyNE02RGZCU0NYRWtFa05ReDRDblByQkRYMDlCaTYKNUl5aWN3S2JaelNSSytWNEtJUEdCbFN4aFBnem9ZdlYwTWZHYjJ0a01OamsySHhEWHk4RmQwenVEa3N3b0xmMGNNdEtCTjN0bFJUeWw1dnMKN1NGem9sM29KUkdrRDJDRTcyMmdBN1JBandnOWZ1eWxDQ1BOSjNrSGdYaDhhOFUxL3hxTUpyUjEydHRoZ2ltUEJscXBWazEyVWNyVFd1M2MKUldLbEx6am4wcnFEZEF3VGNlWEN2TWoxa0ltQitOVUFuUml3aFAzOTJwUUFQQklNOTcyZU9LSmpHTi9XMk1GRzBSMkVOSjRiVTNmNEpSalIKZzVEUW5nSUJZMEdNN3FGSFJvZmZmTjM3N2grMy9MbVRXSGZmTnlScUtBSU1MZXdENWZlcGZYbEZxOEdBWmNwMHZUbjBIUk84UTU2RzBLYWgKR3NqMTBBa1FpdGVMM2tTUUJWWUQ4ajZLZTZsN2lES3hneEFLOUJPYlBsVVY4UkRBN1BaQmMrQ1VXRkhsWUI2YmV4UnNPR0F2TUNPNEtGYTUKdHZiMnY5TUZhdWlITW5RY216MWtZc3d5S1ZQbmhYUk8vTVZnQUFtWWx5UUk4RVVKbDlEOVdzVE9hS2l5d1Z3UDFoK01IYWVVc1ZEMGY2TSsKMzAzSmtBOTF3aTFwZ2ZsY2M3NXJvVWVTSG5ORHR4WkpCYXZ0Z1FhKzVXSW5zZmdNQzFGTXh6OWtCNFlMWVV1L1NFS3ExSDY4bVNhVitMUHAKMHpNN3lOamdia2c0U25TZUV4ZzZsT2dJeFZyVDUxMGh1MUNyVVo3NlJ0emJYa3JSclBjcFU0ekI3WFNQYlB6K2V6RlVxam1NRlp0SHQwUXUKb251aHF4QzM5eFF4cjlqUUorZnBhbEoyN0FrQTJOU2xsT2RwZ3pndk95RmpTaUhkVkdhUW8rSm9PeUZjdW5OMFgwTmxZVWFmWStaT1BwL3YKYWdkMERVc0ZUcHFISUE0OWg1MDhWZ0I1eDNFTjBnTEVyb3ZVRlNYOURjOUI4aFhTQm1DSXdyZllyaXBQVU9TZ29LczlpWHZvL2pFY3ZLTkEKSVJSQU5IVURpTEI5NEJJNkRjbzhwVEZVdUM1OXpZNkJFRGVBYXFHNGhvMnpBWlJLSjdyM0RURUVYWjlHc0R0SnFGOU9Zb1FaeWVjZW5RQ2QKZzFRbm1KdlJHMW83Yzg1MndpTThtdTdyb3p1K0Nwa1kwTW5UMDlycEZ6ZTBVY2g2Q3NBUjhNcm8zWVJXbUQzUFhmWnBzNWVxRWtxQ2s5R1YKbm9LS2N6MTVFN3ZkQ1NVREJGaDN6aVU2TElQV2FwdmZFOUdYcEZVZmRGa2pEcXVDNlRFSmtJYjRxZzFsUng0Q1hmUDRRQWYwRDVwMjE1aDIKbmtCMDhvZ0NBaVV0RmdzK09xVm4zOUQ5MTlFUFRsT3dZOWUxMEtzUFRLTlQzZTE4OTBQblIrSUY1SkhLZDdSL0ZRK2JYTTdYQjFtVmViemwKeE9SbmdsUkR6M0t1cHNwUjFFcG4rVFlpVUo1V0dURGlwaDdZUUdtSkRtYXgwcnRwczVnZldyR0NkSFIyVmlsVjZGSTBQRjh3SGZzKzZPamcKcVVGTy9MZ0ZxbzVFWWNFcVBrUVowVnNBQnV0cXAzTVpNNEp3YXVQbWthVHltRWZMSHlwa0VnZjIvcDkzYi92dnJ2WTRLdW00U0xmK0R2TE0KWmpwTWVjaGo2RW5xQW1NbUNYM3haalBIQWdnVzlyYzYzMy92QlBRTThqUW4rR01IUkpvRGNuSjRidWNOY3NVcDREcjcxTmIvOTZEeFFkVmQKOU56SGdBNDFIbnZBZmlQOHhZSlZFK3FaN1pTZHJjNDczWTVIekVxdkIxMHRGYWlqZmwycndMd01lS0tXcHh2YnFSSTdnNmZER2oySmhnZ24KdDRuTE1VaEFUZzlXcFhmdnRxLzJrclljSHpnMjNPakFscWM3b1lVQU56L2dBd3lJS3hYeUpRUmZRc3Z3QUl6UU9ncXI1Ri95VEV2VUJ0ekMKVXdrNWFqSFVsQTZkYnlHOUx0OHBMeXJvOWR4TTMrdmUxRUdGME1uak9pZS9PVi94ZVlpV285c2JVQVBiczRPWXF3QnhxRGR6cE5qazFqL3gKbCsvcHhBYi9RUk9YeWVLYk5uZmtIS3BZaUw2ZWRTMVVFTjJlRHhCQWpzY1hXSERLenBZL0ZvdEZNQkVnQ3hGZWp2QUJ5aHFQdGRMN3ZFbDQKQVRpckdscUhNK3doYnNVaEhsVzRYTVFjSnkyblE2WU52TmJtMGRCcWVUZElPdWw1TlZ2ZisrZ2ZYVHk3Yll0VE1CcFBuaHdxU0tEMWZqRVYKcXFiYnllVTZvUXlnajdocW0zZ2lBZkd2UXJyUkkwckQ3cWo3UHpidmRpaU5ZSm9YZEpkZktUbjR5ZlZzZElwOWhyODVPYTdmNTN1ajZuYWUKMk9WQ1BSalVkbUpQK3QzOVdyQ3lIeEFyazBuZTd5bXFiM005Kzh0dGJyaXBBN3ZadGluWDJra1UzczNUUXVpM05LaFJsaGc2a3pxeGVsM3YKMEdNUk9EejBnTEpiSjd2djlOR1dJTWM3M0swOE9IZGR5eUJ4Q2M4K1RFcHg0L0dvb3dDbTZVL0lXK0Nqbk1Neld1Qm5ESTFPRVBEM3Q2RFIKTktyNEpvSXRBaG5xYVRuYm9XZkVWRk1hb0s5bUl6cE5YbDFQZkVoY29JQkUwU2NpTUo2bms2RE1GSEtHZnBTWVExUG9yQUtSQ3JoYWdjcUsKMUxmcHF5bDZWWXg1OVRpSVZDMzFWRkh6K0lIZUVBQ2poSFptaEZFbGthR0h4UWdGODR3MlV2UjJCR21KUjJTMWlFZVQxZ0dDRlNFQ0FGMFkKK2xRNVBvVUJ2Wm95SElzQ1FFczljZHJRZW8rQWZIVkl2QWk3eVNQREV1enArTlYxd0NMTzJQWGp2c2lJMjBiRlJGYUFGbWsxS3RPTkttU0EKdDBGbkFKcEhVTy9LaER6R0p6VFRuS29DQjJvZXJmbmlCNElvY1gxVkJMVGs4WkVQdUllRnJVSlNSSVVVMHlTNmpoVklMT0NmaWlnU0tDZmUKajM0TE5PSXdCSkFCWHZUcWNTWGlKS00rL2dsYzgycWh6Q1pjZ3hyZ3Y2c3FhUjh3TXRCUVhFeXBTUENpcUFUN1FQa2w0T0lCcmdzZFdBQjgKV0h6dUpaYTNndmVBdHFDdnNYZDBXWVZoQkFFR0FPVml6T0FldW1BTkZzZW5VNm9NVFJhYkNLQVhLNFZWQlRPK2VoeENjdTJQNkZnUTM1UVoKNEpoVk5hcGhwQ0ZCRmhpT24wVXUyRG1XNHlQWVNCZ0xoWWpMeCtqV012U1NoQ1NhOE5WMTJueSsyRUN3blVCR3JneFgwWllNU0J1WU8rd0EKREFPckFYU3RDWk4xRlpvWWFwSGQ0R25HUXRBdEJuUkxMeHBvcUJUUTg4WlhZeUVxQ2lLWjFyRmR3TkFIVlg5cjMyRVVqU0EzS3RPcE4rQ3IKUGdoZklPaFg5Nmx6U1BJeGJHTFFUWjhDZVlPZVlYNnBnQnBaQjVwbU1OQ2NrajBFV0kxTWtQSzRIcHVNcmdLdUc1NmdoUjNUVHlpRXhEQUcKbHdlZEEzZzVSZ1VpOGFJQllDWkR0NTlSbFVMRVExdVA3WHhGYkN1OG9Fd0txeDBBdVErckM5bFBJdzdUODEyRnhYZzExUmZ4VmRneXBZV24KS0FyQUJuNXNVaDF3QkpFcGlzZUdIa1p1dDB5UTZ3akxuZjRvN3FxQ1JSWVJsaW5TYmtMZEVHaWY0UmVGS0tBTEU2c0dJZ1Q0NG9CZUhaQjkKY3hrSGd5ZGdhNEFZMkNNSGRKMDdqUTU0TGtYWEp5WElmVklubVoxOGdwbFFLU2tDWnZ6bWlyMlZnT0hSRlNVTGFLMkdkY01tQlJXZ3k0Z0EKVXB5cE5DdUFVSHhNaTlPSDdBSmxZeElRK0pRbHdQTlZjY2FLd2FaRXFCbWZ4N2pjTXRvYkFPWVFQUGhZMDMzVFIrU29GVjJ5NWwzYXFwMWUKUkMyTmpxSHdDWHBTNjFRRERSazY1MnFHd3hkMVVlQ2hUQnhyZ2VFdVQ2L1RLZzFma0I0TVc4cWV0QUsxaGFkQ21McVVQSVExb0VCWUJ0VzAKQUgySnB4Z3ZBenhsU09jVnNHQ3NHQ1JFNTVnQm44WXVKaFRMSVdzc0hpZFlGVnFnaEdZb2psc1c5d1QyaDA3SFdKY3dLajlobkF2WUZwWVMKeHduZWpZSzBFdExTaWlFV2FYR0x3N0JIKy9SY0FFaVhrbklSOGcxbVowd1hPQllPdUE1VURGbExMc1lFdEhqSDBrb0ZLMERMUE9icWFxOXEKblUzN1lKNTVWY2c2dHlZcUlLR1ZUeFlGaExmU0JIb1hrZ1RXSExCRXlSUGpVaHhkUnB5RVFGSStkbnBRelBXcUJqRnFNbDZwQmdtWkV1dlMKa1ZBRWM4ZU1NMElQcmxCU1ZDd0NCb01OTVVBNkVLRmkwMEtGYmdqNkFzWEphdElxbzMrQTBRS1lTM1FUZWVMZ0JUd3I4NlE2bGY3TG9OUkIKRUExbUtqNWI4MldoVDd1SnVBV045ZmFDckNGYjNISXNjVnNWakJBRVQ1OWRXV2dzcExMRk9ERkhpSHVRR3VjS2Z2czJWWFRrSlpRNWRMQVoKT2lDNWc1eUZ4TFR3b0FyamgxbEpLeHRyRmZGd0dSWVUrc0hTZjBhWmcra2tkRXBoYlNtMkswVHdHckpaTTJwSWUwbFVLZ1ZhM05DZ2E1NGUKazI1OTE0VWlCUlVSVjFWcTFHU0RLa2xnamNqaGRWSVVKM2Rac0NXam0zSTlqR25USHVpOW1BYkN5VFd4VmNWanduMEhMWUMyWEF5SDBxbGsKL1pCRzczTVpoa0lQUUluN2l2R1VaVEdLVVBPSnVNU3RoOXRndnpBMktBZm9KOFo1UlBFQUtWTi9KU3RHTmdlQmtTa0pMcWlIWGN6RU1Ib0EKZ0ZzMkkrY1EvTkVwbzVPU2VIaklVeVFnMENUUVdaRWdvUVlSR2xSRTBOQmI3TUpNSnJmNm9jVGJLVkxMRG5IZVJiTEw0cytGVlBHOFFPL2kKQ1NURjRTQWRtQ1hsMWlyQzQ5anN0RlJtYkpjV3NLM3BneS81SWNldG9KbDh2Z3NLd1NVV2h3Q1Jzd0pQL0dTRTlveDlVUngvSk9lcFFqODEKTVJFWkRnRTE1OUxlaEJ3QXY1YzlUVWtkQ3kyQlk0a0JVb2lMcE1KWXdab3Zua25oTlMydWUvT0Z5Qll2cFh5dzNrUTVPekNNK3RJZUlZVjEKTE1FVThnTndMbGF2Ukc4N3ozY0x3anQwNVRFYUM2eGpQaGJaUlo4c0xTTjZWbDFacTRKNFdZRmlZMVVGSFdEM3JDOE13b04wRGtpWDFEQUwKMGw0VmxtUFNaZ2RScGJ5dE1PU25SSThqRkh3S2NReFp6L2dXZ0IvMDNldkdmalhCR09pY0o1SFNxb0hJODN4eUtoMWhKSHZPc1UyOENGaEgKckFPb0VBSkJDUTN3SkVWN2RLNW9iNGVzSVJhWURyUXluUlVxWUh3aDR3bHpEdXdieUEydUNXejM3K2kxd1FDTC9yNUlqZ3MrRVRyUE16eG0KZ3d2aFFRb2d2Z0JjdytRREJkUlYva29rWVNJejRqa0crVHlCRFBLRS9yY0xwOFA2U0pPYXVJWXAzMHBSMGlzU1RGSFNBNmtKUlVNcWNiUlcKSTRoRm5IQUhZODF2UGhjSkwxb0l0RTMzZksvb0FoSHpoaVBRM3J0aHdWUTc2ZFEzV2d4eGg2bzY5THJvdG5WNFB1N0xlVTEzRHN3S2JDSFIKZmNCS0F4STlRV3RvcTdPM3JCMlBIcldTbkV1WjdicysvdlFMNTNPd0JQVXlIZld1MkFObGtjeEtUSXBQNVMwVVBJblpWY0ZtNjE2UnBlQjMKY0lPSHY5M0VIZ3VBZDhEcHZjSVgrWmFXTDBOeDZtaVBKa3V1Wnc5d3VGOFZaNVlwUzJRQ2RnMDlmQ2xTSXBhMUZ5STJvZmdUZTBYYWVKcE8KRzdwdmc1cXpRZWRMK1lJdU0rNGlJcDFnSWlBY25nTm9pUUxFRDArZHhMV2JHTUpDbVpWdjdQR1R0NFVHL3ZlRWRKNml0OVd0OFFRSVNrNWkKWDJIUTcyZVVIcVc5MEU5UFFkY2cvZHJFLzAvcFZFMUVHM3JFTTZIZUhVVjBDQ2hHZjRwRHBPVWJpdXljZUdCRkRodVRjOXBodytYRkdvc2sKTWxVb0lmNXlINlBST0Q1c01LU1pQeUNjR3hZbHltcW5kY2ZTSHMycGFwWGFETXlUNjVIRFJjTVkxMzdEQ0dBeHdWeDZiS0Z0TUdlTVZtK0QKVWdkSzVMSVJCR00vOTRpRzdTckVHTXNnbFVzc3AzVGlsOUhlOTkvVExjVDU1M3A4cThYQVk2cEd6cy8xTU5ZSThrU0hzRDhoMTFMS0VJQzQKVU56OFpoTTlnOStMK3VFYTRpTTVUY25SYzRPM2s0ZzZPUk1sdWt3Rm0rU01nWitBeUdNZWxCU3hITWxXY1R3NGN1S1YzeVphUUE2V2pMSEgKZlpRYjNpZld1VTkvWVB6MTN0MXRIK1hrNk5IWkxsb2c3L3dkNklZSGhYNGsvbUxndDVDeFFUSFFadEwzMzZsRXFwQSt4ZGNDQkFVQm53QUYKZ1E5ZzJaUzQ0MlJOZWttYzczd1RLeXkwcWdsNmNmRktlZzF6UFdXUkdGd01IdWFSditVSXljaDVhcWNzZ3lmTzF5NVlDc0xkM01PMk5rYTIKUWtMNVNRMlRZYlFJbmxlcGVNT2NUWEthRVJVUytxZUowNHdTVjlkRzU5UFFwYU5FZXpYaElBYzZCUHBGRG83emxPamFreE9oMmpjazF2eHUKUVhSMFhHdnZjOUdZZ2RHT1g5d2ptQTE3M2E5cnJaMFNTeXVtZFVtd21Sd3ZtNTJDZ1g5Z2tPNTNZQjgwMzQ0K3U5cUxRdUZ5c3BrdkNoNlcKTXdyVEpaNWVIdHc0SFZWOFZsRWdPZ3hMVE9BWVpnQnNOOEVubnB6SEdVYk4rT0g3NG95aVV3aWNSVHNnekJNUWJWQURLaEViQUt2M2pVeEoKS01FSWJ5bzVLZDVZRk8wbTZFdGkwV2tCWTVnYmhEdmlYc0dCcEYzMjdOVnlQUzMvU1dHM3Q4eHRodWJCVFBzSWFXcU1aZTlxNTFGdnNRWWMKaXk1ODJETnhUWTV3dTNlSUZCVkhuS1BraE9VYmdYRThobFVlNWRJQWRMR0x0Wlh6bHBaZXNRNmNuWFFHdXdRbXNaejhHL0ZvZTl2b3ZuWVkKd1J2VXZIK2ZMK2Q2bUFQQWNWTGd5V202b2RtY0dvbEhvSlB5bi8vcWxEaUVmQ21GOFJNREh6RFNsU1BjeXROWjdYMUpjT0h3V0NQblFNcWwKUEpIQkpzTkU0R0dZbkRWamxRQlRpc0F1MEdnN3JDVUdneGxTVkk2RWUwWDd0TFQ4SFZJNVVTQ2JXS0lEdHVKQlJsZkhSQ2VKckY2dTFmbVQKazVNZDd5bWs1QWc1eHpXZmk0Nm14aUdTckFvRXBFem1NVld1WjBEQ0RzUUdqdVVzRXhvS1lJV1dZRUxYV2lMWUhwc0h6UlNxZ1o1K2hqOGIKeW8xY2p4eE5tMjQ1SDVZRFlhY3N2WFZZaG05cCtUUjBIQW1UMkFNN3RkOXZrMFhFT3lBSHQ0dkdsN05CcDAxb2FiUElIT1pJNUhvNnhPWDYKcFVpNU5oRlBGZElWQ0lOMHkzaEdwMFBZMFpIZ0NDUFdRYXNXNjQvbzI0OFpHNWR6SEdza1NNOXR3dnpRWDd2MlZiZktrU3B6SnZ5UVJqc1EKSXdNNWpKeHJySk9qYjZmbEQrVEJIZ2FIL1FHZmV6MHQ4bTFMUVpVWk54UnprMHFNdEFWUGxtRFJWbVdPSnE3aTN4SXhNN1l5TjFVL045cVkKSGxwNWVib3hmMkQxbHpNcnk5ZnJCMmJ3ZVRiNXNqNTJhbVh4d2NyYzBNcmN6OW53ZzJ4aXJqRjl2WEZ5cERtOWtGMmV6Q1ptVmhadjF5OGQKejhhdjE4OC9XejMvQk0xV0ZoWldGdTVtcHc4MFIzL09ucyt1dkRpd012ZFQvZXJ0eHFXajJmUGJLeTh2TlErY2FUeGVyRCs2WHI5MHBQSHkKVk9PWGkvVWpRL2k5T1hNWTNmSzl5NGM0cEYrdU5jN2NxNDg5WDcxemJ2WDZVejQ0TkZ3ZlI4dVoxZlBUcXpjdU5DYm5zdUhISzNOSG15OWYKMWs5ZWFqeTVzZkp5R1k4MFgySlV6N0pMOXhvTHl5dHppMmpaZkhxNGZ1NWk4KzdJNm8xVDJlU1Y3TmJ4K3VONzJjZ3h2bjN4VXYzTXMrYjUKaVd4a09KdWVyNSs0MXp4K01wczdtRjFhcUQ4Ynd6bzA3aTlnWHRuRXFXenUwTXJpME1yOFdIYjdaVFp4dEhIbWF2M0pZamE1MURneXltOW4KejJaM0R0YXZYS29mT1ZySHMrY2VycDVmckY4YXdpLzFjL1BaaTRuczJQbVZoUWYxaVpNclM1TWM5c0tKK3VTVDdOWlB6ZVdMV0RRc1NHUHgKYXVQcTdkVURwK3R6Yy9XeGlXeCtPVHMxbmcwL1cxazhoLzZiMSs5bDAwZXk0WHVOQjdJZEwzN0tUbDFvTGs4MnJ4OXJISnpQUmhjYlI4YnEKbHc4MXpqek5wazZ1ekoxcm5EM1duRjVxVGwvUGhvODNuOHpYejE1c0hueVVqVi9MaG05ejJPUDMwQzEyTmpzN2dwM0tqditVVGQ5b25IaUkKUlZ1Wkc2OC9mWTY1ckx3OG16MS8xRmljYU9EWmUwUE5tVHVOeFpIR3JhWHMyRUxqNG1MMjhtejkwZ1BzM2VxbG9lYWRBeXVMeit2WFh0VFAKek5TUEhRRFpyRjRjWGoyOVZEOXhHNzluMDgreXhRVU1wZzRDbURpNmVtRzRPYk5ZZjN3Mld6cTY4dko0NCtVMFhsRi9lbUoxNkVqOTZIMnMKUnYzYTgremw2ZXpJOFd4c3BERzdXRC94SSthWVRWNWJtUU5kM2FwZk9JMVZ6VTZlV0wzNmVHVWVNejNlUFBSeWRRakxPSXBtb0xURzNWTWcKRWxBbVBzZExzMXVqMmNreEVFOTI2eTVHZ3ZGajZSclh6alR1UDF1Wk80MzJXTkxWUS9kV3I4ODNKcWZ4OXRYUlk4M2xDL1VMTTltTG9lenUKMGZxaDRXemtLVmExZWZnVWFKSjBkZnBBNDhpeGJHNDZHNytQVDdKajUwaGRDeWZaLzlRZC9IOWwvbHAyNldGMmVhaitkS0o1ZDZ3K2ZoWU4KUVBtTmUwZXhVUFhaZy9XaEU2QWk4RXMyZERFYnY0cHhna3J4RlFhQVdhTnhjM29tdTNvQ1JBakt3VUp4VDEvTzFvOU9OZzljeUc0K3JGODQKc2JLNHlOMDVjRHRiZUY0Lys3QitmTHF4ZElMY092dXkrZkxPeXVMUnh1THhsWmNqbUFWWDdPa0IwQ3BZRWx3R2J1VmNaaTdYTHl3MWJpMlEKa0JZbXMrTm5zUkZnVzFBVTFyeCs1U1RIUDdsVVB6OE1Vc1RJcytIbm1CYzZBWlZtWStmQk5kakhiTzRjS0MyYkdXbGNPd0MySXQyZXVKdU4KUGVPenh4YXlxd3NnRDZ3dFJvWDJJS3JWMGVPY0k2aDM0VmgyN2xMOXdRMVFMNmdSWFdHUnlRVUxrODJoUTgyWnM2QjJrdUxWK2ViMEZBWk0KZ2p5em5DMWNxbzlodXhjYUoyYXlHNGRXNzF5c3o4MWtKNDl4R2UvTmdoTHcxT29RUk0xUU52MFQ5MjdpRkRmOTlJSDZ0ZEZzZEVSZWQ2SjUKOTJZMjhoZ2p4TUtLVER1Sy9yT0o4ZWFUbTFqUyt0ZzVTQmd3QW1UT3l1Sk5jRnpqN2d3V0pMc05ibDNBT25PbVo0YXlNOVBaS0lieHNIRm4KRVJJbVd6Z0RtWU5sUVh0UUk0YlVlSEd1dVFUQmNoWGNCN25YbkxsQktzWFdYd0wvUHFad3VISTRXeG9ENzlkL25LcWZXV29zSG00c2ptS08KamFsempja240QnFRUkRZK1diOThHM1JWdjNodzlkeHBDcyt4aDQxRFU2dm43NkdUMVRQVG9GNnM4K3JsSzluY1hQUG9iSE5tcW5GeEtWdTQKazgwZHExK2FKRDNjZmx5Zk9kTmNPdFRnR0VhYWR3OXpaY2lKMHlUNDgvZnFoMEdmQnhxUGxyS1g5K3ZuSWNZcG5WWi91VUJwY3crQ2EzNzEKOGczczQrcm9xZXpXWWNoOGlKZlZpeWRCaXBCNHE2ZWZnZDNJS1pqVTJNakt3aStOSS9mSkdvc1R6Wk8zNjg4aFlhNXhoTlBQc0xPTnU4ZEIKY2lLSG4yTlNaTHJ4NjlRbXA4YWIwdzhoU2FoOUZvODJuOXhiSFoxb25IbE9Vbnc1bTUwK25yMDRTeFV3ZmhzdE1XYnV4Zkl2cTBOWHN4L3YKWVZXNTlROS9naVRIUkJwbkhqZG5TS1gxYTlleEk4MloyOW1Ka1d6aVVUYnhNN2lndVh3R1lyLzVaR3BsL21GMjhuamo3a01SSmlPZ0tETGcKekJQeUZNVHl3cGxzNnI3SXo5UFVML2VPWmdzVG9KUG0ySVA2cFVQWjZldnNqWnY0TEpzK3RMSjh1VDUrcXprRW1YTm1aWEU4dTNXLzhmUDUKYk9JbVJHdDk2RUJqL0JuL2ZXUStHL3VsT1gwTHI4dVdoMWV2TDBMbVF5TmtEeWY0MHJGVDJSQ3BsTi8rL0NQMGIzWnN1SDcwd2VyQm01QVAKZUM4bEllVG55RERGMFVsTWJaNmNEdjY5TzRLWnJsNjhBY2FrM2x3ZXhWQWJaMmFoVTBpb2tKeWpDN0xPeC9GVmZlb21wRG9tV0w5d3RYNTIKZUdYaEtPaUgrdmZhS09aSStUOSt2YmwwR3B5SU40TDhzT09ONjBQUUZ4UmxDeU5rbWNXRnhoVG8rVFMwR3hYUXlVT1F0eVFxS0pleEg3T1oKZWJ5M2VRVDhQa09OUEhLTS9BdFpjZWxxNDZmRGZQYVhvNDJwSTQyRnV4RG0yUldJcG9uVm40OWwwMWZJNDJQUE1IME1GVkFCNDJsTUxRbS8KSDgxT1hNM0dKdXZucjFGTlFBTUNFZ3dkSmE0QWQ0K04xbytOWnNmUGt3dk9UNjFPam1TVE4wUW5Dbk5CclU5ZXEwL2RhZ3pmQlpYV244OW0KbHg1amppUTU2TlBuVjRUT3I0TElNUjdva2VZeTV2VUNDb0xNVG5sNEdwd3Jlb1M2aG1wbDVqQlVXL1B1a1d6cFBEbmwrQW1xczRXcGJQb1kKaUtkKytDcS9tajdTdkRtTUJ1RFExWVBUMUJFUWd3dDNWbTllSlFxNitMSngrRm56NVFPaWxQSGI3RzM2SVpFTVpQdDF2UGNZR0orNzl2QVUKeGNocFNMQkx6ZHZMNEVSczR1cndqOW5DZVR3T2ZiZXllS0grWUFrU0FPcWVVZ3U3UEgyTUFwYkk1QncwSFRUcDZvMlJiT1lGVVJibWUyd1IKRkFLNXdmOHZUbVREYzF6VnlXdlovT05zQWx4d0dGeVozYmdDUHExZlBnbDBSTEs4Y1dWbC9pamUxVHhBVFZvL080WWRKMjNQUHdFd2c3SWoKeFlJZ3diWXpSNEEzb0xaV2xxZnJaK2F6aVlNcmN5ZnFSMDVueHgrQ1F5R05LZVZ1UEd6ZVBVaHdNbldCWU96UlV1UDJsZWFKNTdKUTl6SFoKeHVMZHh1TFV5c3Ryd0NHVS85Q0o5NjRES1VHVUVXOUFCdDY2dWpvNTNMeDRvbjRhNnV6UzZzMFR3QmpreDZmUG9lVkpueTlQQTlVMHJrNFIKc2w2K2pwV3ZQMXBzbkR2ZlhENUpoTE53RjdPQXVvZkV3N0kweDRCZ3gwQ1p4SitUVjRFUXlGWm5KMWFCb0VqYmgvRUtvc2VIaHlpMEg0OFMKTVFMQmp0OXJQcmtLQlpHTmdFL1IxVExBSjZpM2Z1NGw0YzNFK2ViMFBTd09lUllJZWVMNDZwMHhvcXdYQ3hTL1EzZWJ4dzVsWUhrZzVLTVgKVjE2Y1dqMy9DT3NKSXFTV3VYUzhlWGVJZ24zaUlCNEJzMEJJa2dleHY4dVhtelBBVVVzcjgzZkE0TnlJcDBlaEdSdDNpZHpBNEZ3Y0tMTHAKbjVvSHJ6ZHVVKy9VejAwQmlRRmRVQWRoaGNldmdIZXdtOEN1cTZPam5OZkoyMUJlUkNQWXU4bHBzdHZZTERSdi9kUmhvb3RMUjZoL2I0MDIKYjc0a3FvRWd2YlNBcFlQV3k2Yk9nN3l4MFpDZkZQSWpZTmhUUkUyWGI1QWpnQjRwRDY5QXNMQzNoMDlBWUtCZTRhWnhZSmptd3h2NGYvM2kKTkxpSlVtVU9aRE8rOHVJYXBjSFlML1dwWS9YSlIvV2p0MFdQVEJJMkR4OG5CMDM4VEkxNS9oa1Y4ZVBSNXIzeDV0SVMrQXVjd2gyY3ZrRVkKT1hRQXZRRjQ0MTB3R1dpVlBIa0M2ZDE0OWdpNGxNZ2ZHbXIwWjdBUG1CM3ZncFlCMUFHNXJsNit6LzFhb0lhbEhBYmR2b0FDdWduOW5vMWQKVzcxNGk0cy9OdGNjUDRpRkFtN0JqdFFmWEsrZm5ZUEt6aDZlb2lZZCt4RTREWnF4ZmtSR0JYNDhlWUlJY1BpZXZQY3BaTXZLeThkUU9vMnAKTTFBTlJCckxsMWQvdWdTaGh4ZlZidzZCeHJBWDJEdm9Ba3l6L3VoSGJqUms5ZHhjNDh4UHpkSEhITS9KRVdKQ0lEM29Ta0NhVzRERXovRFMKNXBYajJmeGM0ODRFTVQ5UTFzc2JWR1NqSThDNmxDZUFyTEJ4eGg3V2h5N1hENEVJVDFDUEhKOEFGMEFUWVdyRXo3ZGZnanRvd2h3N0FsRkoKVW9RRW00ZTVkSWtFOXVJWDBBeTJtOGJMRVVpUHd5QkZiSGY5OGpKb0ZTQU5JZ3VNUm5QcHdtbk1qcEJ2SEp3eVNSRU5tK0w0S0JhY2FucmgKRHZmcnlIM3kxTmtuQUtJWTN1clFOVXBPMHRqNTFhdjNJVSthVCtiWUR5YUlyWnljV3oxL2lkSVkydUhsTERVZHJDckljK0NaNlhtdU1KWnIKWEt5a3k5Y2hEMmtxQWoxT2MydEE4QUp5bm1XencyQWNTTTdtOGhVd0tSUlFkaHgyNGhJZXBHbncvRzUyK3paRUJLMFlhRDBZc0pkdlc1TVcKTkF6YUk4MUFtVUxwUU5xUFgrSGlnNm52akVHallZUEFYNnRuTG1Lak9ZV1RZOEI3RU9uWjBBc1FHQ2M3ZWFweCtTYjBNa1FUcmJDRm42R2UKVmk5UW5WR2lIbG11SHgyR21GMDl1eXdjdDBBVUFZc0pXaGkyeWVJVGNCbUVjMzErS1h0K0o1dDRETzVlV1h3SkVvS21BSXZCcW9MMmg2eWoKVVFiYU9ITTFPd1h6NmlhNENmQ1ZOampvNXdXb1lyNTU1QkZJRHZQQ3Z0TlVCRGRCWXNEQVB3ejZPVTVSUDN5WDJ3ZE5Dc0c0ZkpKa0E2RzAKZkw3NStDWXgyek1BOHRIczBsVkM1YWNYNjdOWFlkbFJBWjI0UitnTG93L2p2enhGZlhya0xxMHprT1hRTlVnYmdoYTBtVjhXVzNLaFBqSFIKWEg2WVRWeUFsVVNXWDd4S2ZqOGl2SER4Zm5ObWlSRHJHQ1UyY1NNc09MejB4Q0oxMEpIanNNcHBIY3cvQVJYVkx4L0UyRUFESzNNdlFiMVUKM3hlaDNVYnFsMzdtSENGdmFhVEF6cjBKQ1VNc2RHUXN1M3krdWZBTGRnSHp6UlpHTUd6Z2RoS2U4QXZ0OFV0WG03UHkrU0hZQXBjSWR3OU8KTjZabkFTMW9wODhlaEJMTUpzNUJsbElid2xDZG5NUEtnN1dKaXNkR1ZuKzhDcnNHZnphdVR4TlhRMVl2SGFWbGRIa0lWa1A5Q2l5Rmk4MFoKSUtKcG9xRHB5ODBubHlGUkNWcHVuc0RjNnlmRVdvZUZOZk5qTm4wTlBBS3hRN2gxLzJ6emwzT05jMHY0Q29ZSkpRTkdBc0g3eTBWcTBzUEwKalY5dTEyY21SS1JNWmJjc1I0L2dFMnFmVy9mclQyNkRyWWdrSng0MkR0d0VSUUdqWXNyMG44ejlESDJVVFYrZ093SW1BNUQvNUJ6VjlOaUYKeHRuYmhMNTRhZ2xtM1JpTm82VmxBdW5KS1ZBZzdkQ3g1V3oyYVAzYUJNVVJqRVNzTnNobTlFbmo1d09rcUFPbkJZZytFSGZLYVRCRi9mcE4KVXV6NFl3aVRiT0pPZHVzYytYZjRFUEE4VFFBQ2hndkFiTm5rcEdqbjY4MmZnZEpQclA1MHNuSDNBTmFLeTNYM01GUm4vZGxZODhsOE5qd0wKTHN1V0x3QTQwVWtGSTNUdUR2Zjk1SEZNdG5IeEJYMGpMNFpnU1ZHTlVyT2ZGMDFCU29QRWdFMUJ5MUVzT1B5TzNtQ3RpSWw2RlRxYWdKOW8Ka3o0b29oUWdnY3RYb2FxdzErQUN5ckZoK2lpd09GUkdMeTQwN2c1aEdRSDhzQ1lRb2FzSHh1dGpqMGhGRXpmcDIxbTRsVDJjSmVwWXZnenoKWEN3SU1QSkJ2SnF5aFppS0xySnNkcFlrQjNWNStDcTR0VDQ5VG9xNmZxVis4bEwyOEdnMkMyVjZnZ2JhMlBQbWt4dTBsVzQrWEwwSzJFWjMKRUQ0aG5MdjhFK1hHL0NPWVJaZ2RSUnd3MWVRNExlaUxwL0RKS3ZqOTJEQ2t1dmpRbnRFU2ZEcEpDQWRENE9pa0NKeGpHQXhsMm9XWnhxVVgKamN2WUMwQ1VKOWs5S0loSklrbXN6L0ZmNkRwNGNhRis2QnJJTXJzNVNtRTRQTnM4TWtNbjJQQXdYVFFQN21ESFZ5OENKei9EWEloZWdFQW0KWm1DVDRuWFFrdlE4d0hLQmRVa2JaSWtlZ3hzdjBNL0tpL01BdmZYekUvU0R3VnJFcG1EanNORlQ2SEFHbExNNmRKQUM5c1JWN0RWQUY4VWcKT2prM0Nsb0N0RzRzTGtQS05lNFJCVFVXeDdCaU5EcU8zSWNkUngvTHlVdU5vd0NCazlqeGxibmJGSG9QNTVyTGw3S1JpNXp5cFNPd1pCdS8KWUoyUHdINXB6bDRIbVdHaE9QTGJMeHVMbC9GaGR2d0FEZHZsUTgzbFNVd0toZ0QwRVoxT0x5NWs0OHRzaWNFL3VObDhPcEhOdzBJNVEyY20KY0FLWTYrUXAwUTRQS2FpQnU2YVhnQlVoYy9pV3A0ZUJZTWsxMTU2cy9qVFJ1RHhFNlhUckxwMkJGMmJxTTJkSklSY1hLS3VQblNPWFRSOGoKNDJDenJwNkE4S1Q1QS9FTHBYL2tOT1J0NDh3TitqZnVIQlFQMVQxYWY4dVhHNEJZazljYVQ2NVJQZ0JiQW5zZnZFZGNOTGxFYitUaFNWRTkKNEpHYlVGc0NtV2pqVTROUEg2bWYrTEVPNERkN1pIWDBtRWk1U1podk5HenZMNnplT1Fmd1RJdmozT0hWKzdORTEzTkgwWWJyTUFMcm52d0MKTTN4bC9zanFoY2ZaOEJIc1B2MVJMdzZ1TEV4bkl3QUdSeHNuN2xQSExkM0N2aE5EUGp3RnBRdzZvVDErYjVaYWUvZzV1bTJjV1FSb0lYcDUKVEtNVjZwNVlGRUQ2MEV2UU5oMTMxeDlRUjhPeXVIUzBQamRjdi8xVC9lU1Z4b05UOUJKZk83QzZTRlFHeWlIWnoxNXRIcDNBZGhPZHppMDIKcHErdlhuaFduMzdhdkxlWWpZdzNsaGViTTZjZ2hNRTQyWUdmaUloZXZGaVpQMEdqYjNxR1cvYjhkdVBvVUgzNDZNbzhBT2RjNDhRTW1mb3EKeE5FaTEzejVLZEhJRlRwN2dlSzRrckNVankxak9tN0tNQTRkRHZpTTYvTmkzNU1ReWRnUGZkZVBFbDlYcWxFMWlyOU50WnN5VUlVbm5sNGsKQWJPaEJHd2ExanVJbFFUT2htRlVLY1JhNG1mRHFvNlpoS1VZdnlvaHBjYjFVMDk1Y3M0ZXFUUkVuOUtQOGVRVGlacVBxN0hHZTQwdXZWb0kKSlk3VURFU001WkRBVXNOMGtsQ1ZWWUc1eXlVNVNHTklycEhRUWc2YjBTamZwbjdWQmo0YWlhMDFLaWlsb1hLak9OYVJUZTVrU0s4ZnF6ajIKQzR3K1JHOWxHYm5tQVRnUE1qaE9WU240YXhHSmpEdGxxTGxob04rcnFWQXJ4dTI0MmdiaFN1eW9oT1lXRkVOd1k0bUZ4WGhTeHVsSmJFOVUKWWNCbU1NQm9RSDZPK2NvcUdRbkFOUktrRzBwVkFDV1J2SWJuVUl4bTVpbTdwNW5QSFJWNXhpYVJua2JpWVNKbVR2aEtnak01UjZ5WUcxV3EKTm5OYkc0bjI0YTdGZUlFdjRaazh2N1dSa0xIRWZ4cVA4VGVZWSt6NnFocDVHQVN6dFpQSTh6bFEvRjRJSktpWVVRS1lhOEQ2SFg3a3hyN3gKc1p2TVE4Sk9wZXdCditzaUtRU3JFbU5sSmIxS2F3WkdSUkpBTFJIS25wSWVWRlRrNm1FRjBGUzM4ZUNjSzZPTW5KVWJpVldMR0xOaysyYzAKS0ZZcWtyaEJJMUhYQnBQMUdXWExuQkVKb3pheDJ2L3FNZDVaOERuVGxERnVVYUM5S05FaDloZVRmYlZnSkRxUDBiSitxQmpYaFBGeVpaVEwKc0tiSWZYWGQ4L2RMM0Nkai8vQ1VaSHNwN3Y1K1VyZ2ZSTmhGanBra0g3KzZ2OC9ITzE0OXJ1cjlwQ3BQRGJ5YThuU2tCM2gyV1ZYTUFxNW8KaHBBemxKVnBRRXlYS0w2Njd2cUJxd3A0U0NLQ0pYelZRNTk0T3VwVFZjeENnbUZOUVNoRUlxZU5oTkhHRWkwY0ZtVzFzZGZjY1liNkdrblgKNVV3eDk0SWZGRlJFamdEaGtDc05ZNWlVeERkNjBlc25yeGQvbmZoMVZMTGtGMTQveE04Y3M5NS9QUzZmUFByMWdPVEtQOGJ2eTc4TzRmT0QKMHVicHIwZndjMGp5Nm4rU1QyYngyM1BKcVYrMG1mYXZmNVJubHlVTGY0cTlTWTh2ZmgzRnB5K1lyWSsvRi9sdlp2SGoyU1hKNm4rTTFtdmYKdno3RHNiMit5dmZ5Ty9RbkdmeVNZZi9pOVlMMDkxajZmOFRlWld3dlhsOS9mZS8xU2Z6M0laNjlhMmNoeno2U2IvRWt4bjFEeHZ4RVB1TmIKWDhoOFpkYjQ5a2Y1QkcvNWRWaG16YjVaWTRBdG4rQ2ZsK2o1Ui92R3RiRXgxLy9IMzBlSVp3K3M5Y0EyUStoeDl0OFZBK2J3eEV0WjB5dnkKRDlkNlJONytVTnJZT2dhc0xMQWtsUU9XMERQSGFlc1hMUDE2QUwwOStlM1cyZDl1ai81MmEvNjMyMlB5KzlCdnQrYmtrN08vM1ZxU1Q0NysKZHV2TWI3Y2UvbmJyWi9uM1BmbDJRaHJnLzh1LzNacVNwMGI1SUQ5Qm0xdnkxTHo4ZTBRZW5KYzJNL3lGLzE1aUd6YStqZC83RkhsYVdsN2kKLy9uVThHKzNIdngyNjQ3OGZ2NjNXMlB5MVpMOFBpR2RUTXNiNy8xMjYrbGFueHpWN2QvL2pYZGRrSkZjK3IyZklYbWQ5TVBmbjByTGUvTEoKdmQvN1JQc2pNb3ZwMzFkZ1dscGlESS9ra3pucGJWcWV1aU9mbkphblJ1VERCOUpnU2o1NUlOMyt4QWY1MVQxcGMxN1dka2g2RzNvei8vYncKMnlOdmJ2UGZiMGZmUEh4ejk4Mk5OOU52WnQvTXY1bkJQM2QvL3h3L1Q2V3V3OExiOFRlelVzbGhoUFVaMEo0MUdFYlFmdmJOTTdRNy9QYlEKMjFIOGZSZWZqcjBkZm50UTZqek1TeVdIdS9JNVc3Qml3OC9vK1NDck82RGZxVGYzMFJQZSsvWUFQbnVPM3U3aDdiUFM4alpIaGQrRzBlSXUKV3M1d3RGSmJZbHdxU2N5L2VZWnZ4OThld085VGIzNlJ0M0pzbytqM0p0LzQ1c0hhVEVieCsyUFdvc0I0UnQ3TXlKZ2V5N3RtTVR2T2xGVWwKSHJLV0JGcmVsTm9VdytqUmp2aG5tUWxHZ0tkWW8rSXBubnFDbnlsOE1pYlZLbGdONDY2TWxrL3dQYk9jMSsvUFlvUTMwZmNZNW5rWFQ5OWMKKzN5RWI1T3hjQ1pqK09jZ3g0dVdJMittdWRyeTI4L1M1ekRlZVBmTmRabmR1TFJoNjZmY0cxbWYyYmNIV1IyRHE4UTFsbjJaa1hIY2xQWlkKWit6ZHoxeGRQREdDeng2Z2oyRVp3OC9ja3pjUDhOdDlyTklJV283anJjTm96MWtzdkhtRVQwWXdoOGZjY1JuUFlhblN3Ulcyb3p1STlia24KODc3TEZVWlBONFZHV0xYak92ZEV4akc4dG5lSFdORUQzNUxtZnNZM0hOVzlmNi82WTFtWlEvS3VlYUdLR1l3UDQ1SzNjaDNtcGJkUjZYK1UKTXdmZHpMNTV6akZJYkpqa0JqRkdrckduYVpDVUdlUWFGRzBFdHNBNkJqeWxWWWxHbERBbGo1VTFwTHFEUktvVmxTbjdVZGhsWSt3bDVDU3UKQWU1SVRxOUUwek5kbjdyYlpnS1lPQTFEeVg2TytEaXJFVENTVjJLVG1WM0RQTTVCSFVqUlJlQXpOOUJwS0tVWFFzMnM5bjZpR3hYV3ZCclUKcWszTE54TFFONkRjR3Zwa3RIbXZuUkhMMGFCVHo1ZmNpRmhMZG5Jczg4VWJDaXcvVWZhbGFJVE5BekJyNGNwOEM4TmRkY3g0VjBiSXNQaEEKbVpIUmdZMjd6eXRQY2g2bHNvZjJCclZFT3d1MmRKbFU3YVV1eTl6d0w0QVpobnd5bmMxVm9VMmU4RXdxMHhYUXpOd2l0OHkwaFRTV09oYk0KTW1IQmtRTEFSVTJpbEtWMHAySytweFJ1aTVtWWdPOHFpbW51Mm9ZbEdsa0NBb0tRV0FHREtESE9EeUJISnpXYmp5RnJ6VlF5aWNuM0VrQ2YKRXRNVUdHbHJHSmJKZUxoQWNuY0oxa0pDZDRZbzF3amlNVnltakRQTVNZSyttRkpYbGRTRWdMRk1OcGRrWXg4Nnd5TjR1MnduNjY2aGIvdWwKM3NmZ1diT1dXMUZndkthcmQzR21wcnpEMGxsU2pobHl0VWZDcFIxZ1JGdjJnYUh4aVJxUTZEc2FDSmk3cEJ1VmRDOUlnWlh1aUdmam1xZGQKUmpZeFdaWEpJNzdoL3JIdUI1YVl4UlA4aEhVMkdieFlrb1M2Z1BUQmxBRXRMWTBOZEpMNkdLeFJJZm11TE40SWVHMnpISXhOeWpBMlBwdEYKdTdobUpERHNBR09BZmNrT0lXbDRmb25Jdk9xN1hKNXR0dVpLaGNZR1YxNHg2RGV3TzIzVFpLeEZwQUlRTGluU1prKzAyN0I0STNHZEFJMWEKNHNZWUtjdjVwU1p4Q3RwbWRwaS9XV3BObVd3UTFEU1R6anptU0RCZ2pRSCt3bU1EZmdSSWlZWEU1eHlsSkIwSXpYZTFwMEhQdWhZR3ZiS28KUUNCMVNTU2V6dzhad2NmUVRhYnlsYlN5VTJFQk5JQjZpY0RYWGxYU0RNTFV2bitubmJ1ckpLMzc3NWJWR0VtYk1pa0hiT1NDeXNFajJ0dkcKOGlGTXlhQjlBOUlvY2FzY0crZG1nM29aeDBkcTJKWXk2eXdwNlVUbUxxa3Roa1BCWDN2c0ZydEsrTmNteUREUFFKSmRpT3BkemZ3QmJyQ3MKdFNIVndUTHAzaVJ2K3NRS0FhZmJDZldnczhQdWcwMXQ4bnBKSVNyNHdzb2V5aEJmU2ppUVNjRFg1SWNkekc0clNUMmlBZ3N5TW1UVEZMVGsKa2tnc3VQWjI2alF4VE9rSlNmTVN2eC9iT2pzc0pwTU02clhrL3FCbTdQeEFVcHgwcjJWZnlKY3F5WE5mMlMvNENSTiszMmxyMjJHRmg5VEEKWVVMMUFQY2hTaVVLZEMzdlpTMDVab01WV3RXVU5xQVdPZDJkc3lIM0RnUE9wVENIVU1pbllrdHlUMEFGekNJQ205VnNZb3RwMjhTYWdpMlMKaUJCWGRsaGh4ZUswb2MwS0lvRlZtVnBUWW9FVWhrbGF3U2t4L05yN21OUWZRZ296QzhoamFHMWM2ZkZodWFTZUhpeHJTMUxNQlBGNjdZNjUKS21HZy9qYXJBMnhPa1Mzd0JHNElmVDR2MGtiWG1PZUNsZC9CN01CU1ZHYkpFVlg3MkhJNE00WkF0QnV0Q0JLU0FpbHExcVV1a1JrSFNMdUcKZ1ltU2V3WENwd0FLYXZtV0ZpWUw0TFVPaU13RDdZQUR0a015WUhOM1VPcENTV0tKSFphYjlORktmeHBMTGVxY0l4bllObzNEMEw3MXBTZ3oKc3hVK3N5SzluRXJDb3g4NmJBVkpvUHpZN01BS01wMlpHWVlxS01RMlBOdVhQS3RBV3BlMnNnNXZkODVtVHpoclNVcU05TWVhZ1prcmZzb3MKa0g3TWRsdUZaVWpWTGs5eTQvOWw1LzY1MWRwTVMzR1NTQ0k3dTNOVXBvSGV4NmhwVWtFaW1RY0ZSczRPYUtuNHBlTTJtMzVuMCtrTWF6TGcKY1piM3hkeDNneG1LMFQ0cU53WW1RMWZSYUJaaEJaVzF6NitrbGJJVmNwQXJ2aGZVSUo4clVvVVVWQUlGajNHeTdMZkVleHVwYllXcFlBVGEKNWxhbnJQWWFLcFBVUUo1NHE5TnJjVWpNRE1WVVU1WkVsZHBYRmxaZ3pVUTNVaVpUd0tGbnZFOEplZWZ0RW15enFHU1hSNDNzR0YwaUYzOFYKUVpRbmprM25NSHVVNjF2UnpOeUF0T29NU3ZraWhydHVIZFFPeTM1dkV5MjVscVZodnJIWmVpeTVoRWtyVndRRUt5aGozNlhvaHZhMk9oTEsKbTFnd1ZLRFdOVWtCTzFIMEU4WkZZNEM5VnNDek1pbldEQklZSFpwS0pQS0ZkZkx3SDk4NExHak91Y2RHaTZjRVc4SDYxTjA1VVhVZ2FGWVcKR21ETVAxTVJ1QTlTdWJTaXVhTDc4UDZLelFlT3RVME0ycXJGcmVaaGtSeldCV0o0dGdJUGkwb2VWRFV1dWJNdFpSNnJ6VEl6T3l6NHNsbGwKUm9yQVFZK3phSnFSMUJBTVFpcGdyR3Vwc3FZMU5Ib3NxWkV1NjQxWEU4RnVEQ1NPSlZuTkJtM2JORTRXQW1PS25MTitQUmtQQW9Semh6SU4KSkljVndod3l4S3A1QzdDMEFsbUNLWmxXTGVLQ3lXcW1OUzlKUHBKeDdLN2xJVUdUaUd2SCtzSThHOVR2MkJ5Y1dJcXVNVTZmdFlyMExnbnkKaHpBV2JiK1daTG5EUWo5ZmZHWkJDRmxPNkpES05uNWpVeUtZMGtFNlkwQjByb2RDUENBc2xNNm9DUEJkR3lCbi8xb2FtZmIrbXJJOE12VlIKVlNyRVFRdFh6TjR5Vkp4eEt0RitvaHR1b3k5bFdaaldxQzB6UThCVDNHMFZpdHBZWnZrdDdYMFoxQ29BR3Q5WUlXa1RXWTBVcDhMRUFLbEMKMzEzTG9yVHBqSXpQQjFJVUgyNGl3a04yeE9iSFNwR3hvRmF5aWJCU0lndjBaNHZVVVBHeEc2c1VMZVhuV1pXaTdGZFpzTWRuYXEySUxzbk8KSVV4aFFTSXZUV1NybUIzS2JFUUxHUlA1dmlTOEZqQVpnVG1FMnkyZUIvcmxlMzl3cEREUEhnc25vU0lwclZpeUhpUzJHNFFCUVcvVEU0MWsKMG1sdkYzbUhHcWRJYmM5VVhBQWUzbGNBYWRPclpTNXRkcFYyV3lqTlBMS295Q0ltTEI4a3BZdW9ya1BtWExKYzFvYU8xbmFXa3U2VDZ0b1UKRjlhTTZFMTB0YXhESmhEbzBJa0tZbFJJZWFaMUxaOUw1cG5ERmNOUWM0NFV2YkVweXdaNlpUZUl2S1hsYzdDUlkzT3pqTVR5WXgrczFDdjYKQXNsWUpBTkRvOE5VeWhzeTZ3SVdpcXdTQ3lhNVBvd1JnSFJqK2l3dGZheFpMTURaemlJNWFjV1dKdXBKQm4xQlpoRVRNMnFzN3M3eWN3cTQKUE5hT1RhTmdEUm5hWStXWVRrUXlMZGxSY3JJRVhFS1VzbXJ4dWhabmh6WHVRT3ZnU1piME54Z2czKzRvSTIvM3dUNlNXdGhGdHVqcFl1VjcKQUFsQkR1dGFiTDZlc1dQUmRrRzJFc3lpRjljaTQwMDIvVURLaTdVNHh1NVl3ZGJNc2dtbnpxQ1d0THlPRGx1dkRmUU9JZ1FNcFFTVHloOFEKbmo1VnVGUHdlYTFDamRkYk9DeHE2bkFEV1J3ZGY3MGJLNmlFVGw3WHdNcmJyTHdXbGpaWTR0Mkpmd0ZWTVhtUDlPa3pOWVNsZ1BpR2JWYVUKL0Eyd0RQYm5BSWlSWDZZVU1zWmxDVUlWaUdwMXV2OXVoWWRVQ1lPSWRVU2QybVFWcjB0SllpOFRrYkNZempiSTM5Z1hIVmZXTzM4M1Z4TW8KRW8vcExnT2NFZE9XT3d1S2dzV3dNRGRIQmdsSW94Z2lBMnRLSGU0bzJwUzBQb0ZIMmRsZm1aSUl5Q0daSnBMd1JqVmgwelJzR29pelczSmQKSEtJWnNtK3RTbktUMG9jdWJjV0tMM1VSUThjdldxTXBzUWxoSGdrSXIyMjNVcUJnczIzYXhHN1p5b3FjWXZjekxUc3YrVk81SG93TWIwMWcKZ3dSYXJEM1N2T1Q4NERzc2N1b251K1d5QVk5NVQrUUw2Z0ZscEQ1ZXJnZXo1RHJiTkZrQVNONFkwTU5yTVp5QzNES0NUVldPU0swS0RkUzQKMWk2WlUvbWloUUFlOWdUcWpNVnBvTmxjaTltbDVJSFlNclMrL0VTMGZaaUtTUHFyMUZCM1JGU2FoTkFQZnhhbCtDUmxBYmlTWmIxWWU5TUsKRkdld0hIRzRKTktVUlRTa01JVUJ5TWQ0WmVsWU1sUHkzVzFDdCttVm1nVU95L2h6TjZNS3Q1TklDVVJGL1ljWDJhVEZya0tObStsOFlTSHEKSHV2c3NDbXZMS2RKOW1EaUVuUjVMOWdEL1VsTnQ2QzJoNW9KRWpKeWVJSkZ5eWFsbFV5ajFOZ3FDY3dacG5ZeWtwVnNlSVVLbG9uMWhHaGwKS2Nscm9zVU9vV09UQ0RlMDJVUXNNU055UGJSNkVyL2FhMDFuVytuQTdFM2pmZ3hDQ3FmcU9DOGxORGNJTG1ocEtWZ2FsTkoxdklhRGVacHIKbFIrNnYySmRqTmlUYlBLZ1Z1VTlLTDZZeGY3dktVUXRrdXEwOVk5cElBd2toMlpHTGxJUUNRWlR3Slh5OEFJZHRKdXUrVU9NRkZQRnhIWmEKSjVkZDFwYXRqbFFDbExwdlBNWktJUndxWWxCaHEraWV3dmoyU1hVN1NXOWQxMktySE9UL3NxOFNPQU55cjQzWWFxd0F4em9DM0NUZXFZQTIKR3ZpNHJhMm5OUStPalRmWWpEM0R5MVh3QU90QTRYOWlWdS9YZjJNYUtBaEYwa1JCNDdIYm5XdmZZMzFJSHJQTDZVa1N6SmRZSUxoSFNtazQKdkxYRzhjTy9zbkpiV2Q1TWdHbHR0UzdKUnU5UmpzQmczdHNRcnBjclJlS056aTdyNFNuQ3RpTXFJOE5FOFNjcHphSGFOaisyTlE1a0tpQWIKV2k2ZlM1bVZ3T2I2bVQxcmpxV05RRldlNDlpOHdUWDNEMHZVU2laOUVTemRZa3RnbUkvbEpoMW5tN1Z6K0d4RmlaNnpsVEVBRUdzc2NTYzYKUUVRejJ4dEtMeUJlMzdCMkhDeHoxc21QbUlRR0hKekVPMnkxa3M5VEEyUmkvbTdOS3hoVUZjR200cjJqdHNaNmZpcDVvaHVsZG1aUWE2ZWQKKzQwQ3k4aWRBbEtMWU1PMlZNb3Nra1ZCYnRhN3RmSFRVRGdPa0pnNzlvbDJlRW1QVFFVMzIrUXd0dGJ5aHordzR0aE9HSlVhUXNqYWFwSU0KbCt0aGFqZFlSbkRQZnIwTmRsOVpWVGJZMGhIZldRYXFwdEoxcTZpeERUYnJzV1hudHIzYi91bjhKM0VpY0lYWVJUUXFFb3hlRXRmcGhXTjEKeFpyempkVDdXeTlpQnJKTVVqbU5YOXhBMlBCcElzTjlsNWZRZERxNUhxbER5eHR1UUM5ZldoK250a0NYVitLSTdHSHVabGdTOU9ORW9aVDcKRlZoUnJMbVVmT1FxNjVkS29QTUhRMXJWclBrWkRwQThoVkhERWpjTTMvRUtFSkJ3em9GRjNKM3ptTElkVmUwYkVzeUJGR0F6WkEyTWY0NkMKMVNuQnpTcHdhYnkzZG9xa3NNbUNDaGlDY241QTFMLzREcUZldDFudksydno2alJXMW9ja1I5cGdsU0FnSmhwY201aW9HU1BPdjJKTkJKRlUKWHluNlpHME0yazEyV3F4SWt4WEwweUo3NnRpQ0s1S1BpVjQrazVJSHpuWnEyS2hJYlNqdXhaQVh4MUFOZ2xMNjZhVHNUeVE1ZWIxTmpNdzUKdHBSTjk2Q1ZwdFR5WC9tbHpoYVpIOHRoY0liYnNGRWJIVGRPcFg0TjZ4cmtldWpIUkw5U2NOT3dtQjJOYkJvRzZlK0dwckZad1E3WWtDNEsKd1lyZFRzczZLWHFaUkZKazRDdHJzZSt4ZnVIZEZtdnNvYU9BcFhta2RNWGYvSmlrdFZhUVlZZDFhKzJ4YU5UbXduZFdDUlZZNjBMUjVmbVoKV0t1T3JXTml0b1VBVEdITjZuZm5LK3ZhMldXdGNtdCtHTmRTT1RZZGxHS2hHQjBvWXZXMDJVSTBYMWc4S0xtZ0FKbS9WNGRRTENka1MzSVkKM3JKRWNDTEZnb3hJdmtLTitsYnFkc2Y5NkJQMENZS3NBWHpTRmNqdjBMbXk4b3dYUm1IaldscDZvU2lkOVZJRmViMnR1bUg2ZFkwRncwWDMKQndGVDFORlNLdGEyZHRJN3FRY2RXNjNIa1ZyWkVLYXh3d1JtS2FYUXVUYmFUdkc5UWg5Sm5yZXhDYkFPdlJFNktQWmFyOHB1TFVuYkE2S0UKdGRSRE1tVjZZS0dXRXZxWGdHUmRxWmxBZGU2d1NoUzFwOW1aOWxNcTJqSkJHOFVnOXBOQksvSjRDeEUyUURtU1lwemJtaXNuU1pWdkJpZmEKcWhNdFVuWW9xTmxhTkxGckRRY3lPbnNYWEJmMjJ1TUUranZ4b29EbG5KTmEwZG9XRlBJQU5kcmFWU2FsbzBuM2loWHBsQzFkZnlVbFRrS3AKSDJDU2JRSGRLVXFValhnOWFGNEo5czMxNUFXR2VsNGtPS3RvRjRUMVY5R0cvaENWbEhkYWpiZkR1bzV0elJ2VGFwVU5ockFHMDNnakhGR0MKRlYzMHlYMXFEYzJpWDB3MEw4RnhlQmxiWGtwMzV1VmFndEFyMm5MeXNOVllTZ2c4RlVpK2RnbnkyKzEyUHNmTDgySmtRL3BaWkZ5MUJVQ1UKSTNXdFdYOE5TOEFLOWhRQzR2OXlDbUsyeEx6WnpLSDFURFh2c0ZhQ3crQVd3ZnF4VkNWWkszTEVDZ3FKYUtkRTZnRUhVZW9WWTdwYTBObm4KNHF6WXhNTXUrbnRnUVVMcGJiZnVZYUwrU0I1Z2lOR0E1VnVwRUEvd0xEWHNQRjZ6QXBGaGF6bzRVbWhFZTU5WnYvY25VaERLa1J1ZmFydzQKQ0gvVnhOc0VhU29GTXlScWlCQ0RsZWh6UFVaR1VPSlZQNkRCN1pLVjNjcXFkZGpzMk5aZStoakttR2RuMkFBSG1pWmw3VFhQMWlNd0xBN3MKZ0Zpc1M0OWxOcm5GMUkxWUNTVjJqcVZJS1FDQVI2RzV2TWhOWlNITHJLMHZ4ZlJabWFhWVdnK1VZNHRlOU94bXVUZFRvN1lYT05XSHpmUysKdHNjZUhLNjRGQ0llOHRnelJVZWNBYTVPQlZ3NG4xdDcydWJ6dDJnYUUyRlMwT0piZ3l6WXdmcG8vajRTRWJWOXhYZi8yQ0gvSStIRjlFdDUKZ0thT0xUVG1pTFlGWWdHeHlBb0NtenJkVWwrWTUwQ3MybUgyV0ZES2V3eUlJeE41YnpFVjUvU0EzTGxVc3JXWW9BUEV4bWRzRkN4WnFlS3QKMStxOEdQS1lwcGRPTklxNDBWenlCNnR3Mk5KbmJid2xodjRDRlpKWmJHWTlsdEloR212TlEydHVhQlduVVd1bkZBNjJqRWV0YmFVTlQxT3AKam1LZmRmbHN5U1BEOHF2NHNaNVo4THBEWWJkRDBMYXgxYWVjN2FrWW1tczFqUFphcXdEc0svUmQxYXhhVVlvOFZxWGJxMHFrejIzQ1ZGdXAKdGlCWXZwSUtMYUIwaG1ESkRaUVFTTGIwd2J1ZnNTQlFFQTVxaHl5eHc1N0gvVFdGVkRjVmE2L1F0VUpkSlNjVERpUys0VmdnNG1qQVNkWHcKOVJ1RitHQk5SV3dkdElpR1pEbGExaWVodFVHcmNBMG1RRlVRaHRyeVZyWnFtTm5PR2creDFQL2hBVGo1SHFMWjBpQXZ6M1JZZmo2RzNvNTMKV3pkVEgwK3ZZWDJLTHMvbnJYbE1hQkt5M0kzRHExTnNhU0xXd3dIZmgvS2Z4TVlrNWh3NXZva2QxZ2ltQk1YcndraHVLQk9xZ3d5cFZVQ0IKWWhEd2Rnc2RkOWl5RUlRSFFMOFdqK2ZhLzlQcGV1ZWZPOFJJYzdvamNZNDR0RjNCUjNLMW0rZFk5RXV6eGZ4YnZSakhHaGNRaG5oZ1VBNEgKWFdPcm4vSGFTcFpPNFkyUUZJQ1lQNWR1elVjcTBzMXhiS200SDhScnQ4RVdFaXl6MkZvaDJqZG9WWjJkbU1kYWJmdkJZNDRYd1RTSnJYTTgKNzRpQ0hoek01N0NmQlRHSVMxTHhQZHJLZGNOYTV4MXhuRmwza2ZuKysrOSs2QnowQlFKRVJWTUw3Zkx3bk5SSVRWSk5EeWVKblZWWDlzWXEKRlVIcUdGdkF6aG9xWFdDblhrQ2xiZFlMYnMzY3ZMVUdreDNXR2hTQ3pEbC85d09BajRwSlljVVdlT2RZaXQwcStGSmJOeTlYQW15d3hSQWQKVzNmUVNKMllxQml5SnBvS2R0aVRiTmF5QzVUY1ZZQUZrZHNBZ2xxYmRmRzAyU0tMWGUyQjM5UFNrbmZFdlFqR0l4VkQvTkxSdjJ2Tkp5NTEKdnB3Qlg0bXRWbVcxeWdDa1I4OWVuQWFDbm1OeHhybVdHd2tLV0s4dkRTZ0l5MlQ2cU45V1Q5elliWWxvdzFyaE5QR3pBZ0ZMa1hmV2FzYnkKZlM2VlM1ei80ajJyWG0ydEdoU0w5N016OGFWNzIrV0tWeVBWKzd2YUNlcUliV3c5UndKNFNPR3lYeUhWMEl3b1lCdkZqc3V6emo5TGc4UGUKNUxXT25GWVNtYnk5NTlFVDUwT1Z4ZEtTbXFXdnJiNFFkTzB6ZTlLckhHR0ZUM1JjRUI2Ti9YNVFzcTJIbUY4cjl5akYvOWFPdnF1OEJCTHMKSko2MDJMSHkwNkdQRXlZZDBBWHZlS1JURkV3U1cwd2taK09PdzFPUEN1OHU5V09SdE5CeGZ2SmZGdmtEQzBlaEg5bDZqYzVhZWNBMVBXRkwKRXRJMVNtOW9ycFVYcVcwUVowREF3MjFLRkZ0VmJXM1FHL2ZZcUFFc0krOFlkT2dUNzg0NVZwLzVvVGdEdXV3eGhxMXM4N2VlcnYvZERwRkkKRnhCUHBDMVlOeXpJR2dQZWloS1dPMWFVZWFmYldZKy82UTZWYTJ2akJDdGhhOEZzM1JhckFwQWNwVERtN2xwM0VhdUxjYlp5Q3RobUt3WnUKQkNsUmI3RDZNcjZqeWdTcjdRaTRjaUZMcWRFWlZ4SjlhNTIzVWhXZlltYnRMTkpxUEV5ZHRiaDNXQXZURnE4eVBkWnNsWldnMXcvWXN4RFkKa25xT1JGWmdLbUlWNUt0bWE4NzVpMk52amtsQVRqenFZc2wyYktxdHQyaWt5RDVHeGp0RTZNYndTRGVFRllJUzBIbDNqb3JJbmtreHptTzcKS3NDZUNlMzUySnFZRVhjRHoyQVRPWUxiWmdTKzJrcDBodHpueDJSZCtnbHBkb04rUG1IRjRTamN2T2E1ZEYyaUMxc2sxR0U1Zmg2ZFdwalcKS3Jmb2JhaFNtcUY3NjVNRm0vMDFEV3BZeGo4NU9TSmNIbkRTN1FxMFJxY1Q2RkVzWWJyNkhMbnRkUDJmMWtNZFdrVHMyQnBxVkRZY2pxMnoKWjNpNU1uZUZaOTVxclJDbzAyVkppbUJMRGlIWmNnTkx0b0VSU0M0d01jQzB2Qkk2NzhpNW1seGdJaVU2OFh1dDNmSnZvU1RJQjRxQkcvNnAKdmZOQ0xoc0I5TFB3WUhOMW43T2x1cTlQYmpQSnk2MUlqcklWVlBNd1ZJaFlMRDIzZFl0UHJwUDBTZFVrQldQenRrOUhWS1RUYld1M2JxU3QKdzV2cGJHRkFXMkNLVGpJR0lQRTZURWNaVzdQVWt3S0NzYTNOMytKUUNVZFNaWldJdW1qcGhmb3hwTWZYb2R1RFMwNTFaYzhQQnkyc0dDeUwKRjVablhlRGlRdHpEK3o2dEw4ZXhKOFRkb3FTQUlGTGE5dG8zNGo5VHNrWE9OcS9peCtMdTNhZTlUbHY5MXZuY3hpanRJVjF2ZENoSllqOGkKbHVJUllpd0tGdnpPMG9uZE9ibjJoSVdnN0dFdzBhK1NtWWlRRmZRcndsaHVQWEN3V0JVaWY5Nkw1YkNtR1hneVRRemtraW5XMEcxUmlnZ0MKdjBEMlJHS2syVUpwUm9ndnBNTU03RjhoYk9MQmlpOGcwZlBGcWIyYmg3TXdYc1V6dDhFV3o2US9zb3B1Ykp5SFEyS2dVcUExd1NOWG5qc2IKZHkzTWdNV3NmaThtMTBaRERWc0ZLeG02dVdaclQ1cDJxMFozeEJFR3JCeGI3NUZYTUhCaWlaaURJaUN3RDFvMFhldDNqQjJEakJPQUZWaFQKajVkVlFhUHRsdi9sTEUvbjVJb0g1VERKSTZvWklpbUhkOFh3RW8zUUhnYkhGU3ZCMG9KY3dSQnJpV1VqRkFORldwaldJOEdQbUppV0czYS8Kc0VjR2ZtakxBVWV5R0g5blNkYjE1Z3Q3ckNwRkpsVW94d20wQTBRN1FtWVJ0Tmx5dlRVaUs3a2VWelNlcmN2NUhXRS9Ld0ZLRFZYd29FU0cKNUszdjM1RktZUnZrM3FaY1Q4b2ErcmtlcDVjT1pUb3RCa1FGUVB0Q1cwRi9ZdjhJZlZud0dNSUdrN2FuY281amp5UG9NZ0ZaYmNqdC9QTHoKSFpFTk9CUStaMXlFbURuT2Y5bXdEVnRUa0lmSUVrOFVVZjBPV2dqZGFXRmE0cTBKYXBFaFlRVUdGWDBlek9vaEhoYlBsNldlOWFKRm9jR2wKdnErM25TRmNzRytqeEpZS2sxcGgxaTdlWEJKZlRIV0hEU0hKcjlXaHRtVmZKVmloekFOWW5qc3k2SkN5enBWZVJMZnhwTUt4SVZ5TUhUQTAKRmNwU3pKRHhXWndBWklPTmhlc3VXRDhmRFNsb3pPNXVoMjZWTGt1dUxWSnVsR2RaY2xRcnpMaFdmRFF2R0QwS3FkaWhQdlBXaDhnekxGbzIKb045aUZOc0NzWTZ0VllocHl6MWprWldSdHVoZm5uSlFTRXdpdEhaWWI3MnhsWUE1YU15R1JBcU9Kc3JDamxweHo3MGpDWk5PZk16SW52OWgKWVZtVWtiUUwrQ2NsREJsNklqRE5IbHQ5VTdEd0FEaVlWejE4YXNHNkxRRytVVGx5aHNQSHNSUmZTUDAvUjI0QTBURnZmV2ZaYkhhdGZxK0wKT3hpSjMzeURMV0pzVVlXSUdzeTF6VExnSHFsN0tVc3JzQ0xtVmxrcjZSdGIvM3FqeEZsSTJLa2ZlUnZwYzdmbnQ5YXZKb0dEY3JpK0Z1UEoKMnBVRXJyVnROaEFsa1hQRFdyL0ZHcUtDMTdXUW03QXJpcUZYVVJpbUxGb2E3TEFCanVMc1owS1JVR3NVQzVDZzF3YUxpdVliOGFFYnkzMWwKdGtSZW00MXJObCs2UENyalpRMDAwaXdIT1BSODRZR2QxdXVnNmRRallqRmxucXZ4bnJhQUozZUJkVFBoejI0L2taZ1ZCbGdOVUU3WTBGSlIKS0d2RkRZMGx1aFpycE9WOW1vN1FnOWIwc25yekcrWHcwakdBb1g2V3ZMZWhVQnVKcURHeGJ5eUJ5bVZodkgrRUs3RFJSdHRCd2NyQ0ZJVHgKS25LSEhOU24xSUYzN0JtZlF6NFROV0dJalcwTlpjZlNtUkUwRWRkc2tYVGoyRU9pUFRaK0NVS0dXMmRqeUwyaTNIcklnM1Z5aHh6RCt5R2oKOUFCVXFLRHBNYk11Y1Y1bnhNVmlpVjlZUHZaZ1dtS0Nna0J1MkhPVUxkN3AySXJmZVhaTkRmYVpFbHpCSStFMCtRUUxDQ29RNjdwUTQvR2EKdFhwNEd1YjVVamk2SUdGTU5URjlBbVgxbUpGYWw0a2hqNVZJSHZTK2hyRXVwdWIzdXRKTzk5ZTlmS2JYSHBQWnNwaEd6bWhCanJJQ2VVb0wKdk0rZXRHL2tkWkE4aDAybFhxU3dVeEJZOE5SdTVjbzMzOWk2ckorb0dDTFBhNWM3bDZ5TUUweEo3eXBqdlJod3dUTHpRSWY5Tld5ZStwb1oKY0o2V0E4MTFMZHNTVnY1VmNvU2QybnUxYWh0NVQzUkFZd3QvNVhyV3FtREtiWXVPQWx5bk54elV3NFdWQ3ZiWXZMV0FiUkVDRHF1aU90KzEKMlBnajNnZk5TVzhVWnFUMm9uZVVsdHJmZWYrMDVvNjdTbWppRTlaYXBpU1NvSVcxdXBMZldhSmxIQjE5SGtXSlRlV0M4STV5ekE4anE5aTMKTXlCcGtMRTRTY3djUjE2eWhaVVZYY29CVk9pNDV0cEg4ZGVHa1M1ZDFFNEUxcXhMNjVzMkd5Vld0cDQ5bHNQRVcyaDl5aDJNbWdjSXZJNk4KL3QxRWJCbHFiZHBMY29waGZCdGNWclFxWVh0YUJMaUtiSG5PTG5HK1ExN0gzUDlvaHoweUVDdkhEMjBOMExYZ2NWR2ZBTjZ3YmdjQTltMTEKZk9jSFhxTEZFemFISGNtTk9pcmcwVm5JOEYvS3dmWWs1YldQTEdiTGcvQmVzRjVGNG45NUROam1kQ21uSE52ckZxQ3NuUysrM092WWN2b2IKWlU4VWhGL3MySnI1ZE5NblZzT0tLYm11eFNyN2ZObHloNHlRcDJBK2oyZHlaTTVjVDFRQWZtTDVZcDVvUnptcWg2SXZpaDFydEl2QldqREUKcEpxN0g0b2xUOWtNMGxjc0lwL292L0kyTHgzL0QzM3Y3emlFVTFodGhpQkkrQy9sdEdOc2xCNUdTcUR4Rnh1TWF2TWwxdFMxVS9EbDdrcFIKc04wNUxJYk1LQkc3K2l0SnQ5aG9LMEE3dG9DMlkrTlJCdVVlV0ZBbi9TYktxVnFmVldRRmZKdmR3RTRiZW1TTHFUdTJLcktOcjlDRFZhdUwKNVlJbVI4cWVZOUxLa1hpS0RiNG90elhIUXFjOSs5YmgvaHFEazhReFFYbEY4dm5PSGd0eGxLcGF3ekRJVi9Uc2lGZWRQdnNXdVdpTk9sQjgKNmY4Nzdlallza09KejlCUkV1bndoei9ZYUZYaFRFalNydDRkWDMyNlorOVhOb0RGVmx0dmw2RHphTi8yMnFmZWh0dytTUUExR3dmdE1TZkcKWW9Rb2l3NjR6SmJsZHl4QU5jN1hkT2pLMldGWlNUbHk3SkZzY2FIRzh0bzhVTE1ISGRhdzlkcHRJWDU3UFZjNEVBWEVLSGdEVC9tVVpkaUMKUGI3LzFCN0RpOGU0RlBIQUhnTzFiT1RZT0xJdTY3TlFuU3dMM2RWdXk2QWJpYTlTaVVVT05nVWcxbzZ0QVM3ODNWNVdqdGpzVlJ0ZCt3bjEKVVRjOVpGeG41a1VEQ2Z4TlNjaGY5ei8vMWJtaG1OcmE1S2E5Ujl6aGRMMUJvMzVxMTBYNG9lc2Rld0JrSEJzU3NsMzdmUkpaQlNYNDZwcG4Kdy9ZbEkxdW5FS2o5a05FbHBmMEFKZ3FFSS82MmpqZEZVMHYxYVdZLzRQMkp2UVNtd3RSZ042cSt1bDZTMnloaGNqQklXaTVVaWR3azVSVlUKcVlRSXN3dVN2elJROWk0SEpyV2JmMmZFSzU1OXZyclArQW5YVjhaK3Ayd09WV1RUOFZtbG5lbStOdTVDaGE4VzhGeWttUHZ0TVV1WXNib1YKREtMQVN4K3AyV3hLZkdSdmtvSTkzQ2Mya1dEaWNyU1dieTVaUlY3RWN1b2x4b2pLcFJ0TUplY1Zmcnlka1RoL3dJYXJjcHpScXdWZXhSeUoKN29pTVRXMktiSktRdmNKSnNrNWlGcURudFU1K2hBSHhscVNLNUxoSE5tUGNhT3NNa211MW1QZUNwWXBwZmVwWHMxRWlZVHE4TXNyelM1RmMKU2VISlBxQXpjUTM0U2xsbkhGYUMyVk9sbEE3ODJCWUFNR3UxQmZpWHI4WE01NFZFVE9TQzhIczFsYVM4U0Nua3ZVek1PdWNOU0JTOWZWRlIKOUlxU2JDdWV0L0U3SlJGeUVOS1M0VzZ3WUF5R3h1ajlWNDlEQ1p0S0pGOFdBN1JKK2ZiS0E4TmJmMXhXTDNCZHRvVHRnNm5IY25HWDNKL0wKcUVSZTZoTy91azViSi9iWEtoT1l5dHErTTB0L0NqZ1BkQk1xdStSU2xBRmo0ZTFDUHUrMnFqQnpuQkxuMVVJb1Y0UkZjaUZZaGRlRVlWbVYKVkFTUWVIL0dXc2h0MlJWN2JUTnRNWjdXOHpDZGZ4UGtNeTRMUEttQW85YlNrSGhwcHB3QThxU0xUaGU1b3pqbUhhTDJsb0RmYjdMUisyemEKalhqa3NSOTBvbEpLY3FzU09kbjNHSUpUVzB0RU5HdFREdFlTNmN6K05vbDIyTHFXZGdPY1VHVHVqYmJKQ3dudngyTGFQU3V1SnlMZmJNcUkKV2N2VzhZaGYrYUFFN3NwOGZjbmJvditKamtkR2taR2VtVm5GVUhRYlI2WUNHdmRFbnpib1NNZHJ1VnhBajBZUzZHakxnem9DWHQ5TXJMK1cKdXlQQ2p1cDBMWmZPU0RJQmdVWllrM1FsVlRBU1hTazVlanpYSGJDM2NjT1lWL3NaT3lZUkZJd3Z0TWYwNHZYRWl3ZXNiSE82MXM2U2FZQXoKTm9QSER3eEVTNktTaU1LMXBCeXZJTGNIc1I3OW9GZ2FhL3NtbmpZNjhzeGFkdEpuYS90c3ZUdk1tN1Q1YlhMck5kOFBlY3NZaVFvNGtJRXoKdnljV1dJVWQxT1JnblJrMGNydHJUTFpRVkFaRkx2Y0FzMW0wdUc4bEtsUnVwcEVZKzRScFJ2OC9XMi9hSk5kNVhnbkt1MUhkNkgxZnIxUHQKWm1GY3FBTGs2UWszcWxBT0VDUkZ5TnhDZ0t5ZThmUW9ibFhlcXJwRVZtWjEza3dBU1VrUkFFaHdFeW5LdGtqSk1tMktJa2hDRUFHQ0FBRUMKSUFsK2dQMmQvR1F3NW9zN2dvU29pWm5mTVBPY2M1N252Vyt5Und1cUtwZDczL3V1ejNMT2VkQTJpRlVnVHFkazdDcktSUEs0SUZ1dVpBVXAKMHArYzNkbjBiU3VpRXIxRDBWQ2h6RVlzbUdKZHBWQTZ5MXNvaldJdk1NNUkvaWxHMStZcERIejd2bTA3ckJ3SWZ4OW1FYXUwRGxuaWNoUGoKRDZncG9uT3crakVQaU1XM3VSbnNSZ1FCN01valpCRXhIL2xjOXN5ZW41c1F2bVZEcU5vR1ZYZXZlQ0NJYmM0aXJxRWNDcndLMVViQWZCNWoKNm5lSmNwaVU5WEFWMVdNVnF1SjhJNm9NekJrZ0k1MDkxVGpRdkxzeGFJaWFBR0FIN1FmSUZXNVl1YldGYzJERFNaMnFEYk84Wkp2U21HRXkKRVFZNmhlL1NQVzJpWmwwNENkRmo4QlBDMU5mc1F4V0pwK3ZTNVFjY0d6SG0xWkdRWW5iZjlYcm5TdDFmY01KWnJFTk5OL0tMWkl4NHUyMjkKNExDeENYRE0raDRCSXVMZFVIUzBpNGZFY2xDUnQ5VlZkczM5dms0QUdPQUNZNDJUL3JvSCtKWWRqZC9kVXdUeGRNUnk3RUR3WXdFZGpQMUQKVlFHR2lLeVQvNGxLV3V1akRYR2ZiWjR6akVnZ0t2ZFI4R29SdGhCUmQzWENjdkdRdDhkQ3RVK3lNT2xhNWZzcTV5ZGpGUnNvZklDZVJPUlkKNjMvUXcwQ0xIZGJGdkxVVk8xSkFwbE1JSVkyaXhSTW1iWndxMUtnaVQxUTE2VTBBQU1GNlZhN1I5amtnOHJiQWxUTXZkWVN0Zy9Pank4cm8KUkhScG4vNFBnamZOT3dwcGRYbkpETTZsRVRndzNJOUU5YXBRMEptaE5yWVdGRzlIM2JKNG9UMzd2ZFo1c015Y1M5MDRRYnRCTUJOUlNrRW0KTUk2YkErem53UnRIUU1CTzBVckpzYzR5ckRHNFFxSysxdVhYeFpzcENxY3EzdWY3aGpTR1ZrYzhyRm0xUS9zYXZCN1l6UjdvbTNHT2IwUDcKM0N4RWNxVlEycTh2dXBNcUUxalhNUWJmYzNROGNKWTB1QnVlZDJJRWNyLzRhdXovNHNsMG5iYmRJSytEL1dDbHRuMFArUlZVQmF2V2hiV3EKZ1Y0aWxCdFFCYVovL1p5Wk1LRmo4KzRoR1dvOUFrYnNmaXh0WDJwMTJkenFxajdLd3JMenZCdlNTMmFLd2lGcmpWZXZtd1R6elJIa1hkWHEKd3ZvWENoWGdVT3p6dHNyTUE3WDl5KzZHWjlTOHNmbG14b0VRZUF6WEw5TUZ0cEZoeVhiK0R6dW1XVHdZZE9zMFI3a3QzQ2ZxUnFFNlVwM2wKVHFINlM4V3MxaDFxTnVKK0hwV2Q0Zms5WEVXNDBqcXJMblYrWUJCcTdwT0x6ck9EeVkyNmY3UWFzSzZCQ2dGS3c5dytiT1ZPTmxidGtEM0YKRjBWVmFxaFN3SmlVN2I5Nm5uRVBtYXdsWjQ0NDVnQWdLcDdEOUpQczUxS3Y1cndtcmNtR2puVzdTYnhENEdxMVdsSmtiMW56RC9GRndVS0YKY3FoMklJQ0xjOCtCMHNXbVNoK09WdUZoMnIwZFI3YUg2OC9PWTBjS2RIcjFJNXhoSGtZc2RyamI2R1NycnVybXpNeHdzZG5DWWZYalRaUnoKNzNOZXVJcEE0N0I1aGhPd0orR2NCTnZISTRvVG5NVTQ3eDhlZDhsNGRBcjJQTkxRdUU3aEMxZ2NkMVRjSTBpK0E3ZXBORGRKaGQ1WTJtMUUKZWdiUFQ5UkFLbmxPelJjS2kzWnJnbFVLVVI5V3E1MHkvM1oyQ2pGWEhSaEZFaUcyUDRmdXVaTWc5aU9CVXBYY1JlNHp0aUNkbFF6RktScUcKTW45Nmt6M0ZIY3dCM2lFdzBCMTgydHFyd21HZkpSWU5uREp5TndxZHEydVRlOHlId1puUElMQ05VTEI0SEFYZE9IMjJUMVFEQWY1SE9EKysKRGtKenVSbkVydUUzWEIxRCs4RHF4UFVERUtqZ3lsN3JWY2RnVis1M083bFhIaDF5UHFtOXk2bzd5UXBYSE84aW84eGlQWm5UaW1tODdISVcKNXFadkFnclRkNkdJZ25XOGNBS0luOWdzZUZCZ3dRMWd5VmxnM3htT3h1dE9UTnJiNlhBZTJoOUhzVHNUbDhHTnRzdUtZTForbFBYc0ZMNlAKZHJHN05xTDljVi84ajZnV1hXOHRnaTEvbHoxYng3MTArQTZvVXkwOFc2ZkEzTUlNRXJJRnRFaXp3Rlgxa2ZzZWhndWhXOWQ1YUVoRkg5U04Kd3hwbnRybW1pQXR4Mk9GaHE4UDJXWVNVc0wrQnJrb2JtTGtIVm14a2lGSXNGSzZETFRoNmV6dUM3OXp0SUJtM0V4dFZ6K3dVMWREWjRWMlAKY1U0MnQ0RCtobWdKb25odzJNQlA4Zk5saWRYOGNNQUkyTnU0aU1nODZwNGh4bElvdnJRM3hGTzBmWFNXNXgyQXJIMFBLaUMxbUhEajNqcU8KcUhsUFEzbjd1MDVoTDV3ODI5d3QvaU9xSEdFZU5nLzZQdDl4a0x5V0crdGFEaEVYZGNXVHBuUTdpQnhKYStCZGJqZlJRYlVIbUM5RWRwOFEKMGRCYmM1aFNZU2JaUm0xZWkydDBGR1FNcmRUdzlPSEhUWmd0eGZvWWFqOUVOZ3hCVSsxaVlDbnkrUXZISGpjT0ZDNmNSMWJ0L0wzZiswLy8KZWVmdURwZ1Q4Q1hkZVI4V29kWEJ5bzE3ZG5rR1lRUWZDWFBaQlVHYW5jNUJZZ2pBK3RHeFBnWGR1UGE4dDJtRG9EallMc3kzZEh4L20vZnoKb3V0VTVXWWRqRWJ6UjJkbTloR2dnQnBJMk1jWVBGcUNDTURxb0p2d21wMWxSSmR3THJuQURJRGJJMncwRDl2a1JoQ05vR3g3RGdleHowT2MKaEZ4TzI4ZXhqenBic1JGWmNtYWJ5RHVZRjFMYjhXajg0bWdnWk1iU0FuSFV5NFBEUGNRRFNpZS9JUjVIVnZjdXA1cTZBa0x6VlorM3JuM1IKTFdhUDJrYTNVY3dYZWo3WUlkakhhRS9WaVd3OWRJbVZ3dWRUNFFTTGpndFdGSzZ2Z2lBTjdjTkZseVJZZEhKV29DRzByNVc5T1o5L2dhQ2YKRjNXaVk5NEZLVGZMSHQ0RFNtRFZkbmVnM3FCTk1kcXcrV2dQMHFWRDAxVC9FYWEzM2M1OE9zTHlXTHpXN3MvVnh2WkxHTVhCcElHbUtkaXMKc2p0dzZrc0hjUXl6YzNwTG5nNTNMdUhTa2lkUnZnSEptSzNtV3k0ZDByaDRSRXpMd3BtZEJjdHU5MkhmSzgrNXRLTDRaTS9wVUlWdnVJV3oKNXAyLzNDd3BsbHFFem9JcnNZQVdhSHU4UUZtd3ErVGY5eVk3WEl4aVZCNGp0UUkwRUx6djdaNXh6WWtHdS96NDV0bEd0WmtQRFFwM1ZEVy8KdHMrWTJZVDZxaFBiTmEwTDY0WmV0ZG5SYXpiSkowQm9Eb2E5N2gxQU4vVzZZR3I0Y08wTmVSejN0emUzamkwQzlMMnpjRjYyaS80MC9qemQKSTZYc2RUczNOcmRZQlZueEFhUjVTS29TZlR5MnlWMjhEK2UzME5GTFRxamNIL0VkQkZEVzZtTXp2bEQ4ZUN1V2ZNTjNtWXlHK1RIQTVpVUgKVXhSdVdMbDVVNUJpYnZzMjB6K1FObkExbU9BaU1oT0dlU1Rkbi9WZ3V3dldZZDl4R2FYQ2V0NXNnbVhaUWNqanF2NGVGZzN0STVGTEZaZEEKVXpVdEc5KzM1bFcxOHdCcmsxci9UK0FVeFB0Mjc0N3JKZTFnbHFSdUNsZjFhTmhQTms0dVBZQjVZejVLSDA2dmJmWTJJNFVOMm91ZERqYmkKd3lVeXZzZ0NRUitsY1EyVnp2SjZ1YWtiaXJaY0lGdUM5ZWJ6cVVCU25laFg3RUtNSzIzdDJiMTFySmozRHpoYnBYR3M4WmQ2NVNNVDdLeDkKeE5tc2c5aS81TDl3RytqUTJySHpYRUN0cFFWM04vMzlQVjlhOEVDZmE0Y1Y3cmNXeW14M0NoZTg4WFMwN1JRT0kzTVJtWmxabFlMYk1hdGkKY0RzMnpMZ1pOWWZyMnUzRzRXRHo1ay82Zi9YbzZPWjd3OE0zWDYrZ0FBZGxONFpJYi82MFQ1U1ltWlVleFBmYTNhaVp6a2g0MDBka0dST2MKZGxnOThIRWNlTFEvMWtXNVBsaXA0U0I1R0wveEFEZXE2TUd3S3JFUDRmeEV5R1o4ODZkMmZkcmIrUDZFQ3FucWhzSFd6ZXR3eTIydE53UG8KaHNxK3dMbkxmUUp4MHg3Q0RxeVIyRWM4Q3NIb0VhTGU5QzhRMllBV3JjZkwwSkJSYmEzemhFSkRlK3ZtSmZvWjVwbWFNY1dJZkZOdTN2d3AKRE44ampKYll4Z0Qxb1M3bFNyZm9xSkd3V2c2ZGhEbllBbUVOekJEYzE1NkhTUXVFUVgyQmU3S2g0ZmVncFh2ejByQnJyc2tqeUtJTUhpa2oKTVNJQUxxdUkyc0JLNFFmdEszdDI0Z0Q4cEpTSnRtTWJKNC83c3JJbVB1ZC9sNTQwYUx6L1Ntckgxa2NHSmY2d05sTFQySjRMZjFBWFZYa0kKK1BIUW5JbGtoZG1GUko0QTF6RkFtTDFFSi9ickVuRkozTTlUSExaWHIxSlJ0N1JXOTFnQnUrYjdhNGl5NEhWRzRHSFhoTC9CVUZFamdnSEgKSGRtYlpxVmtlS3NLUlM3NVllWFE0ekVEUldud056eEx6VDhZZUEvZnZIUUVDUVBGMzBhRDBjMmZyc0xBc1BjZmhsQXlhOHBiKzVXT0t1RzYKanVFK0lRR0NCb2lkQ3ZLQzlkN05jMGdTSEdIL1NNZk92NGQ1eE13TzRxNER6R2VLYzZBNmNrWHFLZllFL0dMejgrWWxjMkFHaVBTdzMwZ3YKUWxGNHJETDRWMUxudFIySi9jVHhzSDRhYktuL21VZW9jWC9hdXdPUUtZL1lkVkFORXRjRFdLVmVxWWNlRnl4cDEzQmRFU0JibHBxbTlxbWIKNXhDSTdONjhCQnFsNjJOZzNUR2pBazNxbStjR1NIMnZRdlBHVmk3MlhiTjdZQytiZzREK1dVRWtCc3BPZ0oyVHZHL25ZYW54aDkrRmZtUXgKOCtGNktYcjJnTVlaWmhmam5VQWZhanc4azNQT25JTWoxQm1tRE5namtKR0daTlNJOFc2eS81Um9BanJsNWptb0ExTXB1K0x5WFIvYjU0L2cKYTlZdVc2WlFQQTUxMzhhZXljNkdSNWlmdWZsV2lmd0k0TTZlZ0ZLOHJlSkp3TXFvbmw5c1JKbTBkV21MRjNCcFBRY2dSOUovRnVXMzhseVgKelFQMVQrbnF1eGMrdlB6UkNTalo0dWRISno5Nkp1a0EyMC84N1dyQzczMzR2RDZYbEh1aHh3czFYZW9NZjNUS1AzZU4xNFMyc0s1elZmZUIKOGkwLzc5ZXovK3Y5QzFRYWZzdXVnOVpjdFUvd2IzeVdpcjAzcU1kN3pWcnltS3NRdnk5Tlk2b0MzN0QyNk9jMTNPbWo0Mml6L1lYN1MvLzQKUGIzLzBYZlo5aWY5L2xlaER1eXF5Vys3QnJCVWV5KzR6dThGdHYwdDNwTzZ3L1lOS0FJL0IwVmYvTVduUGduRlpiczJXbzduZTVmWHdQY3YKODN2MlhONCthNDgrUXcxbHRKL3RRUHZ3Q2hXUWNaL3ZmUFE0KytrN0dBMjJBdnJCYjF1N3BaeDhtVmQ3bTgrcGZycG92ei9wL2ZVZXgrZXEKUGRzRlYyeCtsQ3JJRit4YlZDdTIzMjd3aVMvNHVIem53M2Vvei94ZDZoVmZ3amhSOWZpUzk5ODFiL1ZKcWt1L2I1L1I5Mi80ODE3d241ZzkKeDltalYrMWFuQmQ4N1JuTUc4NGpLVVZUczluYWU1VTZzSTlKRC9iV1dhaXpmbnlLdXJCU2pQMHBYNzlBUmRUSHFINzdocDMyVDB2ZDl0WlAKcEs0TEN3QmFybFNMdmZ6eENkZDhiVlZvOGMybjdkMG43Wlczb2NGcTcwdExWNXF6ci9QYlQwSm45dFlyOXU3UDdJcm5xYmlyLzUramVpeXUKOGhnMWVwK0VWdXV0SzdldTMzckgyc3pydWdMd28zd0g5OGRWMzZRQzhHUDJxVFBlL2tkdnZVMTFXV2dGbjRMR3JpdlJ2ZzVkWGJUTDNuc04KR3Ixb3FmMThoOHF5MEl1bG1xN2FqMVpiaTZYaSs1YTEvSlEvN3drbzJINThrdHE4cDNpOWk2N0srMU1vNU5yUE4xMng5bW4yS05Sd3BYSDgKVXlqSjRydFUyOFUzMzBCLzJHZGZvVWJ4VTY0Zy9EcnZmYzU2NkJyNzRZcjk5YmJmNDVKOTV6SDFKM1I4K2UwM3FiMzd1blJ2N1c0L0RSMWUKcXZOZWtXWXl4L1NFN3U5YXZXZnQvUk8zcnZDNjZMM3o3RnVNeXhsdjMrdDZuK3JFMERHbVRpLzFkOUhucDJRVjJtaTk0djM3SmpXYlgvY3gKZlJ6UFEvM21zeHlaVTlRZlBvL2ZOQzVmOFAvOGt2LzNsLzIvdityLy9jSXYvZkt2L09xdi9mcHYvTWF2Lzlxdi9zb3YvOUlYZm5QYnpOLzUKdTl2LzN0Ly8rMzl2KzkvOU96UGJmdk1mL01OLzlJLy95VC85Wi8vOG4vK3pmL3BQL3ZFLytvZi80Ri84eTMvMXIvL052LzEzLy83Zi83dC8KKzIvKzliLzZsLy9pLzdYL3hEM3creS9aejEvMi8vK1MvLzlYK0Y3ODZiLzlwdi8zQzJ6VXIxaFRmdTBMdi82RjM0aTRscUtzWUtCRWhsemwKRXhRcjN0d0VBMmhpaDAvZFE1U0Y0a293M084NmROZkNNV293RVZKbWpnSm9tdUI3b3RKQk5kcG8yZG5WVURFdkNrdXQ4QmczVDg3ZGVnU3YKQVpJZGRzSmhOaitETWVkbFNuUEFpTzhVenRheDgzcXN0QXlUbG9Eb0RUeXNwYkJGM1p2SW41Tm1idzh4b2NwRktDQ2JENFlnTk1FOHgxekUKTDQxMGhhRUdPeHFPbWVnSDZJVVovRTVrb3JiQTFBZE5DQ0J5TmNOenlLNnNaaDRnMkV1TUZDYjRSSFVNZ0E0by9DS216VXlhUEpmdE0wUm4KNC90SWFWQjQ2ODU2d0x6UjVOc0J2SXowVzBOTUd4em9mZTVZTm9Ha2FMcHdaQkhMYmtxcXhJemE1S2dyRFpnRlE1eVZHUlBFTFFEU2I0NXQKanhGWlY4TmFXcERXSjZRTEZYdTAyekNwYWEyMUViTm1JUDJMVjNBcFFhY2VxYnB4aXk0bDYvcmdqZG16RUZNMzJqQ2Z1VzlUNXdGUHBoWHoKYTlheVpuYkhJdXgzUHM1bXZhN3hLdnN3YWxaRG9zOWNSaW1tVU5TMUlac0cwbnh3UDQ5VVFyTEIvVWN3QllsSHBBNlFHSndvbmxpblNEbDAKSjIzMklEYXRISFhkYkZLckJwK3BXR1hkekxWOXZlb1lRL2ZsbGlKdjNRQ2lOTVJ0SXpUbDZtZzJrZGJXRUt0RWNrdGg5bVV5V1BHK3dNWDIKeTBJRUdrSHZZZkxCMGJaN095c3h5c3pjSFlYTUgza3o5aGxBT1crK1h0Yk52VGF4SjBjSEErVHZTbm5jRHNScGJJRlE0R2VHYkFiYy9pNnoKWmVGN2d5SkhGRU4zdjdrZkpOTkFNdzRYYnU1MG5BOENmMnRqWEhCNXhrUHM0VnFHM2hGQUJoVmx4UXBHaFVCN3A1dTNwcXIyamdXdUVIUFkKQWwxVm1ZcVpnRHcwWk5sZ2NEMi9VUFlrZmt2WlFNY0JPTjJpcytDZy9LcDdkeXlyTFRDZ0R2UkhzeWlud3FEeXVPOThVcnNYbXp5ak5LVTEKNHdHYkxNUU9Wa3k4UXI1YVNucFZkM1IwVUVDeG9SRXBaaVNzSUpuckxuWGNXU2FIdkYrQ2xxTThaL2RPSXBiSmloNHFSVDlpUWhBMGVmZ00KQ0JKVGh4VGN3bmlhNW00NFV5dDJneVVIU3k1SG90eSsyNHlKMEEwKzZxSUk0WGFkTDFjK0UrQUtNZjFyYnBKZG5IbjNUUkt2bWdCR3pkZDkKWWdrb2Z5WU0wUDdZbngyOE5HNENaVU01RjRqL1ZZRjNha2lNd0hEMkJTZ0hZWFpkUXB1Y05aTGRKVlYrQmZCbXBtc21MZ25YbTREZHlUR04KQlBHaWtBSU9VVko2VFhMWnRtL1l2azdkRkh5QnM3eG14c3F1TEIxT1NESmd0U0ZFUzYwblBDb0FoVnNiQTBoUlZwdldlVnRWZ0lNYW9wb0EKbzlnUjhXWkk4dkhLU3NoUlQycHpzSXBVSEVuL25IN0hSdG91bXJGbkJUMjZqalMrMHBCTk9nUDhYcUFQMWwzT0tHc3oyQjByb1ZOdUc3ZHQKY1lwaWVwYTZHL0NxSnZMbk04MjRVY2JkTXhqRnJtYXJIdUxrNmtVdWZHYXpobXlIZVdyS2tsdVB1Ym9HNHNsZ3pkb0Vrb1NaTmQ0RFhnOVQKcmEyQzdMakxNR1B2RmNpcGkwMmZPN2FMYWxHOVZnTkdBQVFlVU9MVVNPbERQU1pJSzJNYy9WL3hZR0ZCcEQwbEhUejgyaTE3NnpocE56WUQKNE5RQWswSnhaMkhEK3hWekkrT2h3RnBZQnBGOVVScGRlQmlucEJIWXA4elRiRUJGQkUyVHdTRHgvQjJNU3E1dUZJRVc2ZTZNdk9nOTFjb1EKcW9aRkpIQ0x5Q1R1SWVRQm01MHRRT2E2Y2ZpQ1FRZExwb2RJeGQ2T1p1WXFsRnhMSFVEN0hEQlh5QjZDdXNFeHB4cmZpODc0QS93VFdlTkEKMlJTYkJDallVVUw0RHNWWjE5WTAyU0l5dWMxRDdOVHg0SEU4YjNQV3hkSklzQzFCVWh4WXR4L2RHQVJPMFFORGpYZ3FOWngwcFNxWml4UUsKRWhQZ0NQYTBydFIrYTBBQ1BDQTc3d0l0c3k1bEJ5UUlNaGZXUXF3elNpNG16Qk0rd2ZCVFpPRzZFQVdtd2JFenRzaXFqekVDRUw3bmM4TWgKYnNBb0xFdDBLcExtaFd2TFZ0MEhQQnhjeEdtMXRBWndBeXlyQTQ0QUxJcEJmNlUzSHBwZE4yWjJtUTlZYjBrTHBLRVdXWEcvOVI5Wk5PWEsKUUdhR3EvczZ2eEN3OVFwZEFQTkNrdEsyYS9VaGZrQ1VYL2NJMVNpYnJXTU8vRi8xamJGclJ1bmVqdGt6SFVmWXNVU0ZSRzJMQUVkNmxZdkIKTU5CaWphZjdxdTVCb1Bmd2hHVzN5NFRVYk15UndrUDBGYWt0MUVKeW94VGEwZlljMk40UHh2WU83U0xyRmhiTkdsSGRMVlRkdWc3dEdqWmYKUVZnZGp3ZmRBeEpWdEgxQlc4dlRxYzZKczlZQzhJekFrajNLU2czeEVFSkIxbUdySGFVaU5YUTRqaTI2a09OR0JmRjdLREFSTGpvZVJ2YXQKaWdSZjE0NkpzaS9kQnQrYWtMdXJnUU5sRlFLMFIweGtXeEYzT2F4bjRuc3ZDeXRBOE1nTU13bFltb2xPU0JveFQ4Sm1OU0oyZ1ozdktONzUKMkU2WDFvakdnMVFHVmpjRW9TQS8zbEJZaWdMNU5ZajM0QWZaRVZRRWFvYW9IQWllOE1TQ1FRNkxyeFN3VkYxWWpQdXVBV2pyOURDRk5qcUYKeTlkRnNxdVNQQXMxcFRjcktrOEZibW15Z3AwVHFZNnljTzF6amc1bUpYYUEvbWg1YWVHQndmQ29IYkl3bVlrdTRqRFpGdWU0V25nbnc5bEEKVXNDZUJ6Sjc0aHJBRUdjYXlVb21kSXZvQmo5dTVyMWFBalo4ZVRkRG0xaEhPSEJBVUdpVXpXVWdsMUZjU3NqVlM3QVRET1lWd1hSS1ZWYXcKeGN0VHl6NnpyejBDaUJSQ2VUNkhBdTZyaHpoM2JaS1I1d1plcGxRcGpsUWduS09ES3hkcnFFZlVldkhNRms0d2ljWkM5cUxITGE2TFNoekQKd1ZHcVEzRjNCeTFMRWhNMjN3Si8yMndPZXBCTXFScGk4RzBQb3kxS1N4enltbVJZRW55K1lkWXk2WExVVzZoOFE2TTAraFoyWWFxTkFvOUEKQWhGWlc0THdpa0VHQlJBbTlUSEszRnR3blg2WWw4SnIyc1h1am5PWkFtcVkrQ3p2MTJpS2J0S0plRWpnOHJKSGtYU01QL2JNVlZobzVxaEMKZEhnSWswYjRDRWxiQVM3elczKzBueHFRbldWSFlSeDBjRm5oS2d1MlZWWTRyKzFiODhVQmFpZ2gxNlpPRStGaGhCU3NvSVR6d2tBSkZFVlEKWXVPaTJMM0p6bkJRWmJQUitCKzVNSTZOLzA3QmJOYmN5RWF1RUoyd1hvMzJrMDFLcngvanRiU2d4T0l5S1ZDYlRuYXVKY2twaTdxUjBnQk4KUjJDQmFhcHh2KytQcUhLSTlKNWdTWFYxOU91MUcyOW0vK2xKcGNkZ1p3U2VsbW9mZjJpYjNpTmoyMHRuSmVEUW05QW1nenV0OUIzOE91RXgKb2Q1enhMYTFBb3A2UnpSdHZsNGZycmN3VzJWZEVGd2lTYldKckk2aklJcFk4M0hTUng3YUFXU3dENlhWWEk2WVFPTXBRM1drSVNpZFBjbjcKT051ZGRoMmxlYnZpWE1FZXExd3ZjRGxTb2dkb2orRVJEa24ybEdSWGJsSk9VTnBzU09iQ2dYRVBkaDA3YkNsTXdkT2NOamIyS1lUczJURDAKaWlSeU1Xc3hwb2ZDN0JHOUFUbEZiTUtZUFgzYjk5ZUJHUEtFdW0wT1crQ0FBUk5KTlhkS0F2ZkUvSlF5dUYzdzIzR3VvOFZkaVBkcEttTGYKS0oxaTZhb3FrSGRYRXJ5UXJpZmtOT3pUM1BUTHdqWEFlOWpIR3NvbE1UUXpXSHZRSjIzaDBrZTJsdW5mMWFyanRJbUR3OHpjSHRjNTRTc04KelJLdmhrSTlER3JhczNDQXphVnZCaFpUVkdxcTlLM3JYbDdTQ1lsYkppVE5IOXhjRjZDR1duT1E3SUw5RGUzSlN2Vm4rUFZJa3VNa0g1V2IKV3lpd3diMFhnL0xsSVdWNTEwdDZTU0EycS9vR0JFbTZSUW5XSUVaczBLY0VMZ1lPMy9vNmZEUm5nTk1XRlI3NTBBYnQ4MkZVaWdJQ0NjUmsKUU9VZFF0dEloODIrdFQ5c3YzaXVyb3RXVjFpTEZTWDdsd0xaNk1pMjdUUHV4cTBDSWFlakpFQUp5eVdKK3ZaN1VVU0pCOGVaQWdleVJodHAKWjBEWVhYSVJVbElUcWFCUWUyZGdYVWZURkllbU5JZXhNNHB0RGhXQUlhbU96ZGZDVTNBUHlQYjVkVExRUmhWMUFMQkV3VkRVSVlsTkhSZDMKcmZTNUFJQjBsdjFlaEk0cnJGZEo5TkdXTUF0YWNFOEEyb0F1TUwxS3MzS1JCNFlOdTM4REVtQTFWRHZFSExDWlNvUWZOTnFhR29zWlNYczkKKzB6QUZCUkRvNENFaCtrb0lGT2FnY0U0RTZNUWxKZzRBZ2NjdXVsMlFhZ3dIa1kxQTZ4cGtFT2k0SUJadVpBM0E4aTlET2pNa3RrUlBXZzgKcUlXYjBORkRBTmMybVprWmx5NTJMYjNSUUxRY0JLK2NOOUVzQjRNb0xHR0hkdGNzRlRYZTRsZ2c5WWRoWWtWYjJOMmxBL2Q2cFB6NnRnTWwKcktOZVk0dm1ycXRVN2JlUlhWbXAwQVcrYndSTHBEbUtxSWpaaGYySVZBU1ZkZysxOUZZUTM1QTB1bjNEQmV5TDNUQ29FQlJjZGt1ck41R0cKTGVZa2RuNGMyd0hnTG9MUlJwWXhteHB4bDBKYVZkQ3lxV3hmUWE4MkVScXlQV3U0YjEwQWFZVjlwQ0MvdFdHV1duQkpiTTZ1QTJVVUpJeTUKTmJQZEdHS2l3UURySTNCS1N4Q2g0amFJdGNNYWRoSXNnTVZJZytGd0JUS0FHZEdJS01KdXdZWWYwWjQ1NlJ6WkF4NWtpUytkZ3dpYW0wMUMKSmhjczREakVBenh0bG94R1lIbmtDazZnUVd0QkJBQzNDWitvZXlqc1ZZanFjYXVNUWRrck5RdEFpbkgwdzhoeHlWU29yVFNFK2llbWdkM0MKbzBRUm81NGtVTzRxdDB5SUdIcUl5RHFxMnllL0hRTkg5YXdpcUg0eDNGOGl4eDdYS1l1MkNwbmliTzRkRDRhU2tRSTZCdUtHTnNHTFNEZEEKellRUXJSblpkYVB1c3V5Tmd0TFhSTW5PbUcyeDZ0WUZsRS9CSzQ4ZzJBZ2lkeWl6SUdNQUIxdWMyUUdTV2xweTVZWmw4Yk90RFlIVDZRZlEKZWpsT20xMFV1T0QyN2h5OU9RYSt3V0RtSVU2dnhneHl5dVdxZWhkMkxTZFV6akVlTFpsR1FhZUxpTUh1Y2RucjNtUS9qMDg3S1hCQnllK0MKM1k0K3d2VGpVWXUzYUg0TElrZ3p6SlV4b01QVHBPRkd1RDA4ZXRRc2tSdmlZdE1iMWYyMlZNYWJGQXVHMUpXdDh0bUlpMjJpY0VFekdKVmIKUWNNc0N4K3h1NUFjd0JVbEg4M1QwMHRTcUdDTE5SR3F5dC9DY1VReXVnd3F1eG0ycDA1QmM4TnNFbGg1NkEzSHM5YUpVZFM0K01QcUlHS2UKUlpDRFNtb2ppR29FSlNDYmxDWFo4S3diNFpCTDF6U3RSMXlzd01ZVkFiNlBkVkZJamNabWlPRHhqbXVrdWN0WU9QWmRUZ0MwY0hzRTJQZTYKVU9aOHQ1SmRYUVhxdkZBd0FidUVYWWUxY0pZV25ISGluYW9aRG1HU2lodzh0TUdXdnI3UFFoSDNIcnIvUHNwQ3dIZWQ3SEh0N3YwYkNBNzYKRHNuRGhFcGt5T0NGTzFEc0RQU3FIL1RtK2daL0Q1UWJVbXZLT0p1SWpRTzVlaTJTRkQzUXRxcS9mbmxzeDlob2ZLVCs2MHQvOVl6OWlZTFoKZi9Xcy8vSzMxeDc3MjZzLytOdXJQN245ZzFkdnYvakdaMmYvVW9DOVQ4LzlRSWc5KytYL2VmN0YvK3Z5dWYvN2hiYy91WHI5azNlUGYzTHQKeWMvT3Yveno4ejlBcmZvM3Z2L1orUXY0NHBudmZ2YXpGejU5OXZqdEY1Lzk5T21YUC8yek01OWMvNVBQVG56LzUrLy84ZTBuUC9qMHhRdWYKWEgvOWt3L2UrdVRhOTM3eDZKbFBuN2orODZlZS9QbnBHN2UvK3llZnZmek03ZGRldEJjLys5Nzd0My84M21jZi9Qa25WNC9mUHZmcTdlKy8KK2NtN1AvejAvRi84NHV3em43MTU0dWMvUHZIcDY5Ly85STkvK01sN1A3cjkvSVhiejU3LzlQcWYzcjd5NUdkdlgvdnMrS2xQbi83TFQwKzkKOGVuNTA1K2RQL1BaK2V1ZlBuUDk5anR2ZmZyaXBVK3Zucno5SitkdWYvK0d0ZWZUWjM3d3lmVTM3SlZQVDcvKzZiblhmdjc5bHo2Nzh2VHQKdjNqVi92MjVQYzczSHNmRlAzajU5b2szcmMwQkoyeHM3dDA4Wno3REFLWWJKbks1VWdLMmpRekptQ0M0YXVnWXNHNENDWnA5MVJQTUNiWVcKOHJZMnc5MnBzU1U5SnNKcjVlWjE1SFRKUGhkYWlKWGFxUklnN3diQldLRUhIWDVhZHdkaHZBMlBoSk9Wa0lRQVhnSFVSNWtVZ3FINk1HYkoKVGRlNTNNSVpFeTZ5cVQzQU5SQXptdEM3MVRIaGQrSTYzenhYMXBzM1g0WjlFU2paY2hqd3FpRnpMa0JhZ203UG01b1pkL09uYTJEcG8wU1cKWTdJRUloT1pWcmNnVGc0ejllVWVhdFU3Lzl3MlhRZFFOUjR4cTB2Yi9wR3FLQnZuYkE4YUIyVkYxVnJyZVd2TXpaZFhSK0tWRUJqcGZWZzcKa3N4ZVFTK3pWN0Z3Mk5SNENrZDVFNjVHR0YvWmM5NExsUmZzQldnaFVMVVNYbm9KRmFjKzZobjJIN0htVjQ5RUFObTgvQjVuU3hrd3ZzYk4KTWt5QklaQ1ZmU0R4WG1ZbUE1QmNZc1RRWms2U3JkSy9GV2pCSm1DUzBmT0RKb3BxbjJSSjdBKzg1RGFLanA5a1lXd1ZCYi9LZjEvbHU1ZjUKMWdWKzdJbW9SSzRpNVNmKzl2U2YrMXY0L0J2ODl6Vlc3TDRXMTFGVjhtdjg4SE54bmVOc2htNzZHcHR4SnI1K3VsdERxV0t3Mm5nSmNEVHAKd3QrK2VwTDF5OC93TStmNSsybisvak4rL1FLTG8xL2xpNmVqU1JlamJMbnUvbmpjNGtKVURiOFNiMWxMWHVBckYzazdOZW41dUplS2xML0IKZXVySHZhbjQ1VWQ4aW1kNFIvWFl4YWhRL2dJTG5EOFZkY3BmNC85T3E4NDZyNkJPdUJMMXprL3h1ei9nVGMvRlhYNFE1ZDdWa3hleWV1MGEKdUtlaVNEd0h6dnZaT3VxRWx6bkhXeTk1YitNQnY4TkM3TTlISjV5S2UvMGdDcmVmWm0ra2F1c3ZSVWVkNUlmVm51L0ZUYzlIajZubE4yTFEKN2Mrbm8wcjlqK0plMzRzdTBnVlZFdjREdnFqZXZzaSswbng0SXdaYWo2TzVlaU42OVRnNzRRMDI3d3hicTY4L0VRMTdISzk3WFhuTlo4MVYKamM1VGJPMjVLR04vSVo3aVJaOHEzcy9uL2JudzdsbisrMkk4NEt0eHIrTnMvN1dvYXE5Ry9qaisxSWRQOEpHMWdrN3p4VFJiVGtmelhtT2IKOWZ0WmJ6RGEvQXdmNFVxMDU3V1lXbS9HVGRYVU56bTR2SkczK2JqcmQ2REFGOHJIa093UzJmWHRNL3NEeDFJOFhCNHBSVmxNQUJaV1pwT2EKeGRKV1lIT1lXR1BKTmRoQXF0MndWTWE3VXBURUZ1WjFhYjYwYXpldWZGQlhEaEJRQTdXSTd1cHd2TGtDYTlJMlpMT3VnZlI1Qkx0VFQ0NHEKcnJJZkpWMVFJYk4wdlkyYVNHZ1AvVHlna0ZiTkk2QXZXOW1qMmZaYlA3MnIrR2laUGZuU1p2QXNPa1ZLWWtmRlJIMmpGS2pFcTB5WW1UaUcKMEh4eHg5ZjI3UndtdG54Q0lUVUlPaWlTemJiUVVmNTZTUTNpMGFBTnZzMFh5VWlzeVNEQU54QlVXQmtpbzZIOExuVTA1VzNYU1hsM2IrZUwKZ2Jtbnpwc2JjbTRxNEhtcm80M0tJcnRtQ1BvS2lkdGEyQnBWcDZxM0RxVVJmQWpGckV0SGdHMlZqRmlQZXpHVzgzU01IMXliN2NCVjdoRkwKNHVscjlyTW5ZUnRWNElOZitOV1VWZnhHd29ReC9XOHUwNkRiSHpnbGRva1JiRjRGNURpNXBCU0YycUkzQzlsTnU4dmV6bElXNEtSemdjNDAKUTNtZXByZW54T3dxK3dkOTkrbm9Yc0gvSFdIUWR0TENUNGx4MUxRWWk4NFpLUk05a1owejFsUW9ab2gxUFJ2bjhCeDFNMHRmUGNPb0lBN2cKQ042K002MEFyekNKRkU2ZkExQTMxU3dMdFVDK09tV2dPcUd5MGlrY3hXRG5kekxwRnhKYVpTWnFqN05sWnVjQjI3NTFiTkZkelMxekdjSHcKMkpoRVluYzE4dTZTc3dPWWhoeDVUd2gydHhMMEEwSmhVbnFOY0dMRk9NRUtqSTNKeG1RTG85R2dKQmV6MGJNN0ZxblN4UkEyVVNOZVBSZ2EKblhqZWU5aEQ3TlBBb0hVb2FMbmxLakN1andHK3dWamN2SWp1b2srUkxSa3BGeW94eFc2OTZmbEVtd2Y3QmFRS0RpUFNQWERpYUNLdHJvNjMKTkt3RE9HeHJwSE9CSThuUzlzT0JvOHljRDE1TElRRWtCMmlMeEM2MTdzQ2NlcldUbUV5c0lzZXlWaW5IdnRDdFl2UlgwMXpiR2tNWkJWZXAKZXRSK0VJdll4NFBWYkFVWTJBby9uaHNKNXlSWnFXeEJjaFc3Rzd0ajVVRlJYS2dTaHgrc1NxMlQwNkJCM0hhRnVlQXZwMzF5WnVZdWVxbkYKS09VSjRYSFU4ditRamlFL2FlU3huQkY0dTV1K0JobUo0SE1zcFl5QXdrcUlHVDJBQWo2c2lMWlNUUVlhODlCS3Fyck9DclMvSEVra3hSSmYKQzFJRXFQcWRoQTdZUGhPNktJdUZZM1RJNldUWllyQk9xZTBLSWYwRWZvcTRGclNXbU1GblN4Mkx0bjJtU0pDUHdHTVVoU0pvZkxZVjE5MmwKS3AzQ1JSVDlaUCtGWmtIVmY0anMrVEZvVGNpWU1sRVBySVQ1TWVDRGJvWjZGSEVoeklDV1BRWjJ3T1E4VmpRZzR4WmZaRGlFOFF4WGJZRDYKWmI5d1dKR2pFaC9CVEFUZ0VZRUpzSTlaMkxLSktCc1VIWkIxdytNeDVrbEE2Y2FYWW03WWJ1RTQxZGtVMUthcUtPWVJUakNXajRjT1VjZTEKMDd1ZVpoNU9pSFRiRWtZb2R1cTFkdjBlUzlvY2drT3NqWHVCb3hvMjRLTkJhV3k4U1hnSmM2dG9uK0lUL1lFZGluYklqaFpkL3dPQlhTbCsKMVNUR0NUZmtWY0F4UGNiOWlFNEVvRzkxa2tKekVCRkhNZ1dEWlBzenF5a1BzWDVsbVBnY3B6cEhiMVZCYVdvemNwMzNiSFo2SWh0alNibjcKWFFsYkhJQW4yM042dmJHeWgydFFQR1o0bDdPUFcvOUQyczNzeTd2VGQ3Y2F4S054Y2hLWnhSeUs2S0o0SXB2WmVBR1o1d0ZyQWRnR0JoblgKaW1zbUFZNmJ5RFAwSnNzSlJEaWdXaktValJGOEc3SjM2MDFpWmxIY2U2MVFJWUs1VXNVajdCNzNKVXZoYS8zQVlTSU9xbVRqVElJKzF3bysKMnJ2N0I1RVlKUmlBcFI0ZVV1RlRZdTRvQzRRc1o2QVJpb01SaForVHlnUDVzSUxsMkZXMnA1dkE3aEdBY3lRcFZtc2Y1aGZRS2JZUEtYdnYKUURKZFdmcTcwT1A1bjFJMlBLRExxNUNjZEhkWFFWL1lOTEc2bHhhU1hYSkhiY2JVcnNXaUxwWUNqcnRLWkpQQUx3bjgyeWdhalBVV2FrZTkKeVdnZ25WNmlzc0VCR3lIY3ZOUEZmNzg5RXp1Vzg4OWhxNGhSL1FnMWhDcnRCd0N4ODlHV2ZjMFF6ekh3a09UOVZka242M1l1MWtJbERBSTUKNkFnNHEzQ0dNQmtJSlI1S1ZpU2dqTUs1cnBUTjRZcGFiZ1E4VXRiYlk2R01TeFllZzExS3FVeEJEakRYV0NPTzloVUNEUnVWRkk0ODVkMG8KZW92TjFWWDNiSTlRWXF1aEtDaExBRU1kTnVXUzBobmZmRVU3UDA5c3g2K0Y1VUYxSTJ3MHhQeWdGeWxDczYyZGt3Z29zVStYa3dPU01QOE4KdzdaTWtrU0dwMnJ1U250WUF0TTN5bE9PV1RkRzlGSDBTZUhaQlVveFVtbzZZWW0zTWFCQUZJeWJwOWc3cTZoVDJpS1pYT3VibzBPV0lwWjMKZ25VcmpZOU1Ua0k3RjQ2R3NZNitiM3pNYkRmcm5QVlFHaWtSeFNrMHNaUlpRc2F0STJPNHMyUFJnUlJIUzZIUldNbWRGQW96di9aMkJKdTQKRzFGalYraXgrZVU3WjIvaUVEUjRIWU10UDNYSGFUOUl6SXIrZzlucEVudnNqTU5Va1JDbW5VaXRYeUo3YlpMRHBORTZjc2k4YmVRcVY0M08KMzVkbTJCcEFGOXc3WjFKeTFCRWhEUG1ERDBwUTR1L0dMcXFUcmlHcXFPY2VtbUJPOU4rWTBzWStQaHZ6WlRhaGdoc1Znc0N1a1BJd3pSSTEKYVdGQzZ3aENub1RxS2NSeXk3T2hsQ096SUhoZmxacDQrdmt0Y0ZvUldFYnI1b2lEenIzK0gzWnZ5aC9qdms1SmVRUzIzcHFMREZCOG1aWWkKZGxhN3V1M3VuSDhJWEZaYkFSSXFxQ1pETVZoQTFuWGxoSFA5VWloUEROYWFvdzY0bW5mdnlicS96NlFCN0kyalEyUnorOFhLSklGcG1nUUwKM1kxOXB6c3NqNWE5dGQ2Z0hPMkJtRytOa2piRXZTVDhlUXZyYjFSSkd5ZlNYY202WGtFTk1WcXFXOGxIaEMwZ2tBSHRxejRKNWE0aUNaaWwKRXlJS2djYXd5ckREQ2RRSGo3UkVEcVYwWGJVZTVwb1RVeHFxVWRxMEoyaFlwMzMzb2VTTDkrcVlPUWZsT1VDOVN5K1kyWUZkbmdaVGs3Q0oKck4rbklnejNnY1dzQ0FHUzhZSUtxQkFqMCtWRXlBdWlJYnhXZDE5YXRTbkR1M21md0p5RDRTVEJYYitVU0N1b1B1eDJEanpOaWlPb3ZrZFoKdnJETGNUZG9iS0FuQ1V0Y01WY1JpSnFlS2cwZFRQYTlLL2xaeDBEYXpFOWRWOGZvSU9GYktFOEFBV1pQU2d2TlZBbENTL2pRbk5kSjQweDAKY01mTUZxdFZBczBoR3c2WjU1UVB0N2tXR25MSnNDeGFjbFZaSUpnK0pFbkQ0ZUFkd0lWUUFFc3JvRS9MMTNaZ1YrUkkyY3RDU0h2Z1FoS0IKb1ZDbFZCNEhVclV3QzU3b3BySllxNDVDUDE4WUo4MGY5SjlReUVDekpHVEU4ajVVcFdkcHRpSk5DZTBSRklSM1RjeUtDc2MxOVRwU0ZHSkcKTVgvazZZWCt4ejN1WnNYa29scGZUOEJ2S0JzZ0hXczd5RU1wSnJNL1dVRUJJZTRzcHl0dlgyZ2hCYXJFWkROaTU4Tk4wejE4eDQ0ZGkxNTEKaGI1QnEyNkw5UW1mM1YvQlBRS1kwaVFNY2xFU29nODluWVN0Tk1zYzhUdk1xWWRTTE1qT0V5L1MrVkNLRlVoSmtER0ZpaVc4clFWZVlvRmcKbGFPc2s3aFJKV0J4d3JNVGpBM1JuMTI3ZGtFVWJWQ3NnMldWUEVqSERNQWVwOWlLejNZQnJMcU5QY0ZPQUJMWEJ2M0QxWVI3eUdMVVhkMXoKYnhYMnFZZ2lMQUVjWkpSQ05XSHBCdzFYdmFoNVdGcEhxZ1RxS0JKbXEzQjlTbGhHVW5wRS9FUlZRZUdSTXJPS1RRTG9Qb0dXUW1GbjJ6YjIKUGFJaVlWL1pSSFg5TzZDUGFRTWhyNE1DRTVMQjY0NHJyM1Nua3MwWVZWaGswdkl6V3dvU1R3NFRVemt1THk5bnJ4MEtrdEljMGxteW43L3EKYXAxbFg0Z0JrRC91VGxiQllSdEsrWGxwWFFiemo1R3hTdDhZd25OZEI1Ni9hUm1aOElWcTgxdUhWS2JjcWtHZ2tRWXFLNGIxdTQ3cUs5SG0KTGkyM3dBNzdDc0RGVjVNUEFlNE80a2htYmJwSEQydGtpMXFVOG1IcCtaUmgvUitwVk5pWm1qU3VzZHVieUZOQ3FNZHpjdFkrOXVRcVdrRGYKbEdORUs5THN6bXBrcTJlc2RjWmpVUWR6Y2o5bkU1MXFmK2FIRm81eTRBempWb1VpRFNPNmJUWmFMdGtVc0F0TVFWKyt2NTlncnpOZWw5aEcKRldlaklvdWhEVlNVblNKb0J2ZlZsZlVGRkh0bUV2Sk9nSEdpRVRUTWhHSjBVVHhYUU1oS1Q4bGRYdVhFaHV2anlyRWt0Z1Jvd1FkUTVJN0cKTlhmcGFRNDM1ZitLU1RIZWdpSVRFTGpyOUNFVWhSaXNKUlE2ZGJEbHA4d25GTm1kUWtSdzlLMVhXRmc4c1NwWmtKUzh6S3Bwejk5Z3BNMnYKcW9nem9KdjlRblhCWk5EdlBPcHpVdmJBUVlMNDhlUnVEOVV3Ulh4MjdtSGRVQlJ3R0hnMUZLelhCNnFqeGY4S1dGd1paa2xUSjlabk41MnIKNCtDTkJqYkh0ZzRBRVhuQWxoRUJQMUlSL1FjUmIvRndxZnEyWHdBb2UveGd0Y0lXS2J1VGc0U2ZPTGFZWlpSaWZUU0JJeUhjVUpRT21DdzYKclpLbFFMdHpCQjhSekFiaHVPYUtVR01TMXdMbmZvTEtZaDl4MFVuWDhNYjRBaHZDNDMwaFJTSFdxNGkzTTBFakg2enF5ZEtwRWdHNEFJTk0KT3h6a0hKTlltZG5BZTgwZ0kzQ1Z3NFdLY1RWTDJrSDdSU0J4MkFjQUhVQnZrV3NWS3g1STRWUXJULzZNOXB6eEVQNThLSVp5c25LUGRYQWoKSXAvQk5pa1NxWG91TWpYY3FjZmFEd2l2SS9ZYjkxRFpyOFRRYmhKSXJiaEwreTRReGdJVjd0NjFpOUJwM3R4TG1BVW1oZ3JGWGpFYkcvS2cKOEZzblZnT2hOL2ZBNXRwd3pEQnFGYnFTZW1jWlZiZGt3a1FVcCt5NUg5VWRiM29oT1N6NkluWTJ3TjIxK29zRWIwNGMyM2trSkhhUzkwSnIKcmxmYW9lWDRJbnZzYnFMSTkxUktyeWhIVW9mR1pVcVdyeUlJQzV2d1FNVUdSSFlVUGw0b1pqOEVpNEhBbVR5WkVqSTFlZUJIS21IbllHTTIKMkcwcEI2OVJScEZOTDRWY3dLWkMxUlRNQVdoeDhzb29mazYwSjlBSGd5MUhRUXFKckxYUGlWcjJCYVRHT2NOY0RBT0F5YnBSNFVTV3NGTmMKaXFyRUUrSmptUmlDUVlGMXdPTGpMRk1xd2hUZVhSa0dkTjNqckhBeHlQL2dMcnJxY1RnVzdtbDBGWitUVW53VjJBeXpIZFZ0b0lhUG1kYUYKZG9BS1BXdWRyd28zdTZ2WVhXM2kvNHQzcHBqTVFncHc0Q1NCczBRSDBqTVNDMGxWQU1WbVpCZU9VcXpBZHM2UmJTM0Q5WTFrbzI4UDNkaloKTmVscm9xQ2oxNXRsaEkrMnl2YVp3cnlFVXRHbUZTSHhZWVJBSTkwcFFhcHV3QmdqTVpLRnc3d3dSdnRqYjU5ckNTZWdZS04xVlA2bXFUTnUKa2dSQjRiaFYrMlU1bldxSm43N2tRVE9VdmtNY2hkQzFlWlgrNnl3c1FPbmNjNlFVdWdQTU1kVGU3YXlGRDdaYU91dFJDUHB1RVVERGZzbysKU044V3lvZC84NU8vK2VPL09mTTNmL1kzWno4K1FaVzNTLy9uTXhCUUdzS3RoTDlmcWNJbWR4ckNjeHA0YW81b29xcVpUVmVlUFh4M3ZGTDcKNTJSNzFhNkdSaVJOaXd4cTBzNWFxZllGWGt1b0xyQTQ2ZjVpN2pzd0MvbEdWeWxqZEl2M0NBaHZQV0RWRmQ0dHVHYjFnSG9IYXN0Z3hjRlgKaVhaZEpmQld3d2drdnRBb0g0OGRPdXlYVkxPRGFscktHRE5yYnJZQnppTXA3K3NwRlF1cVVjdXJaODlqcjY1QXB4Q3VkeW4wbCtCV3FyMWgKYlE0OFdoTTZkS0Q5T0dpcGNlWmY5VWdab2dwVjlBdmdWOWI4bTVkUWRDR0pTNkRlaXpYVGJKMUhGSXVzbVhaMzJKaG5tMWs4SlcyOGEwaFgKU0lFTkhBbHBySVdzUXNVaXFYUlpxRmQwaFVwRWIwbGQ2cU9UL2hwK3V3Z05wZy9mKytnNXFpaGQ1NnRQVUJNSnVsTnYyYzkzN2YzTEg5NmcKSGxQU3BhSXEwblgraEk3VkI5U1plamVwU1YxcTlhaWs1TVM3dkJQYVNSK2RUTzlDQStzcXRaV3VVclhwQ2pXdzJGSjg3c09YWEx2cXVuM20KYlZkS2NvVW9hVnQ5OUp5OUF6MnNSL1dVU1VmcW1pdE80VGUwN3pqNzREMytLMDB2YVU5ZFN3cFpwNUlHMUFYdkRlaGx2U2ZGTDN5Q0xjUzMKdk0zV2xsQjV3dDBldFo2RHd0UUgvcnh2MjVOZjRIZXZ4bSt1N3lTOUxId1BxbFR0ZmRINkcreDF0Vm1LWWxRUTQ1MmZZRis4eTcvNVhYdnQKVWJ4Q0pTcU55THZVL3BLRzFOdnBPUzc3cU1Wb1BVSDlxNWRpM1B4elY3TXJYNHVucHVZVzM0V2FsL1NwN0g0dlU2UHF1aXVPUVF2cnZROS8KbE81eG5TTjZ5ZHQ3QTMzcWlsWVlqL2Q5OUVPVjdLcjB4ekNXMXFjWU4vWkI2cjhidk85bDZvZjlpUHBaNkpQVGNWL29tYUV0UGxMU0pQc2cKWm82MUVDcGh6OW5WTkpiUGZmUzRxNGVkdEcrZTVEWGVwc0xhQlNxTG5Vclh1L0RoWDZUZVlGdjRKREVqTHRpVFE5ZnNHWTdSQlZ6TFIvazQKbnpZK3AzbDJuYis3cXBlTitYdWF0VkkzWTc5ZjFXOGZmZGZueG51Y1I1YzRkNkZCeHZaUnJlelpwRnFHc1gwZlQ1UG0vWHRzdCtidTk2eE4KcCt5cUY2R2lkZXZzclRjL2Z1cldxemdwWEJWTVA2VWhkZzJxVUZLWGt1NFhWYmhPM1hxRHlscFBmL3drbExic2M5TERDcFd4K080VmUvVlYKNmxXZDBHc2ZuN3gxeWI5eHpmVzR6a0c1akFwU2ovSEVPb3ZmN04rVDFpcW9kYjFKL1RCODQyMXFUMEZaaTJwVzl1NDdkdituN1RkWENiTXIKMjNQZ0tuYWZkNkNxUlkweWFwbmR1bTR0T0l0djJUZk84RFhvV3VsWm9SbDJQdlhHMDk2K3QveHpKMjlkdHYvYU03QWRwNUttR3ZYUCtQbWYKaFI1YlBCdWZ4dnVONm1KU0xYdFV1bWE0RXBUVStHem9vVGY1UEQrbDV0ZGJhSXY2Rklwbzlob1V3cndQN0hsUFVudnJjZnZ1S2JaR0NsMzQKM0dYMjVDbnJvYmZ3Uk93SHFzRForM3dhS1lsUnNlME10TTNTS09Cemw2Z2xkZ3BLWmxBZFk5L2pqazlKend6cWFQNDUzTzBOOVlTUHRMWFUKNzhiV3VMS1o5NzFyMHIyZXh2Z1Z6QXlveG9YS21WL2xQTWVTOCsvV2EvNjhKeldLVkZSNzA5cCt5cDcvOVZ2dm9JY3hFNjAxajNIYzNySFgKTmNQVTU1ckpiMURwN0cyTXUvcmVQdldtSytXOWd4blQzRGs1Vks1REZXbFdwVWFZSWR6ZGdoYm0xK3MxZjFYbk1vRnZVZVZhV0xpZU85MmQKTmd1V0dHTXcvaVh5WmFhYjhGTzhXTlUvVWc4SFJLZDRqbzJ3R0lSa3R3RElxb2dyMnV5V3pjWmlZcFdERnVHcHhxVUZwY0hwU1NKbTV1bHUKVC80SGFxMGFNY2pNeVA0R2kyUzMyZWc5U2FhcnM3eXJCZmhVRWlHQTUrQUFId0Z4d0YzMTZLN0VlV3FWdzNHL2U1OUhOQWxyQ21nSWRZUzMKM0l1c1JsNHZlWFk4N00wNi9HSVRUOEYwU0NOTXowNUlMZE1KWVVvR1pEV2EvSGJkSFcwa3E4MnpOL05mZWVqTDM2TEcxcmVTbFRTcWxMeGIKZ3BoMm0rbFpYR3F6SlJ0bUtWbDN3ZTJhbWJrM2FKT3FGeU9vSk1KTmU1QlVYbHdkSkNTajZpOFh5cnliaXdxemZtOUhvaHBzT3NJeS8xdFYKd2lwUFFpVlZkMnRqTUhLUm8xQ1FRZGloTjFwc3hsdUFOaXJ4QTF6TzVBR3lvMmpXaHk2VGRkOW1lVXo4dmIyZHhocnhpRDV4Vnp2Y1NXV3EKQi9WK0Y1VXBsaGFpWk5QeWFJTVJ2cFY2MkIxV1NlMUsrRFhPTTR4VTVCazlnbFZYRFFBampXZjhVcXkxbWRtV1BKMFdLZElOeGh2OFcxY2kKUTJqWWRlcnEwT2tGbktEN3Y3UlRybzJCTHpMWVMxWXlDTTlSdm9SOXBqaHBlUDFydUtMQ2h1Wi83MXRiWno1aXBOQ3dPM1AzMitSQ1plVEIKY0xZeHB3NGVQRkV4Zlhsc0s1WEtaTGtnQmdVVlNoYXNWdTFhdS9GU0N5MWlaRVdVeDVvbFF4bENxL3RINkdoYWczZk1yMnVLeis2Z0dVNVAKcTNkWGhZcGtqQ3QwV3Urd1ZwQ1puWHFzakh5cnFpdjVxd2g4YUpHMXdRV0ZJK2prUmtVUTBuY0RsdE9zcEZobGdjcnl2c2p1YXRkUTZGYloKeXBwdkFVQUNtZ3FobVhDQWphY2dtZkoyVkJnN3FqOHBGQWZxcGpoVG9jSkxpajBPQ0E5QXl1Vitsb2tva0RkYWFnR3U3YjVqMTJHWmJGd2kKR0RMY1FJb1Fjd09kb3k4MElpTkpDbFNGTTRlS2NSNVhBeE1QU1huNTBrbHZzRGRoYlVHYmFQM1JaR2ViN0lQNHVnK3N5clJ5ZHFEM2JXUHAKZ1JzN0FKeWdqNWxJTUdYTjJJRFFpQVE1ZmRVbVM0MjRobTNiUmNJNU9TUU0wMU8xSkR5QlR3aUJqM0czRW5tVGtKUm11THEzczdEVXdoczkKeFJFaUxUNVQzVk5GWm4xcElTWDRvbndpOW9lYWFsVGlMWk1jU0RrNEhGU3JuanZ3ZkVGVnFFZzFnNEh6T3RBZUFCZDRmVmlyL2wyMXI5MTMKVWdWTHdKUVoreWI3VVZFOUJ0b1NiN2FZYlNIWTZGOVB1cnZJenU1ZHUzNGJNUlRYdkZocUlRK2tlV0tVOTNaMnpDY2hvYlRtQi8wSCs1R2gKS3FKZ0gzSVRya3FFQVBSUStCM1JEYlBFZ2lKbjFIcnFsVEVXQWFab0RyVEhlTURTT1gvbHNiTXNaOEdkblNpZmxQRnVONjdkYmZTL1VLa2MKWG1ISG9pMVNUZllrQ0lJYWgxQitRMm4zdmdOSUVURUMwcm12N1RPaHdqdkxMVTZmd1ZjdjM0UXZPTDdodDFLOFpYSHIyR0xoWjJlVXdVT2sKMFhNcGpPZHV1ajVFdDgwTEZBNmdVemEvR1hqSWVtbmpmNDVoNlZLdVlsVjk1aklDSzVPV2ZkRHlRYkVGRlpIOFB5cUJRY1hqdGdCSlE0U3QKWFAxdjQ5b1BWc1hER054bHhhS3hVSXZDbjlpdjMyUnBEV0RKOXNRQlVBQ05oRWcwRURGVnk5WG9jbE1Bb2dlb2xpNjJOZXJlSkNCK2NNNDQKZ1JKeWZUNXA0dlVtQjdMTmZGU0U1cU1UNXlhTW5aS1JENmlobHlYajB3UHJXQktFcm1KMmp1aFdLSWJRMFdIa3pyRGU3QytjSUJnc1QrNXkKMjFTc0VhRnhWN1FwS2JsRDJ5ZUtlU0FXbWxDUkJRcTlLRGpkUkxWUUtXUjRsNmdtSEtUNXFNYVJzbWVWQU0vVTZ5eFQzRE1TOUdZUTJaU0cKb3Q4QTFhRlViVlFBb1RXdkxjUW90b2FiUEZ5aEs3VDVzMnFGTlRYd09zMkFOMlhUbFRJQTVUaXFkRUl4aDZoY1V1aWo1ZzhoT3l5V3puNlEKQWltNitzREJCNk5PRXNWdkJrT0E1TnAwVmlGMUVhcUplTUV1aXBUYVIwTkFqWXhsVHNzOVNlcHdGaE9PWFdLMnNxUEdZeWVRaE5EQ3cwMFUKMnJDTEJTRWFrWHRndlhEbk5pNE1hVWMzUnRxamJzWmowNWhjMjJlaUNNMlN3NElQNmR6Y3FyWHZBTGJsaWJrb213bjVtRUFvc0ZpY0szalEKSU9vTGZpaXhRdVZBaWVZUzZHcFFOT1dFZzNCM2E1U1ZSUUlpaFVZcWpyb0VEMjFjaTRPNlBzbGtiYUpxbkYzaFhoWDZ3bXFLYkR4VFk1SUUKclhzVEthSUk3aHB5TzcxSjFBVkRtaFQrUUVsYzVacnY3NWkvRHQrenIyMkk2aUN3V1VEQ21xamNhdXN0aXZmWXdITDV5eWhyTnJCMFJIRXYKSlZVS0VTQW15Zmh5MUJURGtpWklrVm1wVGdzekpxWUFHMml6aHhKNitwck5kVW4vYlZRdGVydHdlVnprSHdZODhabnZwY1pCTkowVlg2V0cKSzlBcXNyc3VxV2JOMjVBMUNZME5POG9QZUVHNlR0aDMxcXAreXZHMllFbE9HQ2Riek14azltU1NURzNQbmlWeEYrNCtRc2lhU25YWlhUc0YKRXVpVkhWL2ZRSm5IV2svQnNtd081MVBSSnl3YVpsNXJ2ck8vUFoyQ0cyTlBvVVFWcCtmOTQyUkU0cEJDcXNMK2JBL0xMMkZIOXcrNDlZcS8KTnV0akllU3hVbzJPVmhMUGlFSnZtQnBKYUxxWFhOb2pNR0lDQkJvSkFxSnQvY3c2VWkzY2RlaXU0cjlBRmNERldnbnA0YkxwcjA2RXVxTlcKb0gzTklXSll2OTNXWG04VCtrVTRRZGJRK2FRMlVGQjRRcWJFdnRaNHdoN2w5WDhDWXNWVGhLclV3Skp4MzVRK3hWenIrZ1RWeGRyNTBGUkUKd01sNVRhaUIxaTZXb1J1WEt5czRHNVNXWG8rSVFKTnlSRVhyalJkUkRUWHNWT0V6bVorWHVSaGdieDVmY1FidmppTGU5clY3MjAwWDJTb3YKdTZxTm5oTUZaWUtwV3pSMFM0R2JHQWRBVUxVV1k1NEJuUnN0U09weXdFd2kxRzJsYXZsNWR0Y3YzMzlJTmVEMnRkWTJER2kzVnU1T0lZTTUKZW9BMEtGUGRYOXdMMDNDRkdXSE5FaERITmlqV3NrRmJMTmhZN3J4V1FpM2VUL05XZ0VqQVRyeWpFbXFtTDJFL21zTXRzcEp3UTgvUTIyb2sKMXNLT29BT3RQUmxvUXNyd29ENWlGN3NjdGpCUCtDVy8rMGpHNVd1S2xsZkt2VStucTJZVWM2cWprTHloZlUraGl5cm5IMUZScHBDUHhnZHkKQ05HR3N1QVVkRU5xdDJaWnJZMkVwbGlacERFT3dobFd1RG4ybzUwUVFrMGw1TXk0Y0VzWGkwRHA2eHFjd0VGcnhlT2NBMGlnN0NvY1lyZVUKR2pIRkE4QTVFYm9BVTY0MU9PZVdGdExKV3NrL3AxdWRkcGpmUGRENkZ5MUR0S0VQc0pONXV2a2lSVWFpUk5kb2c5cU9icldKeXNUaksycHEKUTBFS2dHUVpjQm5UMGZhZjRPSHdGbHA2WGdvVDQ1MkUwVUVsZHBFOWE0VHo0ZXpTVkxnVGxqNUVubVZNMitvbERvQkYyNEk2Q2NNbVVFK0sKY0JRbE1ZYjJ2NjJ0T2luejkxQlROU280cjVEenlwWlJVSWd6NDZqNEJPeUF6Y3JNVDFVdFBoU2NFSE1JRW5TK09kUzZSZ0dpbzBLUE0xS1IKRWs2enBPVjNOa0UrUXM2N1RONmluWWlZV0JUeVVRMWxsRXh0SWFHL243QnhkVC9wN2xkZHgwSENVZEZQenAzRStpT01qZG9XZHQzN21VT20KalJKeXdoa1dERVo2NHhxTU5tbGJPbU9vRHBJT2wwaW5RYTk3QkRhWGFtZGpYM2RkVE9JWnU0VWpqUWhhMHpxQnpGMGphSWljRTQ3YlExU28KWU4xdGFrYzVMM09VN0Q0dWFTd0RJTElMbW1qUUhTUkpqNjJqQ3FTRU4wTW8xV3l1QTRrUk5OZENFSnNSNVl6b3VObE1EU01reGVYS1hncHEKbHIyVUl6WTNpdHBKTnAwNWpVQkZQNnc1U1lmTlJqSlZteWpLNHRobXI5L3NHYXp2TmJzbDBkd1RGLzdZYUgvaUdycUlPTHNOS0VYSU5BTHcKU1RvVlFja3RpbnNtaW5CZ1Q3WG11SS9DN3FRRWJSbW9EdXJmYmxhK0RTcXF4aE9uSmVsQm1Bc1dESFo2eHZEVXZ6U2JHeDVjT0hBY2h0U0cKS2haYkt2K2NISFZpZUt3Tmg2dHFTMk1jVE9jR0cyREJHdWlOWmpKcWduVDJ1eE52NHhWMU1tMDBHWEFsQ0hQUk1iaFlVa0tlTVNybTRUU1UKeTdRR1FUd1FVeU1xeXRLVTRFUWt4OXI3QVJCbHdrZW9jUnRWeVA5YmgzVU9STElibElYUUdnUWFTWjJyV0FCNlM1Q0gzdVR1TmlleHZhVy8KK0JEYWRKaGJiZzNPWFMybkFyZDFHVVNIN21PTWdzbmdqcTdMNTBUOThTbWdJeEMwVUpKM0FLRlRPWm85ZlRzeEZpa1J1RVFIdElDTU9XVmQKQlJLVjNZZTFOWUFuZ0psbEhwcGdYRFFvZUxnTE51YVVjVXlZS0pxQUxpRlVjOENLODRtWFZoeUkrUDZJSEZNbnFDYnRXckFNdEZYWXpxMW4KWXl5OVh0UFppbUM3YlFwclloU1ZOdkZIQ2xodG45a210M3Y3RFByWFQ3STFnZXJ6YXJuWVhya3VhUEE1UjRkcmZsQWsyMXVoQ1BiWlVYbS8KT0NTR0NRaEpuMGFKaVNGcjQzcHVSb2h3K04zQUx6WHlnNmhpU0pYQWxwRlJyTFpuVnNqbVlhR0UrN3dqaTlNVUZHZ2M5QjJGNWQ3dkVtc3IKaU1IUkttanNDV2dvZEFoQytjM09ZRlE2ckZlRzlYaVRESGtkZGJVcnBOcVNocXFvNzZrdEFaYnhCK0RtVUo5N1dBWDZsQWFrbmpWS1ltTVQKZ3hDZ2I2OXc0aFZ4Q2NXTXV0VTlSUUMrdTU3OElYT1dXVlVaazFZeExMdTJqL3JPYmpsSnF2NGdUdXFBQlBwdXJEcncwUEpvVTJieXliU08KRzI4TUVPSEFrQXV1bmJUeHZWWUUxZDI1QmFuNmg3d0FqQitCdDQ2MUgvVHZ4d3A0RUNjUllHUmlZRVpkVitzKzZFUWhiMkorZ1NZdEt4eUgKWjZrVE1rNHluYnlNRDVSRjBzMUcvM29ia3M1b1BYSnlBZlhQcVp0SFV3aFQzYWRCb0I4WnhxTDBScnQ0MmJKVWNVZUhqNk1XQTlCdG4zMm8KOVpwVnM4TlhTOEs2SDRWYTZEclo4U3NUZFkzRDloMSs2c3BjamlMZUFoSEpIajc0L2w2OVl5VHlEVzlGTWZCZUcxV2I1OUlUY2RBbHAyR00KaEM5V2lLd0MzNVF3UDY2ZnI4MGZESTJFS1RRbXhJRjdrV2xiYXdVQjhCMC94MU1aRHNEdGl3MEltQkpSeXFydFhXcHZlbFNHbVVZZGdvTTEKWVZyZDBQTFl5bWl3MjdyZ2J0dFVnZGFVaXdyak5LbWZJYXZzSE5CQ081am1IZFZUbGQ3eHk4UG5pd3JDRkltdFF2VGRqVUx1UnQzdVBWSVoKcTJLMzM2aTN1QzQ5bHVrQlFXVlN3KzRWN3BnU2hrcDkyMjkyUXJKK05tY0p1NVJiVkpFd3V4dmFhVVUrakkwSm85bUxDRkRTb3NHa2RUZkIKemk1MEt2eFhGTE5JeExqU296OGNJWWVES3ZhcUNITGRENjNxVVhlNTc1WlRMZWxwaWhkRFJqR3ArTkFEWlBZbFpacFdSbjBVSmZlT0NnUTEKTm9rTkdWUk1neWs5eklpM3JEZHMwSkRsYldlSmg4anVzMTNRWDAwMFNoekNEWllsUkdudmJrTW5VWWtjaTZFTjliUUtNM05lKzJEb0M4Y3QKTEFwb0tsV1VZdkhLWi9ISXFmdkFZUjdXbGdVTHp3c1hqNkxNemgyb2Ixb2dlRXoyd2hyT1lKQTJ2UEExeHFKMThLRDkwL2Qra0swaUY2M0YKeDdlYVFWUVBkUW9Ib29ZK3VaYmpoTjIyelhsWDdETlBncGpSN0lFd2lybWF0eU05UHJ2Ync3RWJKYlhNL3FUVmNwaUxRaXhqMUozWmlvZ0EKeUUxZU13UUtzejRFYnRhRmFydFlFQkMyT2V3aFJmRDFFWUx2MWN0YVZBVnFqZE1ZWWYyMXJzcmpmaDBHbGlPeWNiZjcyb2hBQ3VQaXhKR2MKS3BXRG05akJzU1o4M0dDSHg1VFRVY3VSbDYzRHVldnhLa3hXaFUxSUhGRVNncE9MczVDR0ZmOFJJMjI1ZFpOby9ldlhVVktzbW92S05nVW0KYlJtbGowYXRrOGtFUnlLYmhuMUtqa3UxSDl0L0N0bmFzRlRKaHp6WVd2eXR2dE9jc3pTRWl3NnRwOFpGMk9ubFU0Q2YrNWtJK0h5SHBydVQKVjBRK3d3UU4xZ2Y2ekl0QW1YbVFZQ0k0L2IwMkJoUWNNTCs1WXJuSWpqRytsUjYrcHBIamRnbVdrMXNya3FmaGVzTWd1RXlCRy9rUXJXNzcKZEFFZmtFemt4RDFVbkd2U3ptWFdTemlJSkhucmFYWDQ0ZjdFTG5RUGkxZzZFMjVhaHBqWlBGY3NGUkJrRzAzQy9JcGNCQTBTR2FkYWtsQUYKaHFQYjkrN2pCd2hON2lYcFdUQzVGRCt6V1E3RDJFZklud0tteitiblU4bHBsL3U2bW5Pb2pXaXBPZ09OcDRPdDd4OGFOMThxdnNWNFZNRUEKVEpoQVRJWnNSWUJDTWpQY0JvTVhRdGNvRVM2aUtwRHNNNVFjNlNsV0RQZUZJaFJpLy9RcGdjOEZZd1lrTmRuOVNmcURJaEp6cnNqU0tNR2gKSUtxZEl0d3RVZG0rSXUxaEU5ejlCVGZyNExTN3d3UUhWdUVROWxhcmZqWkhRMVl1RFQrcklBV25VVi9WMzZLOXFENlNkbnR4cHpqdEFZeUsKcFZjay9lN05Ob1R2T3poOC8xWm1ibzd5OU1pem1ibVZ0dTE1MTRGbzhvaEwzZCtXUVlSR0xXdkh4YnF4R0pya01LV0VGMkkzS1hYb2xmalkKZE52VVBXZnBxNUJkb25NRnYyN0xoTUpRVm9FazNhN2JHaW9XUk91QzlTMjRUeUltMjJDMWVIUWFUK3c3RW16RWdYWU9qMWlDMXRnZWx2UDcKbmFGaDdwSGZRbFZ4eXA3TGd6QjhvNGdMN21aYk5RSStaVnRlUzZGNVZZb3J4MzI2Qk54V2p2aSs0OEFhck1uRVRKSm42VFpYeXBZY0hiamkKQmhNbjhsWmg0YldyZTQ0OTZqSWFmUnA3WHA3QjkrcDVKL0ppVGlTWTQrb2tYRVZrUFFjRjVIcVVCbU82Vi9taEZEVGp1dWo1Y2tvNkpNcWoKSTg0eWdEejVBWW5UUkU1dEE1cTBSZXp5akM5WDBMUnJ0Tzh3V2V5eWc5elgxOU81ZWFoTm5yT1JpcE02S1pmbFNaUHBQdWZtK05kVkNHbmkKZE9pbVoxTzEvMWZQUW9nK3NXS2FFSXJybHVvK1VUeGEwZDVXSnhJcGwxVUdpRzZlS3pWL25TYlREelpMU2RpRkNxYXJIMUE3dk9XZk5FRzQKQVkrUVJSUjRMQUlNVW03V0ZDU3I3T3BDaDBRRktkN05UZmNRWmVRdFdnWk9JdU5ZSStHeElwN2RMYnR1V3VJVHExRE8xUzJTY0svdE5tTXYKTDkvQUhZVk9MK1Y3RXplbWtkelBxbk5PeHQyNkZKR0hjQUc0aHRKKzVBZHNsWGZORm5xNGhQWjY4SXFhZ2VkSzJiK2VUSVZNQ2xQTmEvWnMKWUxrTjFSeEVqczBhd2hPSGZpUjdFbjRXQjREZXJVWklnRnRvOHBDSzVKZ2JSYmI0YTkrMmdQVTBGaFMxc1p0QVhDemt2eG5Oa096RG5rNngKSnltRVpRamZCdUhpcUk4VnBSYXdveXdzSktHbW1RZFZFMVpZb3NBNzJ1L1FyZk5VeFo1VXVOTmNvMjRGZGZXZERLZHh4d3d0c3d4Z0dqMUkKUEdDYkJabFp5TUtOTHB3SkF1SnNrZUdEc3ZZdnRBQ3MxV3BoNGVqUm8vUHJnOEY2enl2c3FNMFlnYkNXc3l5MllzOUQ1MFhTNFZPVVVabk4KU2wwdEhCTEF0bnQyLzU3Wmx5cXVPSUZ3WGpRb0EvcTEyVXZpSE50c25sZjhFUllWNGhUZXR0My9PYnRtMUNpeEV6SExmM2UvdEt2OXpNNE0KVThYakdWbXZGUnV2NVJZRWcxSTdhOTVCZHlUNWpqdDIzRE5tTWcyZXdoeHhFVWM4SkpYeXYzc1JSUmtNL1FUcVF1amJmVENoSzJxdmx5cmUKTUlmYkRpeG4xemNzYTFXZzZBbTQ5MjNBK3FHcTMyOG12U1BXQWVXKzFpeWVXOElvdXlZZmtNTUxEaDJHU2tySS9BTXRZa3VuWnovTEZpRFQKbTJTSXRCbUhId2xvbmRDZVpjL2NpSDBoOXBYaG1Kb1VDSytsaVJWSnZMMVpKTkJMV3F0TzhYeDMxRVVsSFd0d3F5Qlo5dllQMm9HL1l5NkQKNFVRMVVxRFdVaG9kWmwzYmlBd1UyV1JSeDkxbDBhcktMTFdVMWM3ZGRuaXRzdHgxWFFyZElhQmxocmJyeXQ4U1NEL3BnOW96M21XZjhVWTMKV2I4dHBXSnFOcWFwekRjT0hSaWlhNHEydEpwaGlLcTBSa3VjeXJOZk83Z0RmblMvUy85bTFzRkd5aWZPRjVtREVXaUIxYXFUb1l5RVpXZWEKWUhFL1k0ZEg2V2tBSkJ2UnZXU2QwNlZ4M3dURjFqSnZxY3I2WnpGTDlUODhOak00SkJGSGJvalovTWpUT3dlZ0d5RERZaTVENS8rTzYwbzYKZnB3NjZncnlORVVxcFQzc3ROcThDWVR1U0hoUUFUQ2YvVld4NVJPUDEvb1QrNE1uSFZyMVltQWxOMUVQVy9mZEtEZTNmRjhsYVdKdng3NXEKeG1ld2JHbjNPOXFKRVFrVlBCcU9xOFdEWkdzdkxOejlnUFU0eHNXTHJVaEhTa2sxaElsanI4alFvMFZTZWJQNXN6OXJROUl1Z2JiZGIvMFIKU3N1dC9kZWRPNWUvM2NiL1o1THJ3VXJ1Q1RRNDV5V2w1Q2s3bDF4cFo2Wm1PVGl5TFJVVm5BMzVCQnFLOUtFSnBCMzNXMlZRck50VTFDUTAKRjYxUHNuT2tTS1hNQzJabit6SHVtWk8vRUZnSk5FZzZSNjRuSm5rcXRvM25oVmZiV2NxeXpGOGUwOEtWVzNxRWdORWVRcnNld0kzVWcxeEoKVzI1ek0vTjk1RVBwbTdTQWZXb0ZPcnAwSnNkMktyUmttOFBXc1NKTFVleE8xY250ZVRPK3krNU5BT0RTbUxibkkyRXo3b3V2TXh5b3VMTjUKQVRnTFZGbzNlRDdXL3E4a0plOU8wY2N5cG9QU05DM01jTFc2TTZxbzIrZVhzMmhpZGt6TlpNTllKQld3SWtxMGFIZkJaaGJvL213dG1LUFQKVzR2OU9UT0dpN2dWb2JpaEY1ZmxQaVpLN0FScHdYekxFVnlnSG1HdmNOU2wwbXQ3MGJITjNoNmRRYTJxQmxSdGtiNVV5WllrbmtwSHFrb0QKbG9OblU5RnRlOEt2MlBIV3VBUCtVTGJQZy84UjRoYUlZZTNrVGZZTXM2TmpoN3RDWEY5d2FXMjd4UnhHVmpOSnRLRGNINHFTRXliUUZFa0QKUi9vODlMNFhzc2hEd1NyS0czWFhKc0dpRGFsZGY0VTRYTzExVXNKSzlic3hMZ2pndTBPSzcwZGwzMjBaTzhxcjJmTEJBb2pFU3AwQU55aEsKM0xDUWZaMnFqcXFhajYyVEJ3YW9EczZwTkpjeHZacVpiYTNQYTN0NUN2VlVMWFNPVW93aDhqdHJMbS9CR29ZNzVqdEZxMWV5bGUweitIdzgKTXNmZDgrTGIyblRPekV6bTJDT1ExZ3NOdVJZb1dkenJXWTE3NFBXMlowU1R3ZXkxcjZhdEdJTnhCNFo1UVhET1VKd3RVaWlaMDlSREhkOXMKWVZCN3NvQmlrWVcyUThhRTV6VzVHRTRPaWZySVZSNmZ0ZGYzRlMyNE5ZTUdGeGxhb1N2VWx0cS9uRk5hbEtsamZIV2x6Y2tUV1M1OFR4WGoKenZ4cUJKa1pzdWwycXphSzBUTFVXbHBQMlR1SUVqT2o0bXNvbG1KUEh0WkgxOFBTdkh1ZlpWdVZDNkdHVHlTNTI3Qm1rZEVEbXdOOTFzcWMKWTg2MnZXMVpiN2IrRGlSRk9QMEpuMG5CSWNoS0Q4SmYyTXB5VWR6a2VuZU9WL0NkN0lETWdueUZQSDR1cGU2d2plcEt1c2FhMzZOQVNwRmsKM1E1a3RoQ05PTi8zTW5lcW5iUUZDdm1tOFJwdWpPMHZsVDZtN3hibmwzK2VPQzhHZTRhYVFGbmN0d2hGTXlvbThUcUVxVFRzWjI5ek9heFMKQWhDL0IrQzgyV1M1VFowWGhlaEtnTUN6a0tValg0RytDNWl5RFdqQ2x6djhnREFJcmhGbmZ4TDRYMG45NHlDbEtySHpsLzNXazlrK0U5QTgKaDdXazZ0VzQ0QU9lQ1VxTGR3dmJLMXdMN2NPdFloMktHSllRL0I4M251WUx2QlEwRitQTVphN1duemN5UmdnVjZhelJ2MjNjcjFOSUYybUwKNjZnL0tGTGViVmdGUmJRM2lYMFBjM1U1UTh3em1lWTVPWDR4NmpCbU5samtNSlJGUzBCQWR1WUJiSnUxQU1Tc3k2QVFIZDVpYlVoUFcvR0YKL1puZmtTVVZuR3VvMVl6YmNFK25Ick1iaHd4L0NtQmsrKyt4NEtqaXViTHRxc2pPTXVYcFhIMFdka2JodVNPQmVSUUNwZ2FiMDFWUzNsMW4KRFdPbktpem8rU3VtTG9tcmFaQ1FkYjRQdDRsVXEzVGtZQ0ZQT2N4bWZ0eUJVU3NXaUl4b25ML1dMQzV4Mk9IS1BRbGh2Qy96d1IxcHlHbWMKMGZhYXpJYnBTMXRNN1V5bGhLRWNSVi9ZVTVrbEdWVThUTXphU0JwQlI3WFdWd2E5N21MU2xtTm9tTVhvQ1JkS1JDWHNhUzI5cmxhdENVVTgKV0ZxMitIbzVMQTRjR0hHRlVGeTFpWFVzKzFuem5ibEtWOWxqRHI5RnFITStSK2lTNjY1aDVMZUlOWWkrYm0zcEZRWlRJL3E5UDhWU1ZKZ1YKMWtRM2ZCTS9DN0w4ZXdHRjZNSWRtb2ZhZ0hPMjd3MzZuaWtuUUNhRGI1SXpFM3VMdkdYaFhnS1k2S2c2b2pZVE5IdzQ4dlBMcTh3cjdMc1YKWEFvL1c5azNibThUclpWeDJZT0x5azJUbVNuZklUTHdnNnRVaXhHV2ltTmlIZG5zaTcxeE9UdWNFdVBKK1pWT2tXMHlPbjNUeVdJN09oK0oKRjdCOXRmVlpvZzRFWXc3TW9SV2NzQU5zOG01RXV4cGNaelRZNmlSVmNDSmYyVFhVa2MxaWNkdER4eFhKQnJkYkNGZFE5cHA1ZzhZcmlJeFUKaERveGV4clZOSXgrOXNJanlBZW9QNTBjMVhMNnVCODZGWkErbXNjOVJCV1duNFVHQkpBeThZWHNhdG9ydEYveHJLOUNCMCsxZHNPT0pZSzQKSExLWVp1d2RQRU45RWFTeXY4d0lKckptd3h5eXIwM3pweUJpOXVCcTFmcVJ5QU9FL2hybVV2Z3hXSnNDc212bU1LRndOUHpaNFBrNnh0aXYKbjlHOWZKOVVxUXdlT2dtKzFRYXRNcmQ3QnArbkJLbTBabG1sUFV1OGNFdHFVQ3NPenM2dXpuS3JPUzhsT2RXYkp3RkFGV25wLzlvRHVNeUIKQTdNaStkUUVBaiswc3Z2WTFVTlZIUm5DVlZrYldGUXBlNHh6ZkZpbEpDeldXK1R0NjB3RlB6QnkvcnlqV0R1d1Y1RUVncitRQWZSbmRIWEYKRUFaUkxObDJJU0FzUFQ2NGw1NVJRaE41bFZMMlZUcHo1MExSait1b0FYNU9aU21hTE00VDlQOEpjNk4yMkhxYU9jclR3aHpwSkF1RzlVa28KS3FhOTBaVTBQV09XVURmWk9aVlVIN0IxK0pwRkFCcWZsOStPWWpxOU5PZHRmeU81R1RIRzFrb2dMSHhUQnpuTHBpZEV6bEhXZE5mYUNJd0cKMEVXT3R5VVJ2ZDJIb2NZNlRybFY3MXN1L2xUSTI5NjdsL2JrVjJtWEJ1TlJNSWdFUUd5Q2VZMzV3T2h3SmVwa3l1S09IUDdrVEI4dlRFdWIKQVAxV01zL3ZkSEMvdnRZWHluR3MreHBYV3pOWHRSSGFRenVZTW84NjdMSnRlSTNQNDhhSDlsanQ3U0cvalNQUG1SSWVRV2xqa3BtZE9XUjQKeGcvMlFLYWpQVzIxZ2M3eVYySFJGM2R2QXRvZCtYanRMVVZrRitlU1hjUnNmSkVra3RFLzNFYnF0V28yb3prdlp3K2N3UStMS2tIOHpTWXgKMHlmMjg4UzgwdDdvNU8zK2dIc09GbzFzbzloeHF1VGcySGdkYUVGdWN5dFovRWQxNnJXZVUxMXBXSlVDTlhFLzJXVEZDTSsxYWw4UzgzQTEKUEpQZUJNSXFKUFFoaG9aUmNUajNrWHBWdldrZE01c0ZzbHYxWnVRcDNNN0JoaHR4bTVMNW10UXRYTFArWk1GQkkyN1hPU3FjNTBQTjhhTmcKZmd3MkUwc0V4SWJ3ZjUzRjVHZFoya1BtV2U5c05Bck5iOWpoamRBS3lWZWRDN29QeG1Va3lEWDUwR0U3TWM0VEZjYkYwUzJva3NCOVF6TUMKYTBEN3BIcFNoL2lvNTNHQVVlQXN3cTZYdEVickk3UnFGelhMU2JlMlh3TDNxc3k5MjRvdDM2bXA2QmRFQ2ZLMGx1dCtrb3RRM0Q3QnVrVEEKR3ZsNmR4Q1VkWms5blRpd2ppVnlrTXNrem1wVlhoQjcrNUF0SXUxZE92dURiZXI3ekRqaXRDVUJYVzU3RXhWY0V6eWREb1cySDh6T2Fxb0UKYjRNVU51TFNBNi9kSExrR085MWxHME56QWYzVCtrMEhQWWxOaUR2eGhMSS9NKzJmM1F2L3gvL2UvTTYzN1AvL1lXRzkydkZOZUFKSGkrcmIKaTI2VDhDd0hJU3ZwWkFlaUJJVy9Od2FKVEpQb0xmQ0RiTWZjU0dlWmJTR2lFRGJiTWdKUVlxY24rMGQ3VWFhakJKVm96K1A4d1k0cXkrbDgKK0NMMTlTNVJhZS9sajQ1LytBSFZDYTlTb2U1Ly9QMUc2SXRCa2V2MnVWZCs4YlB2ZjNMMTNPMFhubEJWYVAvOTJvbjArKzBYbi9yRm4zMFAKeFplZnUvcko5ZXUzTC96eDdlOS84T24xRjMveHd3OSs4Y1F6bjc3enR2M3Y1NmR2ZlBMZWp6NjUrdTRuMTU2Ni9hZlBmdkwraXorLzlPN1AKMzMzSlB2bnpjeS9jdnZUOFo2OC81dXVPYVhEcmlhRmdCbEZiQlNDQzFZSEg2NVFxdHkyU2NiQXVhK01PQWpUZytUaCtKcFF3eXk0NGxMaisKelpkVmxEbGVIelNxVE1mb01pb1ByWlFQbHl5eUxCUjRxV1Q5QkRXWWRYMGdBK3dUOTlVclE5ckRyRHBzcHJhVUdGeDNjd3pqTlhBU1FSUjMKTGMrbWpsUi9ReDFNS0d5MnoxZ0dNZ1BYVWNFZ05LTTdVSncybmd0NksvcmQ5c1gwT3k0V3ViTUs1ZTQySzRjclJMeHVrS05Fb3ZTendDRXAKZ2crMHhVcVVIeTJwM0FmTlFDajAvWmpLaGllZy9OZnFRb2J1NWtmUFNFMFM2bit1eGRqcWRrSmQ4amhWSDZuS0tQVkp1OEpsNm0rR1dtR28KY1VLUk1kM3JvK2N3aHprN0wrYlhjZDFPYWcxS2pUTHV6Yi9mLy9COWFsVyt6WmwvQlg4bDVVS29GYVpyMnFkd3hiZW9VM2t0dTFlbWpVaDkKeGF2VUZOVTlReFB6Y3JyK1phb2pocmJsVmI1SFpVM3J1NytrNnFaVURwTk9wbjI2N2NOSG9YTkp6Y2gzN1hueExGQTBmUXFxb2E3WWVTblQKQ3Iza1BYd0JDcDFRRi9VK2dRWmxxMjU1Mlo2ZS9XUGpFbjBEOWNhTDZGZDdvbmRkZWZFQ1ZVeS9ZODkrMFY1ekJkQVBML0VxSDlqM3ZwTnAKU0Y3T252MEMrMG5LbmUrNmlpaTFKNmxpK3E2MzdtM3BzSExFOUptcmZLYTNYRWNWTXdCUFJoMVA2a0ZLTGZOOXU4TjF0dUNxWDhmSEVjcVYKVkphMGU5c1Q0dThuMkFMTXo5UzJEMy9Temx2cFlISnV2V2MvVC9xc3VaWjlGOC95QWZVM2IwRDVrcU40QlpxeW5JRjhjdnZ1QjlRMHZjRCsKVVh1bHpmcUI1cnFOMTlXa0ZJdDNQM0FkMnZmNEhQNlpxV2U1a1kzRlZkMlBjKzVHTzRkNVo4MkFxN0crcU05NThzT1hzN1h6bmpSaW9TV2EKVkZRdmNSNjlqK2ZqMDdicjVUTDYya2FZNnl2VEFMM2Nhb1JhV3g3bHB5OWFLNTZUanFxdktTbmNhbnpmNXhyQXZQMnV6ZHozdVc2TzIyL3YKdWY3dWszbjd1UjR2K0FxOHh2Ry9RSlhZazd3Tzd2dU8zYXVkd3hqSGRoMGxQVlROT3ZZMzlwOC9keTFiNjUrc052ZEpWbUcrRUxXa1QzbjkKY2RWQVI4bnBLQzN0SmFSVkk5cys4Q3pmZWo1K3VSSFZzZTB6TDdjbHlOdnJxSkQwYTlrMXowYjVjcGFaeHVzbitjcTVxS1o5T212UGNaWm8KdjlGK0h2OWVidHVHb3Q2cFdyZnVlNDNWdmMvRTlaK1B6N3dSOWRCVGlXb1dFUGZQNnlsZTlBcm11cWFYYm4rcHZWZDdYNVh3Zm9xL1BNL1AKdjVrVnhiN0syNm0xZXE1MytPL2pmSzdub3lyM0IxR2EvQW9icGtMdzBXeTgva04yemt2VHozaThmUzdWenZhYTQ2bVhubzhDNks5SHFmZFQKV1gxNTFaM1h3NTduZmY4aXZxWCtmeVg2SkQydmpleDd2Rzk2eHBQeG1aZjRJRmRZTmY3WktOS2R4dnJGR01FejBiZHh6VmVmekFxYW40MjcKcDdFK0hnWEJ6MFNOOHBQeDdHZGpqSTU3alhqdnF4aEh2UDRHci85alhqYjF1VnB5Z2UxOEowYjhKRjlNbi9sT2xHNi9PRFVmdk4rdXNldE8KK3krK0x0SWNPQjVQcmNMdXI4VzlYdVNUbmtTOWVHLy8xYWdGZjdWOTVEUnYvUXJzZjN6K3hheXZMc2NLdXNyTG5vbitQT01GN3RzMnE2OSsKR0NYVUw3YlA1YjE2bk8xNUlqN1A1dUhLcDlubUMrekprK3lsaSszWStUcTZFYVhrSDgvMmpjdngrcGwyRHF2Zk1NZmVpSzljaTgvck0xZGoKblY1ajgwN3prNXB2bXY4dlJaK2Nqa0c1RW5OQWJiN2lEZGE0dDNNMTllRVRzZDZmNU5XdVJKKzhsdTBQeDdObnpQWWNmNkxvVXR3M3RlY0MKcTlXbmZZYjN4ZFhPWi9NbnpjL2pNVXN2OHkwV3N2ZnhlaUdiWTZkaXpyekttNmExcHJYd3d2VCtlWnpmMGxvN3oyZi9JSzZqK2E5Ti92bnAKUGY5YWZPYTFiTTVvWWwvTTlvR2ZSWis4RVR2NWFkK2o4Slh6MGJBZjhJblM5Uy9FQ25xdjdRZTg5WGk4ZFRaRy9FeU1BbHVpYm1uWCt3dFQKZTBVN3VMSFdmSjVmOW9kTis0UC9xYkhRM0h1RzErZTA4VjM2UW52RytmT21majdGUDYveU0yOUVJNS96Wi9UUFhJMEJ1cGc5NHhQeDd3dTgKd21XKy9rNTJWbDd3NzJMZjBIbjNhaHAzcWtWREYvdHBLaVMvVFQzcFI1UHE4NlZiNzRSaTg4Y25vQzc5OFNtK2ZvV0t5SzFXczVTVVQ5MjYKU0RYdnBBT2VGSlpmenpTVzM3UXJ2QWxkY09ocGh6STRYcDNTRUg5TXl0aTQzOGNuL1Y3aEFWTlZtcnJYZXYwTnRNblZwaSs0NmpoK1A0ZlAKK2pYUGZYeVNWMUo3M3FMdWRWenpkWHZ2RkJTcDdUcFgvZk5RNkg2Y240Sys5Uk9oVVU0VjZWZVNOdmxidDM3Q3A0RFcrSm5zdms5U241dHQKYzRWektWSmZvbXEzRkwraHpYMEt6ODgrRFdYc3Q2aHYvcmoweHFWZFRSM3hTOVNmMXV1UFVzWDhyUGZiNDN6S00xS3N2blVXejQvcjhOVXIKMUV0L21xOUR4ZndzK2lCOWx4cmRydGQ5aHQ5NDA2OHYzWEsxQjlkK3g1L3h2TTJEcDI5ZDRoWGZTbnJkUDh2K3ZVd0ZiZS96VnV2Y1prYmIKSitlaGgrN2ovb2FyYTdmYThVL0U2MmxNb2U5OURYTXZ4aUtlOGRacmFJMzZ3YTdxaXVQV1g0OVR1VHpVdldOY01QUGU4dm56cHYzMkpLK00KK1gvZC9vSk8rbVcySU9iR0dTcStuL1cyWGNYcmpDc2k4Z2UzdlMwbmlzai8zZ3htSm0xd3g1NVNVbU45UFBUb1piOTloM0xURVZhbStERFkKZUlQTjJSMU1oa2l2WlFJVUR5SjdLcUsxV2c5WHg1c2VjWnpQc2NFNUpyOVoraHdTczgxdFoySld3SGxBQjhGenRxMmVVdTF5MXAxVTVEMjAKTk1sQVA0S1N1dlAyVHllRVJJZEt0WWQ4SXNKaDl5Ty9zN294aHV5SnlCYWUrZDNMNUY5a1poaGtqekRzMWhCbHJUMmhrV0VndnJnV0lIUXkKQmU3SlVLL0ZwckpRWmIreVJ5SE9QUUdEbzhDNEMvNWt3UlRrU1RvQ2tYVVllbFpScGIwZFJEYVQwdG5COFJiU2c4VisxT1RLb2NWRlc5ZTAKTjVsN2dBRnZoOGx1SFZ0c0c5NUsvZFZWYzNjK2QrWkhnL3VRbGQxdlhUYmJJcENvTE5EQzYxd20yWVArOTJRZ2tqbVBaSXMwaVhGSWN0K08KVVY2RENnZDB3aHVxa0tEeTgvM2dGeUtLMTY5S1pCT0hwV1F4aGxrdXJxWk9Ya28rRnFyWTUxM0YySGFJcVkwa1lrc3Npc3NNYmdoMTB2SzIKQWF2SU1VQXBoODFVaE92QnppT2R3YXh4cElJTzJ0eTlCeXAyZ0p2bWVKTldVSVkwUjF5SW5FN0FmSkl5dkRVbnhHaTR3aHpjb0VoN1V1dDEKS0lYRGh1dVF1aFlPbTBXclUySFoyUnhtZlNpRHdpRHJ4ZlNGVFEyUkhTSXdYclJhZFBiS2w1RldwQ292NklsNTBoVDVsQ1BNVVlNMTJzcnUKNyswc0ZobHg0ZUZ4MDVKT25GemlRbXhqcGdDVTFuUG9ubEFkSUR1MklBSGhqTFVGWkQxYWZKTXBvRWhIenVRQjdpSkhEWWZPUUNYdGlzQXcKV1Y5N2hRSVZ0UzlickpXVUJWeVAycldxUEtWaDAyV290QU1GMW9lY2x5NmZTVnlDWTBReS9mS2xCWlZXaUsweloybTQyay9BSUVuU1dySFoKZFppS1NVT3Z6bG9rNWp2dWsxR3ZlNU8yTExPdEJlWmVwQVV5bkFJTExXYklVUWlYSnRtNzNrVG90Vy9sVURadk4wYzdZQUZMT2Q1aWtKTWIKV2oxLzFXMm03SWw5Wm4zUHdyR2R6WVk5eTFHYmpUdGJQZ3JYcVRUcW1VMTVJRU9RenprS1FuaVNERjlVdFhKMmpzcjBFb3VjOWxuZXBjVTQKSXRtYkkwWmlxMVorQi9ScGlDOUJmU2pIdU0yMUNVMzc2SUlMWWZPNFN6SjVFdlNJMnVZOUYrd29WNFV5YUNXWkFlK1JMcnpudlB1WlJtVWkKVWxDcUJhbE9mQXE2cWh1RFRjVFZWUVpjQlA1U0lONDBvN0FsNWVqUFJ0dFp3dFZJYTRkQXdjU1FKQXErYW11ZU56bFU3NHU5RVA1UlFsSUsKblRycGlnd2ozQ2xhUFl2bHFVUnFBZzY1L2xBTVh0VlZpc3hoU0Fmc2JOa1pnSklqNDE3ZmgxZTF3WWxZREhIb2hGOG41anZBWXFrYTZINkEKSlRRaEJSOElUVS9oVSt6a1MrVisyeDIyTHZzdXNLS2k3ZzV4MGgvNXd4VXRHY3kyNWZtY1ppSU45dEFWQ1p3V2hqN2p2V3lmT1JDQ0dJU24KRS9KWWNMNVVPUTUwM2dzYnF3U3dyNTg2T3RFVk1qRTdIZS9OclBTaEVBckFIaFZJVWtINGtvb3FQcHlWdkVoSTVNYVJWMXBaVG9QY0dNUjIKbStGSmV4UHM4VnRib1Nyc2d1RThYYmkvSlV5K21WYkVwT0pqUzFQb1l3ZCtpd1d2TktneXJJZVFMQTRSRmNsYXMzd3JzcEJld3BtWDFPS1YKa0VEVU9lV2tTS1FxSWtMQWlKaHhTa1NDL0dEN2J0VXhDNHBhdWVabHpXcHhYc20zQ0luOUVNMndiU0tWWjI2cFpQWXhhV1M3VkRaU3N5bVAKTFc1UUVCT0NMTE5KL1dtY2pnSGhiQ2tDblNLV21iVE5FckRHSnNLK2ZQZHZRWHZXZ20wNWNUWlQrZXROY2lacEUrY2s5eERpa1ozbjJpMnkKZWp0RlcwZW1sdVpsRXZVcFcrNGJKWFVJcDJHUHBvMHVvTmN5TDZhNUJOWWNDZFhoWkxCVHNXVUtRUEJ1MGtkTlNITFJrbjRENWs0U2s4UVUKRzFFMzJuWDhpaHdQVCtweVhlbzRiQXNaRjYxa1d3SDdZRFFZSEM0QzR4UGFVWnc3R1dHb04xbnlQWlUvUWl4Yld5ZTBiR01xRUdCVmdJSnEKbjhnRUJLRWdHb1JXMjNMdGRhL25ZLy9rQk4yNTNEeHVRa2Q4SXE2Q3p3TlhMMlBCWUFJZzI1cWV0dHJ2Y3JhaUMzNjJYSzdtRU5WS0hja0YKQXpEUXRYdjJaM0M4dVFQVDdvdWZwK3dWREdlVW1IRTVJeitETWRQc1Rqd1BWd1ptVW9mODFXeE9BYzNRYUowaUUvY0VJTHlwbTZSY2xlU2MKSFlvU2xQRW01RWNKZ0JPOUt2UTVJREFCVENEK3lHbWJUV3NKOFlJKzRjWm1sT0NRT0lSVktHV0dYb3VKeTdDQkZCN0hMSk9idWxiM05vdFEKMk40cEZxSUl2bEUxZ1pNaWlKVGFLVnFqcEc2ODZIMkk4WGxOWnV6dERsZ1RrR3dNSHNscXhVcWVnSEMxaW0xdFVSRzdpR1BGQ3FMQTZ5aTAKN01lNzJXS0JEM1JWSnE3SXRoQ3ZYVzFiVGtYRWVacXdZdGl2ZTdXVFZ1L05nUGJGdm53NUo1RjlmTXhsTTNReVpSVzVpcExNb2lwUnZtSmUKRTM4YnVqTXc5ME5FZ0V5YVVKQ0N1VHBsZXliT2FpUFpEcWx5QU0zMzVWWTlhN0RXQ2tVVGUzV2tTdUNyNkhnQ0FJbkFFeFhTT2lUbnFSMnAKb2ZyMC8wTzJueE9FamVoSUZIMndoUkdVQ093aDZiUmxyWnhVRmFRcG5FMXZxNFNPV1pnZVBQNDJLWDQ2V0Z2T21kdVpBd1Y2b3A4ajRMK0UKZmg0SmJiblFRTUhLeUVHOWozTU9JTWNtVjdXdlp2SkRRcGE3LzVGb0E4NVhicUZiU1h5ZXlNSmdNa2pUUEthYjNXZG1hbFlsVmRGNmtGQ3UKL0VGdHhOQ0NhaTBoZ0pDSk9ON3Awem1ud3BJT3hKbmVWRktpM2ZMaUE0bHNpL01ubTdDMkoxWlJFOTc5ZXNrSVFWQ0RxRDZQNmVSYmxmYncKd0JiUDVFTlM5cmgxU1l3V1N5WlJLMXN4YkpnUkVRc2dtZFRsc3JrYWNnV0h4c05KVURMcmQ2UDhDSFZoUUdQem82M3VaOFNoaFdYQnNZS3UKbklzM1pQTHNqVTZGa1B0eXYxMjdXQjQ5MjNTeUhvcDVjNnRwMWVtZHdxVGh4LzZjWk5ONzlSR3hwSHoyUmdXUTN1U2VRWVlWL21wdSsyZkMKZHBRMWFnODA0VGg5c1FlWDJnR0JBZWwyWWZnd2k1WmJhYXNhcU5vb0ZGWklSd240V2pyRDh1Zm91NDBhd2Y4a01qUUoxNWVlTkt6a3RLc0oKVWVtYU1qbVZwZlRDVlk5d0JTL2tETnN5NXhjVHBCVzFTYUorQjNISElIWEloYlEyZXFXdHNndnQ4VU1KUW13V283MTRwSTdOMjhHVjhqZUoKWGd3ZnZaV2Z3b2J2aGZ3WUZuR0NzaGlQR1pQWkhqdEJLUjB2blFEWjltN05sbUhXUzRtV2FvMkVreVZYWkU0NHl6UllSV0EyYmNhTGlhTkoKa1ZzMWRGOVM5S3MzS0x2N3pZSTBhNWphN1cyY1dSSmU2cW1jdzFMMkpIVHBUQlFKTHVHUUljb3pVYTVRM1R6ektKT1ZpdkZpdkRlcWlnUUUKbjlvdDkxVGQ5cENnRkZZQVVwUFRSUTNqSWlQd284OGVDb0lPUTBEdW8zUlJDYjRBaitjb01HMnkrUUp6R1J3YkI5RW5zR2hwRzBtQ3JTOW0Kbkl5bG5QY3d5YXBaNGJBZ2d2Wm9OVFNMTWhlSExMOFcyaDNZQ05JMkNFYTNJNFhWNnZRT0xEc2l1Y01mc3M2dGUrSHdjb2Z0OSsxRjBDM2cKVDRadVRmN1l6YktIZmhoSEhibnluWXl6dXg0c0huandVTEh2dmtOM2Y5VkY0bVY1amxpU2FlSDNHN3ZlWGgyaERsVnRvYlkyQlRmeXdFQUEKYjhlc1BOTXFRZmNtYlVRR2UxL1NEQmcwbVl0Z3V4TDB1VFpEQzgrbEJ6WDljLzJaUG8yRk1DeGE2TGVvdU1FeWJxckZuTDNZN3NnMmNSYXoKeWhSNzVMbUdBbXZTZHhsUitLL05FUGo1b3JOY1BldmZXU210RjhyaWZ0dVpKK1ArWU5nY05vdnY4T2JOVjN2Nm96L2hUMmw0L2ZYTFZQSHkKTkFRaHB6MHMxYlZXZkV0NWtBUUpSY1A1aDVka2JDdWVsWnNyOWZxWXErT3VBYzVNMUlhOVk2NjRvK3lxTnIwSDErcE5VRlNZb3pDVEl5cTIKdTRaRTVrOUVRa1Urd2g3SFpyc2ZreXVDMkNwWXpvMklKR0xsc3QxcjREbDRmeWNuWCtGakZSLzFPeXpsd2JubHZmQU5mL3QzOS8zMmwrNngKL3kxTnBVYmlwMDBPODA0V3B0SkEzOTZSTDh2NUpwTUdtdDAzMVJON2k3NTVGZnVHdzNJQ2tzRlVyR2ZxeEZuOEdyREJvekhMWlV6bU9zdTUKSnNYVTNaZjMzc0daWVh0bk5icWo4T3BUYmlQUEZYbndmcWxYWjZva0xPeVpLaGRta3FMWXEwY3NyZVJQcFBTSENnaDFpcG1wQUhvcTI2cnMKR0xwTXpEWUljVVpKQ3M4dzVCcEY4MnowdkQ5ME1SV3NrSnhFNlBKbld2TUlmclRDSmQzSi9GUWN1OWlmcC9BYWpWUTBKamlTaWdMdDNKbjMKL1VNUWRTcFVDWU1pbFg0d0lMa0M0NmxJY2o1WTh4dHRVYStwK0FUZWE0MFlkWEppMHBZdGMxbUtpcTBkRTk3eHF2ZFNPMXVQa00zV0hsbFQKSzJCR01iYkdyZE9wZlIwN2ZhWWxXRXlsVm55VHhBWVZYTVMwL25LRkI5dDU4blRFenF3V25JMzduVzFOQ2J2YWxLczdzelNWa3NpVWVzRjcKOENvTyt0NlNwcGhuWmtnelN3eHlua2ZKWnFqYldCSVkwRHNXaTRlYiticGI3TFVaMzFaWDJMWHJ0enRUMjJraFB0UitjellIQUxFemVoN0IKeWJYY0dDMm1NaXk3UjNrNEJOVjFyYUVwbW8wNWtxcTRiSEgyYlByc21YKzR5WlpPVnVnVmo2WHRMVExqWk52ZHJYMXI5dWg4Vm45c1ZpYjcKcUl0L2hzc3Bib1dwVkI3SWM3bHp4VlRVWlA4amxaMDlVV3ZPVStkL2dDSk9nODAyNndRYkJjay9taVIwcktXSkY5engyYWtRR0pRSDJ3cFoKbVQ1ZVNvNEVGNjVOelRIcHhlZTZRejF4aCtzUDJRNDBzd1FWWVZ0QXlWOWRucnFNMTAxMGgyWjJLa1crYldvTFc1N0tLTFhzU3JRMXE5aUgKb3o2bkp5OUwyRGxpUXg2Yjg3MW50Unl1VUtMS3RwVnVOVFBsQmNkek1sT3djMkVxWUp6VnRWTWh5R3duV3BwS3lJYWpxT29waCtyL2Z2MEQKdS9VZjF2LzkzU2RHQ3Y4MGJpVDd3bU9KeWoxZjNEV1ZXcGhLNHl6UllIUjFvcW9idVgxWUg1MWk2bkNhbVhKMmkyclZMTittTGlVTkxHczIKSWxXdDJnWDZjMm5LbjZGU0MzVmx3eUNUQ1k3SWFFMi9ORXBpVGtVYkN2ZnZQWkd0bUhMc2JoNUw5MUhwVERtdVUrRzN3a3VBK1VnMzdSdWoKRUt2ZWlVMGMyQXRNeENKeUMrNUErUDRTb0FxaE56S3RuZGdWVVdkTEwzQzZKZWExbDJ5MWc3VS9HTFdPR1NacThnZG9VWnZYQjJVVEJ3Mm8Kb21ha3lWc3pFN011YWQ0VGI5Qm1iTkRRVE9qT2ZiSzI0UHUrUFBWVVpIVit6SjFOSnduOXY2V3BvN21ZTW1kVVR5N2FROThoeVIxd3gzUzYKZHkzRE55VzEyeDJGeWlmaEI0Z25wL1dteXRYTFZJeEtqaG5ESFhpRjhUVkl0OVJRdHVFaXo2TFZOajJtN0pEdFU2dTR5Q3JOTW9RU2V6VXUKdW4xcTNYcTFaejlOcHBMTjBrNGJobzQrYTd5bHhFUVdrb0FyV2VSYWVGblJqeFI3V0ltanhGZTRGbTd1cFVIM0k1NFVwbG5ZVk5yQllDWFgKYVh0dFN5MGd3cElWeFM1UVhoSkFvV0RRVnFrcUNlOWU1SmJ4Rk82bW1QSWxpOFVwL0ZLbTFNQVZrSUdlbWxZZGl1Z0J3QU5TSWV0TXU5Mm0KVWF0VlJvdHRhbWZQU3ZkOS91eW9pNmtKTTJXWEF4cmxRdEZvSVhYN1dZb1NjekRTd0ZKN0dsWThoMzBmWVErbUhQa2ZvbDVjY3N0VjNUSDYKRFNvcW5MaU1tdko3eVpQTlJQRjJieDNMZERROFd1aDYzZ2dQU0dMQzErMjI2UWZNNDZUWUlHMHY2bm1reDROOGNnZWJLSjRnanUyVW81Y0MKeEFyYVpUcWZoVlJBTWo2dGF6TjV0QzlGWWJnWFRJVnpwNW81bXAxQzRnbTJRcm90ZUxadGhJMXpNRlM5c2Fxb3NaR0NPUG5xYTZwSS9hbGYKZG1kcWdwN25TWDN0ekhFUEc3aHN2cnY5V2QxQjcvazJMenN6bGRMTXloSVdLdURCakIxVEx5MlBGbnVaaDJCUzNqb0o1aE1Gb3RTdzUySjgKU1NOUXRHY2xxMGdGdmFXMkxoTUxrU0NNaE5xMldBSGZnSG5hQWwzS3JYcFV4cnJkUHBQaGpScFhwZ3h1c2RBY1k2VkpqOTEvMzcxMitueTEKb2tRSjg1QUpwdFpnUit0RzdYWmFWcWsvcHhJbVRUTWVycWxDU3JMa2twWWFrQU8yQUJtN1c1MTh3ODdPMXFOUHFlaVFuTThNdlFOVGRubDQKV2FsdVFWYTVUOVdFUXAyY2tXVHY0cXA3VjF0eFB0WnRGYUhkL1ZQK2tVNVJIR1lZTlM2bFZPcHRhaWF2WnVvNjlza3BwM1Y3dmFZaTF5eDgKdFFhOWFOVWRRTXVBSEt0VEdqN2g0amlhYmxFLzRQMnBPZUd5YW9NMm40VjQzRmFWamZ1K1ZxbkM3akl6dGIzRmFhOWRnUDJTenBYWnFlVS8KQmRnamE3K0ZBcW13OVdoRHhTNlVWWXNkZW1FNW4yakZGRVNTNjJnOEJPalRWMVdybTdQb2x1ZmEydHEzWitabnBqZUtqVlJRaHRITFZIc1cKS2FxcGljM0VTOXFYYUVHa2dKMTdpdUVSdFhYRjdTcFRxUUttdUZ2czdsUlRWckxhamRZanN1MUgxRCt4UTI4UXlVTzh0RHpsUWs5RjFIWjYKOWJGMkw0ZzhnMmZnWEdDTVoyUGd0aGlSYUF1QzI5MlRpQnp2bVdWajdaT3kxUVBEeVZxTnlaTHpvd2NMSGdHR2phcklyc3ZzZXFqVTVGQUQKKzVIakpZck1XSnJaUGpNVkkxYzFyMVFlSjhFN3VTdG03YlExMDRiY2ZVWWloZUpJaDZOZVhFRUd2MWNtOGIybnZTYUtzSFdtOEJaWjVkb0MKaHkzM3JJalllK25EdlozK29GT28wRnVVWGo1d1lNN3NYMnNYSFhtMHBTMEZIR0hZZW9qeVRXM3lsQ09Xb3hVRlprMytac2tnUXlBMHJGK3kKYXJGSnhDMlV1N3gwdDZ6REtrdHk1V3A2ZHJSN3lydDJCYVpXS2JBb1V4MEdvb0dUTE14ZzRBVm8ydDZYM3lZdklQUHgrR1BxYk1UbWtWbDUKclJmRmZhSXRWRzZXUWl1VExmdU1TVHZQcXRKWFN3VWVBNSthVmFoSjV4VWpXSzV2YXJQQVQrWW0rWCt0R21nV1ZJUmxISjJ1V25xREloTk0KYzJpeXI1VW9tdXJMck1oUGRFVmpBdmVSK1RrYnJQSzZxdExaS2tCZkZVbWZmTktpMmRNVFlVdG1pYWVwUFdSTHZuSlVBdDIyN2ZOM2I4dWIKWjhlVzllNFVMREFTdEc2ZmVkYkNGOFZVOEh3MWRnRWw1S2J3K1hPdFJoWWdmMVArKzlJVWh0eFcyRlp6ZUxBQmJiem1zRTMzUEpidzRZL0IKL1plYXhvZlh3RjF1LzByV2ZhYXpVRy9wTDdMVHlVY256L3NHVlFpQ2daKy9kNDA4OG5lZEkzODlaNlhidTM4aEx2ci8rRDBvQUxUWC9PaVoKRHk5U1kwQXFDTmtuN2YzblhIdUJlZ1A4NjdyWThjN3l6dS93aXJVQWZQQ3I1S2RueWd2MlYzdE5xQkdjbU5JQ3lEandIMzJYcWlQUWM4QTEKTDFMdlFCeHphQ09jU05kNG56ejBKMUt2VUUyQ3ZmRSsrZkIvU25iN1JUTEpuL05ldVVHVmdhdFQzSDJvQmx3bUcvMTlha3E4UFBWOFlPby8KbTNRWlRsQUw0dTJQSHNYZFdwVURmTktaL1JlY0dYK2QvSHEwNTMzZU5kMEJvNVQxeEdYK3ZFVHV1Mzh2dmZmZWh6L21wOStscXNFRlo2TTkKZnV2c3JUYy9maXI5OW5Rd2hNaml1a0ltbC9PcFduYWJXSE9KeC9ZV2VVZXZrVTBXakx2Z0diMWluN2xpZjcwOHhlSVNuK3JzcmNzWk8rbjEKL0pOc2pWM1RXVld2aUUzbHZDZHcvTjZ3N3ozbTc1MGtaMHBYdVhMck90aGQvZ3dud0FHelR6N3AzM3VMN0xFelUweTJhQXNZYk5HV1YyNmQKSi8vdExlZHNuY2dZWks5TS9YV1d6L3MwZUlQNDYrT1RMVmNyT0dCK3YvTmtqTDJqYTdJbno5cS8xNXpKOVRSWWNINC84ZEhPMlZXdTJYZkYKWVh2TU9XSm5RelhIKy9QSmpNLzJDbmlJN2Qzelo3QTduUVYvTGIxM1hYeEFGRVV6ZTFDQW11RmlLb1Nwa3lncXZmaUIzNW1PNm1ZbGhiR2QKZXZtVklNRmd1OE9HNXJsUzVGeSsxUmJNVy9xdDdtQ1ZtbFFNUHJxeXAyMkpGYkpFUzlNQjQ2bk1uRm0rMDF2NWRIS25hUU5oNnhYU2VsTWgKM1JtQ1NGWlJtSGFWVU50SVBjSFBCM1JSOGNPVXJNd1ROMDFFZHJ4Vkh0MVEzcnRUWk5aZU9seWcweWxRNHN6MDRSZVhpdmg0RzBhZzh6d1YKMnFZdm12bHJPeGFuWE5VcDA3K3p2R002QzdjeWxkTnBuM2QxTURoY2Z5NkN1UEJ0OU5VM1pUdnYyYldZMXhDeEMwUWRjNy9VL0hTeUE4ZHMKNWgxTm9iNW1adkxrc1oyZFM5T2prcVhmY09YT0ZMYWcwL0kyK0c1YlM1Qi9laEkxNXBVOHRoU1c3Q3hQUlEybnJhOGxjM1QxK2FPRFliZVoKaTJ4dG9YU3RGL0NPRytVVkgreTFoV2xyelZwMXRPcjEycklGUmE3aXZuMDZtT0c5NHNXd1o3S3E3V0hTZVBSWDFvMkF2MTR4MW8yOXhGcVoKY25qMlRLZXFsb3JwVkh3a0E5eDYrVEpyM2lkSjN1a1E1eGM5ODJxejhTSHI3a2tyTktkbXRHa0w4SUU4RFJaQklFN2t0cFozcDVoYUt5M2MKVERNZVRtMXJVejQ0eE9vZEhDdjJiNHlIcXh0WjRXSjhlTnJ2SmI0cld6d0NzbXdRYW1aRzNMZDN6T2FXbHNZNkhyZEpPRlpkMnFkWmJHZTQKM0FQTUNoQ21sNWFtOE1zWjFHTTg3TTB5eHR5NnBNM252SjlJeThrY25tSlg5cE5YbXdXczJqUUY3NXY1UFpra0lEN2ZlaTRLaEJWVFNSWEcKamRyK0MzYVZlejR0b0xjQVluSjZOMXMrbW1wYWM2cFFDdlViRUMvSHBmZG1OYnd6b3orODJkRCs5WkxJWnBpR3BxVDducm1RZXhaTndydTUKUnJGd2FLbnNDNklwVTNtMktBOCtidDJCSWxSeUdYTEt3NUJGN3R2WmlPWUlLc1poZXIxeUsyMlU1RVMyMGRkVXUxTHZxdWlNSTJaWEpsa2QKZVkwZ2xyTnVSTFR6dXFyVGEydGdxMXBxUUZySEFqR1UwN3pUZTZjM1JvbkFKNzh3QzVPRks1dkZtYjdXVjZsRmUwSU0zdkwwRnBTREhCa0sKSFd3OU5CeHNsZXVPdGtrMW1IbmxyRmhBRVlTZFJNaVFySnk1OHV0OVFFS3JQdUkvQnhFdnRXZHM4ODY2MFFIbXBkS290RnNWdDhLTUdIdkUKNXF6ODJDT2hPam1OWjVGbjJjYjdwempVMXU1cGRJL2l1UWxPbDVOZGZMRm5XZkNwVFhUN2pEbjRlU21yTkZlMXlUQW40bmhKckRMTlVMY2sKOXRSTmtZT000NGdScDNPeG1JYmhZR2xrTlhla2ZGak1TaE54UjZveXFHS0c3WkdxNG9jNStBdWJXK0tqWWtWVDd1TXNaVG9rMEpSVWdKNE4KUlk3em1kN1V4ZEQvK1k0cncwQ3U1RXpJQ2lWdEUybWtYQTBaa05CMXdZY3Z1bUxWNlJkY3hzUVZmbjRVR2lrZlVBemtuTXZtK0x0WFhJWEoKVlYveVZpVlZtUitFc0ZJU0ZRbXRMZHczUHU4YVN0YlVwL2lWODZGQzgwRUl5MXpMdEdXc3pZOUNZd1JmK1RHdi9CUEtucHpPVktkZURLbWMKNS8zS2ZxbVhRak5IU2l3dlpKZjlHWlZobmdrMWxUUFJqS1FQSXdXazErTGRONlpFaDF6NUpKUi9rbEJZR2hUdnlkTXU2K1NTWENmNDFoc2gKK2ZKbWZQMWthTHk4bG1uZ2hDUVVidlRuMFNyZFZ4b3Y3MFRqWHd5WnNxZEMxK2cwMzVMczFVbmU4VWxlV1lwaDN3bEJwN01ob3ZVS2YvOUoKNkJIbDhpOVNLL3BaS01BOHk1N1JsVitJKzU3aVBIeVc3YnlCZjErbG5KZXJERjExQ1IzOGZqcjY4TGxRcHRJVG5ZdjU4ME0wQnBlU0d0aHIKdk5UVkdNVFhmR0w3STF5TDU0MmU5TW4yTEwrU2xLOWVEN0dqRDBKRzZYSjAzZWw0M3Rjb0pmUlNmUGRNWE9kS2pKSG1SdEtSZXkwbTdlbVEKSkhveFZJRE9aaXBuNzhSazFpMk94d3BLOGxOSlJlZDByS1lUc1JzOGtZM0NqVkFFa3I3UXl5NDloQTgvSHlQK1pxZ1NuWW0xOEtoZnl0ZlIKZCtLQ0w3R2YwMzV5c3QwaXZEUFZwQi9GYkE5ZEw3K3l0SDB1eG9kanhucFBKdEd3NkRwODdIbi9DdDZTWkZOb2VlSFBOK05HTDhiV0JCV3AKWWRQOFRsNWpZK2RvT3N2RGwzTXRkL2Z1WUxBaEF6bHRjTThzZlE2R1VVenh5bnIxOHVlODRwRnpSdWR0TCtlbDVsZnRFRHJjWnJhSzZmTmsKNStkTTJwbTRmdktyeTJtWGZjZmk1M0pEUUM5M3pkeVJnYktuK0p5dDJ1S1RhQTd0Q1QxMkQ4VVdkd3FYRExwMkh5aWpxT3NZVnZVU0k3R28Ka1FhSmdHcXZFSGl0dC9BNXoyOEdjSXk4M2xpU2RZbmFzOTB1NFhQMzBmZW9oZ2svTEVKczBYeHVBQlkrRnl0d0RXU3pUSnVKWFdHek0yMUMKN2g1Uk9IeHY1eHZJM0IvdUxGT1RwbWlSbHhuYUczQzh4Wm5QUlF6bWl1bHNma2tUVzlZYStKS2ZjOWFYMHYwOXc3ajR1UTRRVHFFMVZZblYKeWVtWnhUVGlLWE4reE12TTZuREJDZ3BYTTN6TjVPTlMvNkd6M1BtY1J6VlRGRk5wVlZ4NDkzL0tpQjJlYjdxcldpdk5EcHNWb1N0SnFCUjMKVGg1UlZYRFhxNGR3MExkR0cvYit0OUIvM3pvQytHcm1HbWEvQ3VqeU9UOGt3OEFDNTlIa3V1RDR3a0ZsblZKSm03emVzRGc0V2o1dUorNXgKcEVZeUlLY29JN2dtZTZFL2tLM1lXWmFyMG1JbGM0b2p4N3VZeG9OT3o2NWR1M3g5N0RUenNFVEJENUUwUVhsUmZDanpveWs2UXVjL3E2MkgKV3F5cm1NR3Jjc003MHc3L3pudElvR1dHdVd3Ry9iblBMWWR0eloyVFErVTZNdjZ6elk0LzJ2VmZQMmZhTHMxLzdvVjJKaWhBZGdlYjlmL1YKZFhXL1RaNVgvTHFXK0IvZXVxcVNhSEVNbzVwVzRyZ0tnYTVNYlVGZFVEdnRZbkpzSnhpY09QUHJrRVRWcElVQXBlMG9yVlJHaGFhV3JyU2sKR2RBVW11RlFRcVR0SHBFN0x1Rm0wdjZMUGVmcmVjN3pnWkJDWXIrZnorYzV2L003dnpNd3dIN0RnSXFQWVFNeUtHUkJRTWZ2WTE3N1BQb2UKV1ZhaFh3SWZwTWR3aGgyL1U4SDZZalhHcWFqMTBLUExqMzQyLys0OTJuNjA5ZWorbzV1NzUwQU5HREZ6aW9QY1I2UjdCeEh3UGlMd2QxRHIKR0JGMjgvL25HS2tBSkIvMWZ2MTRCMnYrM3FOdjhld3ZVQ0VZOUlTM01TYndKVVlSTnZGYmlsaVFvakpxUHVQLy92RWFnV2M5WmRiQTdlK2UKeHpnR1JBYzJPVHF4eVZHQmgvZ0VsM2JQc1E0dnFVWkRER1lIOVlaWFNjM1dQRCsvMys0bi9IN2JHQzlCcFd4enhxYmZIbmowTmo0cnRjOW0KRUIyUnFJQ3ZpY2U2WkFyWFBnOUlOK1BLQ3ZHSG54YS8vbEZGRWxaQnFlM0pHcDkvOThrV2FPYlI5WjdjQXBVeXZJUFRKcU96UHJKYWZSZFEKNzAyK3gvdWozdDY2eEJFOG5iTnZ6Uk9jcFUrQ1ozU2FkM3kvYm1lcTA5UEZXbXdzbjJLNVJVeTk5QVRMS3VFZWhXc2NrdHg0cFFzblZjVUsKUXdGYnBtTTJWOVQ2VVhNL3AzVllBWXJoUktyb1NpR1kvRTJJQVpKZTZGY2l3U05YWjQ2Uk5VWnl4UnN0QnN1YjQ4NVpodjRpaEVTYmJzSEgKcXZPZE9aekNPSm1sdW1kMkdFcEtkczJLT09JcE4rd3BlRWdMNUNwWC9NZ283RHFDT1hNVGVtWUxVT0x0S2R3eFJTbVBZLy9YSUJJdFBkSXYKd3VyMXRaTE1FWVhRK3VDMTFORUJPWGRCckpteDRqZ1V6UnZPM21pMlQyTys2ekQyaTQ2Q09BaURUM1pKN09qNW04MkdPZi9tQjBBajFZcG4Kb1VIVnA0Q2JER1hRQU4yME9VQlJvR0tnd216b3NlSkNiN3IwNjJLMTRGaWFscEI0dWxscksxZ1NZQ3pxelN4dklqb2U3blpaYUE0aDBVZHcKUGVTWTZIUXFlSFJnY0V4VHlTWGFCdnpNR3lRa3FLUnh4TnFFZXQrc2RhZGJTOFZxMExWN0NwQnEweXcxb0M0N0NXTVFGZ3h2QmhzcU1CbW4KTThKUko0ekZaVGF0V2c1VjVadlpxVllibURWZGtCSU1URWZpR3RWN2RzUllQU1FCNFk2ZDZDQ0VsWTF6eFZ5cDRHRmZuMk1DYmZzdUI1dHoKSjJ0UXVRVFUzVTZaQnpIZk5rdGdZa0dyemRSbW03eCt1RXdlYy9DN1ZBQ0tLMmhKRGFWTWpJTmozUTZTc0g1ai9waWJnb3hoTFlSRFZCK1cKbmtCMUpHUzhLQ2t3b2tVaE8wVlhVMlZsTjRtTmlNdmg4SEhCMUlTQ0tlUVFaOTNicFE4eHhid3NxV20yUGJpc0ZOaFlpRDdtZmlvVU1JUEkKUW5Vd0prcElMRUJhSHFSS3RPcTVwL3lGbUNtVHZhbDRVMjJtdy9ONGowemtQYUZaVUFEK1dLWUxQWnN4TTV6cEZjR1RoWUs3dk5VeXJoQWsKOG1idllpUXp0MGFKcklXT2hzYmpRQmt6dExSNSttSFlIaDJpdzBHUkpBVFBvYXdUZFNJTFZZb3doYUl5K1M3RWlESHQ2a2dWazJKSXJielQKdGxreGNLQ1gvQzJBNWxGakVWdXhFODV5ZGJYUFcxQi9VZmdvQ0FGenJvMjlxQzZCamZuUXM4akphL1ZzV29FdXhFdE1xNjRaSmx4aGswaUwKTm1tbERCVWNvZTVhMHc5S2pZZUx0SGNDN0lwMUtJb0V2R2NaMnIzRlRzbll2RjFibVBIUUFwZkRBNllXVkNWc3lBZHd1VzZyMC9BVEdUSnEKSU4reFluMDhqdHUxbHoxUlFwNzdUbmtTdGwwc1ROaFY2NGVuWHdlbjBPZ2h2QnliMnRQY2hMaUZkVXhxVXprSUp4aWZMRnlFTGNoOVFQRHcKVWVXVmtxTTBlcksyWk9iN1ZNNTRRbm5maUF0UlNiWVJkWWJDdWNzOHJiWDVneVlJclBJbEZDSVpLNXIxL0hTdGJ0d3ZaQkhEOXRjY0xMNjgKZjBLbCtRMUV6MXc5cXVxK1lSSE5ZZVVKa3EzMHk0b2pUOHBlcWtRM2pGTmM2eDB3RzVyWnQ0Q1BKcE13bXZ1RnlDREw0d2JTMWhOcDUyVFIKeUhQc1RLbndXTXhDUTYwWWVaUksxNHh2RDQvMVNybmRNZXN5WjA4MjFBQ2xBZWt5QWNVcVFEVzc5cklTNDVBNmlTNFBhelF5QW5XZ25QaHUKbnJnaEhnODVGTFhHTW9vc1VEYWFId3FDZmRqYUY5WlV6YnlBQ3ZtNktEbEdKVlRSWTYrOGVPam94T1R2angzT3BDdTBhQS85TEZaRFRNcnIKWUVSVmZMNGYzR3dzTWpTQVR5ZGltd3R0eUNvTkZoZXpWdmhaVDlDdmI5UzY1bmtiR3RGeFJoVm5UWk9wRFBtMUFnWWNYWUxTWG5yYlpxdjgKVkhNWnVRSm14dkJicUpHbVBBWE96NXhHcFltMnlpSFdJNXpNOHl3eTIvMmNEUGlvRW0wMEk5SHU3ZWRTNElyZWhuSFNWc0YxWUs3aXFMZXEKSDJBVCtwbU5vaHpsOGs1a1UwUDZBTzVzbmlJVlByUE4yYkhtaGM1d293UTZiNHFDd1ZqMzJhSndwTTh3aG42dlpTSEdOQms5YytUWDlCeS8KR0lDb1pyZlRaUkVmc3hHM0YzSVVrUENTTHhGOTBkWFp5TnN6UTQxU2hLMzJ6Y1NSY1lhYlhqZGpaYXJUT1dXNUFVNHBZNDVHVHMzR2JpWHYKMmkzS21QYmFuRlhaKzNDZDhWNGI4TE02Vll5bDRMZDVFNEdQaHFVdnVMWnd6M0hWYVJYSW1mRi90TmRUVlNPcjBSSTVQcGNGb1hZbGRwS0oKM0NjNE1BdGRaeEpNZE9ab1NCc3pnWnhoR0MwenhzcFp5RGtWTHo4R1pGL1E3Wmh4QVhITnFtYnpCRlY4Rk1HQVNBS3pManRIUjBJemRBaHEKalpNMTVOVFlNWWE0bHdjSUd5TS9ad0dpVEZSUGxTWXNLZDJZNitKQ2F3UHpKMGlZVkJUS01aK1JtUklXYmowRXlDUGFVSktMYldXQk04cFEKRlZram5ha2tXYVJPa1ppTVNLMmJBSGhrcDZ0Uk5iZ09YNTBTc09vb0cwSUQyQXlQTGtyOGdzQ2gwTTQ4cDhCT0s0czJnblVEemRraHpvOFoKWDVZR2swVnVzcy92MWlzQVR2NUYwMnA1b0lWZzVpbnpuUlJENVdBSFZsNFFoR0gxdkR6SUlUTXVuYUlFOHNnTWN1SEJNS2NjU3VqZlRnK1MKUDNLcHRpa1NUS0RQbzNUZjBVL3dzMzl4RlkzOFRIdHZVQkJZR3BrL01SOXc3Y3pvaXhiYWdsUEhGT21qR29oemRYQ0pZRi9YUjJtaHJLUFAKTVllelJBaksyZkdUT3NNQjMxM29kVVc2ZVhGbzFNbjR0RWhmdHVsUjdiQ0pjVlBOdEVRY3Aya2hKRVBhYW50SHN5QVk1ZXVUNERqRUhSWjkKdmZKU0NSQmhkUlB1eHl4eTUvVzNoS0xaOElQOWhkWk1mSjc1Rm1xNlBQNXM5NlBIUHdOM0dldUZVWjJ5OEpQclZBVU1tZVRuQWQvbHltNzMKZ3lwc1V0V09NVTcvazkxTGpLcmU1UXB2Z0tzQ3JydURmek15L1BoSFBIT0hXT1hJcDM2QXZ4SEt1Mkh1UjJqc1BXU1ZNOGFNREcvbWRmUGQKQ1ZIK0dldjZVVjB6dWp2d3Z1L3pXd1RQQTVneUlyamJqQmovZGZjVFpKNmZROTU4bjdGZXFHejNJNlBKMjhqKzNzWWFiWnQ0ZjNwVE9JWjQKK1BMSmZYb0xydElHZC84VWo3K1BOZVcyb2NvZnhsc3ZDbUZnUXdLeUZ6Q2l1b0t4NlRzWTdhWDRzaVV3cUxwalhNTHBuSnp5bllScnR5UzgKZmxHaTFSVFMvVnJWdXZwT01RRW8zcTByY0FrN0FqNlhzeUR1ZkJWLy80cFpIRnhMaUJnWFYxWHc5NHdLdTYvaE02eW82ajhQMVh0WnRveDkKaTc1YzV6TTg1WTdVUGxzVGNzaUc4QXIrZ3RmZjRMZzVjd21JVjBObGNXNEpSZVNCdk9ZRlBFV2ZSUzJqMnBuYmNGMU9VVlY0SE1mZ29zVFQKTmJsaVJ6RTMxcVdSUDVTTzJGTDhITldHamtCaXVRU2FDdkpRdWw3WUNJNk44M2RISWZCcTNxMG9Gb3F0TnZVQjhqR294WGFrZCs0SktVS1IKaXp5bXgwV3BnYldPdit3Z3crUWgxMjl5VDN0R3F1a1JlK1NxVDAyNUl3ZmZ3QlBQdURkMTkxcVhIcm1NWjkxbWdnb1g0Nk1CZGtQYTVMWlUKNEtLbXV5NWx0cVNtRzkvOXRqZDY0Wmp6eUo5Wng4OHZDWTNoWXlFRlVaRTdlcDYvcWZZL0w0LzNnWXhuMjg0M21aZmlhRVVQWlBTdXlmUloKa3hKVWRvd0o2OFo5UXQyMHB0cDUwMTJIeUNFOEw5Wmt4dG5DVzJ2NGhEK29ZbkJZTVJEK3ZHMnZFOGVSdk53VWw1R3lhbzVhdzJ5T2RadlYKSU5XTTRKZ3Q4LzhQWG5VZTk0blVhUXJqUTk5em5zZ0ZqRkQ5aEZFcXVqTGt0S3hoeFNKK0hxbHhwRDY1aTlHdXN6WXlkUk9mYXdXeU9iaU8KejQzd1huanNwdnltSEVxQllCYjNqM1M2TStWOXI3NzZhbmtKUlh6QVJ3aEJJWFI3NGR2UnpJWUNJaFJHVkp0VWZZNGlxTGVJNnZkWXNUTTkKWGRTU2RpempOd3JsTmlCVUw2Ui9ZN0ZFZ0ZMMlVwQWZBbWFnRGxseERNZGFXUzlaWTZFWWV5UzZvQWQvVktoRThaaHkrZkRieFV6ZmNCRkUKU3hyTjQrOGNtWUFVMHptMGx2aUdKNDNWVFpjNEVBYWVRZnNnaktua2RZdnFaQmFQMDNKV2ZOc3N0dTVpZjl3enlQakdjZGRtWUlVR2lKWUUKS3JEZENZZ3FKL28yQnA2d0piQ1RLU2owV3JXd0dJVkJYZ3RDYjRpdFlLemZ1MVlXZWF3SFlyeWxnR2loVjkyalY0a2hxU3lObFFSa2RnWE0KeU1uKytNYVg4a3BJa0txRGwzQ09lbUdaTDJIZ0lIc1A4TmZwMk5MUTRUTUJYTzFUbHVGa0piNGtRelNMWW9uN2JKNEpJbkptSXN4TVFUMXYKQmdXTUx6MERqSlpvSXJSbWhWU2xYSmp4ZXEzUm5DVmNncGdqdVVLU2hOV2p2VXArL0JFemFOaUpPTGg4cERIWWFneVJrdHhKSVdhRFN5eHUKaGtoN0RZMnk0b3pYdDdHSlh2RDZtVEN5YW93WUMxZTU2YkpjbUNhT2hTOVlBMFBYZE9EUXRSY0JwNS94eXRIeXFrRVFyQmhvaFdGb3V3TnAKejE3aEJ3akZnZmMvTjlNRFljVkRJeE1qOGJndmtRNkRhRUVBc0RHc1M1T0p1b2Z6Q2hzcTNUcElHMUlCTTRFNk9VTU00bitDUDJZeEFEbmIKeXYzeWJKM3BTUUhXaHJNVDdCVG1NYm81WVpheDJhbFdUVjJzdVdRR0pJdWljSExLUWs3VkNWUzdNUkRvUlg4QnJ2RkJ1OXIwTkJSZDZLa1gKUXU0NXR6RlBLd2ZlS1lXNENBSVhZQVdPT3dLWG1HdG9xaVBQTkJlRnM5NjJMaG5Bay91b3hDNFhtMVBtblp1b0xGS0RZR08zNTVJV2FiY0QKRE1nRzNZQm5KTGlpamJhS0NJSlZ1WGlka1YzMXlFeGwwaFdBV0JWZUQ1TzNqVC9zK2d1YjBFdHhxdUc2VTYvTjE2UWdpV2k3K01DdE4rUWcKTllXRzNQUkNGOGVwV3NkY2UxRVZBOGp2a0hJV2Jpa0ZDR3padE1FTUNNQ1JzRm5jUVJVL05QUmU2Zmg0YWY3RWNrNXNCMXVrQm5pQVprdUYKSlV4R244V202dkJGSGRoMmcvSWFMamlLeXdBMlBQSkc2QjF6VnVXd09CZm5uRm1MQnFyeWFQaUhnRWdvZGRWRmpTbVlKaGpPd0g2c1EyM0IKTGdoRlFMdTh2UC93eS9zbmVJeVpQNHBEUTZNaElnVTdwQ2RTS0JpMkdWWi9EUEllUTM0dDBDeURSUnFwbDNHYzdiMFM2TWdlTWpOcGNBZ1cKN2NuV3JQa3RpeUdZb3JldHNHWGhMQ1JuOHdRSnVWaVZ6cjZETW8xUXFsWm1GNi9uY3R5QWFnTS9kWmI1eHBhT282SjRDWk9KRVhxOVB2WEUKUU5KM1ptbFczeFNCeW5xTGs2Z3hYSVB0ZXBtSDNvUk5qY1FlMFBYdVpPSHh5TGQ4STErN2c1TjZBcDV6ajJRclpycTFXZVMvV0FhRUxuQWsKNUNWN1BjZTI4QkpyNWJqRWpoMXZuMzhxVmhJR2pkcU9ySTNxeFMvNGFHcmxvS2QrVmEzQWkrb2hMSXB5ZWdTaVVSZGtZb2Q4YTJnWHNjOTAKSkxtWTJEY1QxbHVSK3JMbjlXV2VzUHoyRk9MbnE2WUdQaThHVXBBTzZvK05KallOcHhqbUNxYll5bFZTbmFRRnhReTRiSVBtWUJQbjN5TlkKQlpIUEN2ejBxa2x3WEl6ZXgxYy9WbFB2ZEtmVkdOdzdORnIwRk1kdHFuUHNxcm1ZZzF1NnF3bVQyK2NmMG05QmhqcVNTNGdEaFRWSFNmTU8KM2xjcFc4bGtxTVFnYzUyajJyQnp0RnZUMkx6RFhoMUVJYVBFUzFqbU5DamhPRElQR3EzNU5nbUxXZ1diM09uNnVQZkZnUkh3MzdKRUczRHcKT2hjYkIrT0xDZlBScTNhbFREZXZYQmRwZkVVZUhaVlN3MmkzL1UyWGJwS3FGR1lFOThMSWlyRnhUOUZJZEdPckljVWllUDJ5cERNcGlNUnQKYW12MXFPTTRydVc1UjBHQ05GSUpzRTlQQTQ4SVpKQ2JvSTZVazJVM0QvRk9xM1ExYUIxazUwT290cklSVWFlQzdleWpSQmRWczRRRGlSd2MKSWlVZ2NRaWVqY3FYK1hRSUhKRllGc2p4SzFWMUtyUlhGbHM1Y09rd21vN1RVTktUWVgwSmJ1NG5YdEs4cFBwaFRZd3B0aHIwZnZ4QzhJZU4KT3Rxb210b2dvRU02czJia0tzUExLNWZJUFRDZFdGK1FqOGxsb1pnZmhHTDZDek1MLzFuUHMwR0tyUzhNaVI3TzdwWEgyN3NyR08zWXdCaEMKOE5uamF4ZzFXRUdOSUlxTmJJV3hDMktZbTNQT1loVGdnY1JUelBVa0N1SmlDTnVrR1NUUkI5RFdpYzlscm56NDJUV0tvcGpyQW9lOWJ6bjYKRkEvWnRLbzg4ZlUrb2VlRkozWmFPK2IrcEE2MGdaK2hIbzdvbXlEbWR4TXJyNTluZk8wblJncFhGWGY4REgzMjVCWjg1dTlSeHlkZmg3VWsKSit2TExKUXFGOFpQM2VWeXJONnFJNk1KWlUzR3NnRWNhN0xZUjhzT1dGUUJra1hvVUxoNzQzNWRURzBHaWlQdWxpUnJqUlNVT1lMVExaeCsKbFpTUklsOTZGbzdMQ2hFbE1HTnhSVFlqWERnRERmSlcvWlMzeXcyS1phc00yejhyd1ZDeGRJclpNVFRkQjNMdFYyV1JRUWlORlJyYWFNMUgKMjNRUFUxSzhyWXYrQzlkMmRXVHc4eVhRL1lUcCtMNlp5aVZPMnlxa2JGd1NyYW42NGpXMGVRVndoQnhhME1jR0prV2g4bUtwOUFkZndHTzgKMVlVbnFSWVNMWkt5VEJlZjlxODk3ZDk1MnY4ZWZtNmRmZHEvOHJUL2oyZXIzejViL2ZUWjZyVm5xMWVlclg3emJQWHFzOVV2L252cm0vLzkKODNPYmNyNjFZdjRha3JqWWhnUXZLTXJ3TmVMMkgzSUlqQU05RXJYaGpNdUxFbTZ6V2FWQkJNZUdKMnhRd0dhaHJrc1NhSitqa0hDV0RmejEKVmU2d3pTeTJ5Yk5YVlBnbUNBaCtMRW5RT3hMRCtsSWU3NXprazI2b0lLUE5HcmJ4eWpWSitOV0JtNVVvTmZzeVo1aHlVRXpIczRJMDdldVMKekh1Ums5YTVUZFl3ZjNaSHZscVhBTmxsT1hKSFFuNWZxZE9wZmM3Z00rc1AxeVY3MTgrQzU2ZmRVRkhJNnlwQ1pQdWR6dnBHVHJ3dHJXcnUKL3JWWHVOUjZ3VEdiRVBnSHlveFFhV25Sc0lmLzJEc0pMUWdRVzFHM2tmd2JYTEJDL3pLMTZ4ZXI0UnBJMHlXQnl5L050dFd4YmpFTDVLVmsKOVZTYU5NcWJNYnRBd29aSzJjUGxhZ2hwa0ZjemtsNjVsY2ZwSnIxZVNOM3FHdk12WWZrTTNGRE9CbFdydTNMeFN1WHl1L3NueXVWRGs0ZXkKOTk2WWZPdk5iTi9JM3N4M3VnU1JDUndlbHNveWo4czZUZWk2UVk2RWFhaUN0M3ZLS1E3SitLMXA5Tjl4bzZmYU1UODRrL0wvc3FDeDJLUEYKdXd3RXZUa1FZMUJJSVBLdndQMmFKYmVzc1lGZkpDSlFsZVNXV1lCQXozRFdBK1ZPZVBWaERMMnByQytWanVibmtjczRTeTc5NlFuZ2IyZlcKUUVnaFJhYm51NjFhaWJyQXZIbDN3VGhLLzc1WG9iWVA1MEY3Yk84bzVhRXI4K2g5NWZqajBENlFnVEpTY3FDZWVPR0ZGSjVXNjBFRitmQkoKWWp3STNqajVGdWw5dFpsc2hyRnU4bmJOc1pTeG9xM3hSaWM3MkRWR2VudElhUzMyVWJlUnVEeDNrQk1FTnZLL0hIL0gwNTI4STltWW1IdDUKbDlRakZhY3BjUVh6S1Z6aEV1bERBc09IY2svOTFUTTdkdnpnbTBjbXN1SmNyelFaQ0JsQTk4V1l5Z1I4RDJnTTA4NTBmSlZXWXJNUXp1VzYKN2RQTHdhVDVrOWJPZmFXZWQwRmwyazYrdzRlVUV4YXltWTJqT2dOU2JTMElGZlhlTnBOc2hQSldEaUw5TmJsK3pOVk81dkdZTlZleTd1elEKQ1BMaGVmREdOaXllZ0dNNDNtdGkxQkcvVGlGZHhydFZ1NEkyNml2cDNTSkdyZkNoMUI2aUpmY1NuQUNjSmVtVk1rWkhzSkZySTBsbkpkbXMKczZsd0xMd21WNGdLUjRzZUp6aE1YaG5adXkrYjlIZC9HM0I4emowVExnWStaREVFVW5rSFM3dzhoajNIa20zWUd4ekkwdnZDYzlxcjJFZ2IKTVRrd2c5c0pPa1Q4L2pRM0ttbnpCT0xKeVM5d0xvM0VMUjNOWlo3NWdSbGhOOGZuZEdIaE9jMVpTYTNUOEY3UGFiWXFzak12cVJXS1Z5L2kKWUVydVBIdjlqdm5ZWnhhbHpVTUg5aVd1bFR2SWFMVFhFYTVaWDh4VmE2MWZGcmFYOVFDSUFLZzViaDhyVlJpeTdtOG80cEpsNU8wb2daOGQKdm1iQ25DZkg1VEpLVEJGdmEwTzRXbCtsL0l4MTN4TzZLQ0pQRDVINTFmZXRlK2FPL1I4RXl6WlJvTjhCQUE9PWA7bGV0IFdlO2Z1bmN0aW9uIFRyKCl7aWYoIVdlKXtXZT1uZXcgVWludDhBcnJheSgxMjI3ODQpO2NvbnN0IGU9YXRvYihQciksdD1uZXcgVWludDhBcnJheShlLmxlbmd0aCk7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdFtuXT1lLmNoYXJDb2RlQXQobik7cnQodCxXZSl9cmV0dXJuIFdlfWNvbnN0IHA9MCxqdD0xLGtyPTIscXI9MyxNcj00LEhyPTUsT3I9NixWcj03LEdyPTgsX3Q9OSxXPTEwLHE9MTEsaXQ9MTIsWnI9MTMsenI9MTQsS3I9MTUsSnI9MTYsWHI9MTcsanI9MTgsX3I9MjA7ZnVuY3Rpb24gZChlLHQsbil7dGhpcy5wcmVmaXg9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgpLHRoaXMudHJhbnNmb3JtPXQsdGhpcy5zdWZmaXg9bmV3IFVpbnQ4QXJyYXkobi5sZW5ndGgpO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXRoaXMucHJlZml4W3JdPWUuY2hhckNvZGVBdChyKTtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrKyl0aGlzLnN1ZmZpeFtyXT1uLmNoYXJDb2RlQXQocil9Y29uc3QgUGU9W25ldyBkKCIiLHAsIiIpLG5ldyBkKCIiLHAsIiAiKSxuZXcgZCgiICIscCwiICIpLG5ldyBkKCIiLGl0LCIiKSxuZXcgZCgiIixXLCIgIiksbmV3IGQoIiIscCwiIHRoZSAiKSxuZXcgZCgiICIscCwiIiksbmV3IGQoInMgIixwLCIgIiksbmV3IGQoIiIscCwiIG9mICIpLG5ldyBkKCIiLFcsIiIpLG5ldyBkKCIiLHAsIiBhbmQgIiksbmV3IGQoIiIsWnIsIiIpLG5ldyBkKCIiLGp0LCIiKSxuZXcgZCgiLCAiLHAsIiAiKSxuZXcgZCgiIixwLCIsICIpLG5ldyBkKCIgIixXLCIgIiksbmV3IGQoIiIscCwiIGluICIpLG5ldyBkKCIiLHAsIiB0byAiKSxuZXcgZCgiZSAiLHAsIiAiKSxuZXcgZCgiIixwLCciJyksbmV3IGQoIiIscCwiLiIpLG5ldyBkKCIiLHAsJyI+JyksbmV3IGQoIiIscCxgCmApLG5ldyBkKCIiLHFyLCIiKSxuZXcgZCgiIixwLCJdIiksbmV3IGQoIiIscCwiIGZvciAiKSxuZXcgZCgiIix6ciwiIiksbmV3IGQoIiIsa3IsIiIpLG5ldyBkKCIiLHAsIiBhICIpLG5ldyBkKCIiLHAsIiB0aGF0ICIpLG5ldyBkKCIgIixXLCIiKSxuZXcgZCgiIixwLCIuICIpLG5ldyBkKCIuIixwLCIiKSxuZXcgZCgiICIscCwiLCAiKSxuZXcgZCgiIixLciwiIiksbmV3IGQoIiIscCwiIHdpdGggIiksbmV3IGQoIiIscCwiJyIpLG5ldyBkKCIiLHAsIiBmcm9tICIpLG5ldyBkKCIiLHAsIiBieSAiKSxuZXcgZCgiIixKciwiIiksbmV3IGQoIiIsWHIsIiIpLG5ldyBkKCIgdGhlICIscCwiIiksbmV3IGQoIiIsTXIsIiIpLG5ldyBkKCIiLHAsIi4gVGhlICIpLG5ldyBkKCIiLHEsIiIpLG5ldyBkKCIiLHAsIiBvbiAiKSxuZXcgZCgiIixwLCIgYXMgIiksbmV3IGQoIiIscCwiIGlzICIpLG5ldyBkKCIiLFZyLCIiKSxuZXcgZCgiIixqdCwiaW5nICIpLG5ldyBkKCIiLHAsYAoJYCksbmV3IGQoIiIscCwiOiIpLG5ldyBkKCIgIixwLCIuICIpLG5ldyBkKCIiLHAsImVkICIpLG5ldyBkKCIiLF9yLCIiKSxuZXcgZCgiIixqciwiIiksbmV3IGQoIiIsT3IsIiIpLG5ldyBkKCIiLHAsIigiKSxuZXcgZCgiIixXLCIsICIpLG5ldyBkKCIiLEdyLCIiKSxuZXcgZCgiIixwLCIgYXQgIiksbmV3IGQoIiIscCwibHkgIiksbmV3IGQoIiB0aGUgIixwLCIgb2YgIiksbmV3IGQoIiIsSHIsIiIpLG5ldyBkKCIiLF90LCIiKSxuZXcgZCgiICIsVywiLCAiKSxuZXcgZCgiIixXLCciJyksbmV3IGQoIi4iLHAsIigiKSxuZXcgZCgiIixxLCIgIiksbmV3IGQoIiIsVywnIj4nKSxuZXcgZCgiIixwLCc9IicpLG5ldyBkKCIgIixwLCIuIiksbmV3IGQoIi5jb20vIixwLCIiKSxuZXcgZCgiIHRoZSAiLHAsIiBvZiB0aGUgIiksbmV3IGQoIiIsVywiJyIpLG5ldyBkKCIiLHAsIi4gVGhpcyAiKSxuZXcgZCgiIixwLCIsIiksbmV3IGQoIi4iLHAsIiAiKSxuZXcgZCgiIixXLCIoIiksbmV3IGQoIiIsVywiLiIpLG5ldyBkKCIiLHAsIiBub3QgIiksbmV3IGQoIiAiLHAsJz0iJyksbmV3IGQoIiIscCwiZXIgIiksbmV3IGQoIiAiLHEsIiAiKSxuZXcgZCgiIixwLCJhbCAiKSxuZXcgZCgiICIscSwiIiksbmV3IGQoIiIscCwiPSciKSxuZXcgZCgiIixxLCciJyksbmV3IGQoIiIsVywiLiAiKSxuZXcgZCgiICIscCwiKCIpLG5ldyBkKCIiLHAsImZ1bCAiKSxuZXcgZCgiICIsVywiLiAiKSxuZXcgZCgiIixwLCJpdmUgIiksbmV3IGQoIiIscCwibGVzcyAiKSxuZXcgZCgiIixxLCInIiksbmV3IGQoIiIscCwiZXN0ICIpLG5ldyBkKCIgIixXLCIuIiksbmV3IGQoIiIscSwnIj4nKSxuZXcgZCgiICIscCwiPSciKSxuZXcgZCgiIixXLCIsIiksbmV3IGQoIiIscCwiaXplICIpLG5ldyBkKCIiLHEsIi4iKSxuZXcgZCgiw4LCoCIscCwiIiksbmV3IGQoIiAiLHAsIiwiKSxuZXcgZCgiIixXLCc9IicpLG5ldyBkKCIiLHEsJz0iJyksbmV3IGQoIiIscCwib3VzICIpLG5ldyBkKCIiLHEsIiwgIiksbmV3IGQoIiIsVywiPSciKSxuZXcgZCgiICIsVywiLCIpLG5ldyBkKCIgIixxLCc9IicpLG5ldyBkKCIgIixxLCIsICIpLG5ldyBkKCIiLHEsIiwiKSxuZXcgZCgiIixxLCIoIiksbmV3IGQoIiIscSwiLiAiKSxuZXcgZCgiICIscSwiLiIpLG5ldyBkKCIiLHEsIj0nIiksbmV3IGQoIiAiLHEsIi4gIiksbmV3IGQoIiAiLFcsJz0iJyksbmV3IGQoIiAiLHEsIj0nIiksbmV3IGQoIiAiLFcsIj0nIildLCRyPVBlLmxlbmd0aDtmdW5jdGlvbiAkdChlLHQpe3JldHVybiBlW3RdPDE5Mj8oZVt0XT49OTcmJmVbdF08PTEyMiYmKGVbdF1ePTMyKSwxKTplW3RdPDIyND8oZVt0KzFdXj0zMiwyKTooZVt0KzJdXj01LDMpfWZ1bmN0aW9uIGVpKGUsdCxuLHIsaSl7Y29uc3Qgbz1UcigpLHtwcmVmaXg6Zn09UGVbaV0se3N1ZmZpeDpzfT1QZVtpXSxsPVBlW2ldLnRyYW5zZm9ybTtsZXQgQT1sPGl0PzA6bC0oaXQtMSk7Y29uc3QgYT10O0E+ciYmKEE9cik7bGV0IHU9MDtmb3IoO3U8Zi5sZW5ndGg7KWVbdCsrXT1mW3UrK107bis9QSxyLT1BLGw8PV90JiYoci09bCk7Zm9yKGxldCBFPTA7RTxyO0UrKyllW3QrK109b1tuK0VdO2xldCB3PXQtcjtpZihsPT09VykkdChlLHcpO2Vsc2UgaWYobD09PXEpZm9yKDtyPjA7KXtjb25zdCBFPSR0KGUsdyk7dys9RSxyLT1FfWxldCBoPTA7Zm9yKDtoPHMubGVuZ3RoOyllW3QrK109c1toKytdO3JldHVybiB0LWF9Y29uc3QgdGk9MjU2LG5pPTcwNCxyaT0yNixlbj02LHRuPTIsSj0xMDgwLG90PTE2LGlpPW5ldyBVaW50OEFycmF5KFszLDIsMSwwLDMsMywzLDMsMywzLDIsMiwyLDIsMiwyXSksb2k9bmV3IEludDhBcnJheShbMCwwLDAsMCwtMSwxLC0yLDIsLTMsMywtMSwxLC0yLDIsLTMsM10pLGZpPW5ldyBVaW50MTZBcnJheShbMjU2LDQwMiw0MzYsNDY4LDUwMCw1MzQsNTY2LDU5OCw2MzAsNjYyLDY5NCw3MjYsNzU4LDc5MCw4MjIsODU0LDg4Niw5MjAsOTUyLDk4NCwxMDE2LDEwNDgsMTA4MF0pLHNpPW5ldyBVaW50MzJBcnJheShbMCwwLDAsMCwwLDQwOTYsOTIxNiwyMTUwNCwzNTg0MCw0NDAzMiw1MzI0OCw2MzQ4OCw3NDc1Miw4NzA0MCw5MzY5NiwxMDA4NjQsMTA0NzA0LDEwNjc1MiwxMDg5MjgsMTEzNTM2LDExNTk2OCwxMTg1MjgsMTE5ODcyLDEyMTI4MCwxMjIwMTZdKSxBaT1uZXcgVWludDhBcnJheShbMCwwLDAsMCwxMCwxMCwxMSwxMSwxMCwxMCwxMCwxMCwxMCw5LDksOCw3LDcsOCw3LDcsNiw2LDUsNV0pLGxpPTQsbm49MjQ7ZnVuY3Rpb24gYWkoZSx0KXtjb25zdCBuPW5ldyBVaW50OEFycmF5KHQpLHI9bmV3IE90KGUpLGk9bmV3IFZ0KG4pO3JldHVybiBjaShyLGkpLG59ZnVuY3Rpb24gY2koZSx0KXtsZXQgbj0wLHI9MCxpPTAsbz0wO2NvbnN0IGY9WzE2LDE1LDExLDRdO2xldCBzPTAsbD0wLEE9MDtjb25zdCBhPVtuZXcgb2UoMCwwKSxuZXcgb2UoMCwwKSxuZXcgb2UoMCwwKV0sdT0xMjgrTy5SRUFEX1NJWkUsdz1uZXcgTyhlKTtpPXdpKHcpO2NvbnN0IGg9KDE8PGkpLTE2LEU9MTw8aSxnPUUtMSxjPW5ldyBVaW50OEFycmF5KEUrdStubiksST1FLHY9W10sQj1bXTtmb3IobGV0IFE9MDtRPDMqSjtRKyspdltRXT1uZXcgUigwLDApLEJbUV09bmV3IFIoMCwwKTtmb3IoOyFyOyl7bGV0IFE9MDtjb25zdCBiPVsxPDwyOCwxPDwyOCwxPDwyOF0sQz1bMF0sTD1bMSwxLDFdLFA9WzAsMSwwLDEsMCwxXSx4PVswXTtsZXQgUz0wO2ZvcihsZXQgbT0wO208MzttKyspYVttXS5jb2Rlcz1bXSxhW21dLmh0cmVlcz1uZXcgVWludDMyQXJyYXk7dy5yZWFkTW9yZUlucHV0KCk7Y29uc3QgWT1oaSh3KTtpZihRPVkubWV0YV9ibG9ja19sZW5ndGgsbitRPnQuYnVmZmVyLmxlbmd0aCl7Y29uc3QgbT1uZXcgVWludDhBcnJheShuK1EpO20uc2V0KHQuYnVmZmVyKSx0LmJ1ZmZlcj1tfWlmKHI9WS5pbnB1dF9lbmQsWS5pc19tZXRhZGF0YSl7Zm9yKEJpKHcpO1E+MDstLVEpdy5yZWFkTW9yZUlucHV0KCksdy5yZWFkQml0cyg4KTtjb250aW51ZX1pZihRPT09MCljb250aW51ZTtpZihZLmlzX3VuY29tcHJlc3NlZCl7dy5iaXRfcG9zXz13LmJpdF9wb3NfKzcmLTgsZGkodCxRLG4sYyxnLHcpLG4rPVE7Y29udGludWV9Zm9yKGxldCBtPTA7bTwzO20rKylMW21dPXJuKHcpKzEsTFttXT49MiYmKERlKExbbV0rMix2LG0qSix3KSxEZShyaSxCLG0qSix3KSxiW21dPVRlKEIsbSpKLHcpLHhbbV09MSk7dy5yZWFkTW9yZUlucHV0KCk7Y29uc3QgTj13LnJlYWRCaXRzKDIpLFQ9b3QrKHcucmVhZEJpdHMoNCk8PE4pLEY9KDE8PE4pLTEsVT1UKyg0ODw8TiksTT1uZXcgVWludDhBcnJheShMWzBdKTtmb3IobGV0IG09MDttPExbMF07bSsrKXcucmVhZE1vcmVJbnB1dCgpLE1bbV09dy5yZWFkQml0cygyKTw8MTtjb25zdCBmZT1vbihMWzBdPDxlbix3KSxsZT1mZS5udW1faHRyZWVzLHtjb250ZXh0X21hcDphZX09ZmUsY2U9b24oTFsyXTw8dG4sdyksa2U9Y2UubnVtX2h0cmVlcyx5ZT1jZS5jb250ZXh0X21hcDthWzBdPW5ldyBvZSh0aSxsZSksYVsxXT1uZXcgb2UobmksTFsxXSksYVsyXT1uZXcgb2UoVSxrZSk7Zm9yKGxldCBtPTA7bTwzOysrbSlhW21dLmRlY29kZSh3KTtsZXQgdmU9MCxwZT0wLFg9TVtDWzBdXSxDZT1ZZVtYXSxHPVllW1grMV0saj1hWzFdLmh0cmVlc1swXTtmb3IoO1E+MDspe2xldCBtO3cucmVhZE1vcmVJbnB1dCgpLGJbMV09PT0wJiYoZnQoTFsxXSx2LDEsQyxQLHgsdyksYlsxXT1UZShCLEosdyksaj1hWzFdLmh0cmVlc1tDWzFdXSksYlsxXS0tO2NvbnN0IF89QWUoYVsxXS5jb2RlcyxqLHcpO2xldCBaPV8+PjY7Wj49Mj8oWi09MixtPS0xKTptPTA7Y29uc3QgJD1VcltaXSsoXz4+MyY3KSxxZT1GcltaXSsoXyY3KSxsbj1NdFskXS5vZmZzZXQrdy5yZWFkQml0cyhNdFskXS5uYml0cyksej1IdFtxZV0ub2Zmc2V0K3cucmVhZEJpdHMoSHRbcWVdLm5iaXRzKTtsPWNbbi0xJmddLEE9Y1tuLTImZ107Zm9yKGxldCBLPTA7SzxsbjtLKyspe3cucmVhZE1vcmVJbnB1dCgpLGJbMF09PT0wJiYoZnQoTFswXSx2LDAsQyxQLHgsdyksYlswXT1UZShCLDAsdyksUz1DWzBdPDxlbix2ZT1TLFg9TVtDWzBdXSxDZT1ZZVtYXSxHPVllW1grMV0pO2NvbnN0IHdlPUR0W0NlK2xdfER0W0crQV0sdWU9YWVbdmUrd2VdO2JbMF0tLSxBPWwsbD1BZShhWzBdLmNvZGVzLGFbMF0uaHRyZWVzW3VlXSx3KSxjW24mZ109bCwobiZnKT09PWcmJnQud3JpdGUoYyxFKSxuKyt9aWYoUS09bG4sUTw9MClicmVhaztpZihtPDApe3cucmVhZE1vcmVJbnB1dCgpLGJbMl09PT0wJiYoZnQoTFsyXSx2LDIsQyxQLHgsdyksYlsyXT1UZShCLDIqSix3KSxwZT1DWzJdPDx0biksYlsyXS0tO2NvbnN0IEs9KHo+ND8zOnotMikmMjU1LHdlPXllW3BlK0tdO2lmKG09QWUoYVsyXS5jb2RlcyxhWzJdLmh0cmVlc1t3ZV0sdyksbT49VCl7bS09VDtjb25zdCB1ZT1tJkY7bT4+PU47Y29uc3QgSGU9KG0+PjEpKzEsQXQ9KDIrKG0mMSk8PEhlKS00O209VCsoQXQrdy5yZWFkQml0cyhIZSk8PE4pK3VlfX1jb25zdCBtZT11aShtLGYscyk7aWYobWU8MCl0aHJvdyBuZXcgRXJyb3IoIltCcm90bGlEZWNvbXByZXNzXSBpbnZhbGlkIGRpc3RhbmNlIik7bjxoJiZvIT09aD9vPW46bz1oO2xldCBNZT1uJmc7aWYobWU+bylpZih6Pj1saSYmejw9bm4pe2xldCBLPXNpW3pdO2NvbnN0IHdlPW1lLW8tMSx1ZT1BaVt6XSxIZT0oMTw8dWUpLTEsQXQ9d2UmSGUsYW49d2U+PnVlO2lmKEsrPUF0KnosYW48JHIpe2NvbnN0IGx0PWVpKGMsTWUsSyx6LGFuKTtpZihNZSs9bHQsbis9bHQsUS09bHQsTWU+PUkpe3Qud3JpdGUoYyxFKTtmb3IobGV0IE9lPTA7T2U8TWUtSTtPZSsrKWNbT2VdPWNbSStPZV19fWVsc2UgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGJhY2t3YXJkIHJlZmVyZW5jZSIpfWVsc2UgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGJhY2t3YXJkIHJlZmVyZW5jZSIpO2Vsc2V7aWYobT4wJiYoZltzJjNdPW1lLHMrKyksej5RKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBiYWNrd2FyZCByZWZlcmVuY2UiKTtmb3IobGV0IEs9MDtLPHo7SysrKWNbbiZnXT1jW24tbWUmZ10sKG4mZyk9PT1nJiZ0LndyaXRlKGMsRSksbisrLFEtLX1sPWNbbi0xJmddLEE9Y1tuLTImZ119biY9MTA3Mzc0MTgyM310LndyaXRlKGMsbiZnKX1mdW5jdGlvbiB3aShlKXtpZihlLnJlYWRCaXRzKDEpPT09MClyZXR1cm4gMTY7bGV0IHQ9ZS5yZWFkQml0cygzKTtyZXR1cm4gdD4wPzE3K3Q6KHQ9ZS5yZWFkQml0cygzKSx0PjA/OCt0OjE3KX1mdW5jdGlvbiBmdChlLHQsbixyLGksbyxmKXtjb25zdCBzPW4qMixsPW4sQT1BZSh0LG4qSixmKTtsZXQgYTtBPT09MD9hPWlbcysob1tsXSYxKV06QT09PTE/YT1pW3MrKG9bbF0tMSYxKV0rMTphPUEtMixhPj1lJiYoYS09ZSkscltuXT1hLGlbcysob1tsXSYxKV09YSwrK29bbF19ZnVuY3Rpb24gb2UoZSx0KXt0aGlzLmFscGhhYmV0X3NpemU9ZSx0aGlzLm51bV9odHJlZXM9dCx0aGlzLmNvZGVzPW5ldyBBcnJheSh0K3QqZmlbZSszMT4+PjVdKSx0aGlzLmh0cmVlcz1uZXcgVWludDMyQXJyYXkodCl9b2UucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihlKXtsZXQgdD0wO2ZvcihsZXQgbj0wO248dGhpcy5udW1faHRyZWVzO24rKyl0aGlzLmh0cmVlc1tuXT10LHQrPURlKHRoaXMuYWxwaGFiZXRfc2l6ZSx0aGlzLmNvZGVzLHQsZSl9O2Z1bmN0aW9uIFRlKGUsdCxuKXtjb25zdCByPUFlKGUsdCxuKSx7bmJpdHM6aX09cXRbcl07cmV0dXJuIHF0W3JdLm9mZnNldCtuLnJlYWRCaXRzKGkpfWZ1bmN0aW9uIHVpKGUsdCxuKXtyZXR1cm4gZTxvdD8obis9aWlbZV0sbiY9Myx0W25dK29pW2VdKTplLW90KzF9ZnVuY3Rpb24gZGkoZSx0LG4scixpLG8pe2NvbnN0IGY9aSsxO2xldCBzPW4maSxsPW8ucG9zXyZPLklCVUZfTUFTSztpZih0PDh8fG8uYml0X3Bvc18rKHQ8PDMpPG8uYml0X2VuZF9wb3NfKXtmb3IoO3QtLSA+MDspby5yZWFkTW9yZUlucHV0KCkscltzKytdPW8ucmVhZEJpdHMoOCkscz09PWYmJihlLndyaXRlKHIsZikscz0wKTtyZXR1cm59aWYoby5iaXRfZW5kX3Bvc188MzIpdGhyb3cgbmV3IEVycm9yKCJbQ29weVVuY29tcHJlc3NlZEJsb2NrVG9PdXRwdXRdIGJyLmJpdF9lbmRfcG9zXyA8IDMyIik7Zm9yKDtvLmJpdF9wb3NfPDMyOylyW3NdPW8udmFsXz4+Pm8uYml0X3Bvc18sby5iaXRfcG9zXys9OCxzKyssdC0tO2xldCBBPW8uYml0X2VuZF9wb3NfLW8uYml0X3Bvc18+PjM7aWYobCtBPk8uSUJVRl9NQVNLKXtjb25zdCBhPU8uSUJVRl9NQVNLKzEtbDtmb3IobGV0IHU9MDt1PGE7dSsrKXJbcyt1XT1vLmJ1Zl9bbCt1XTtBLT1hLHMrPWEsdC09YSxsPTB9Zm9yKGxldCBhPTA7YTxBO2ErKylyW3MrYV09by5idWZfW2wrYV07aWYocys9QSx0LT1BLHM+PWYpe2Uud3JpdGUocixmKSxzLT1mO2ZvcihsZXQgYT0wO2E8czthKyspclthXT1yW2YrYV19Zm9yKDtzK3Q+PWY7KXtpZihBPWYtcyxvLmlucHV0Xy5yZWFkKHIscyxBKTxBKXRocm93IG5ldyBFcnJvcigiW0NvcHlVbmNvbXByZXNzZWRCbG9ja1RvT3V0cHV0XSBub3QgZW5vdWdoIGJ5dGVzIik7ZS53cml0ZShyLGYpLHQtPUEscz0wfWlmKG8uaW5wdXRfLnJlYWQocixzLHQpPHQpdGhyb3cgbmV3IEVycm9yKCJbQ29weVVuY29tcHJlc3NlZEJsb2NrVG9PdXRwdXRdIG5vdCBlbm91Z2ggYnl0ZXMiKTtvLnJlc2V0KCl9ZnVuY3Rpb24gcm4oZSl7aWYoZS5yZWFkQml0cygxKSl7Y29uc3QgdD1lLnJlYWRCaXRzKDMpO3JldHVybiB0PT09MD8xOmUucmVhZEJpdHModCkrKDE8PHQpfXJldHVybiAwfWZ1bmN0aW9uIGdpKCl7dGhpcy5tZXRhX2Jsb2NrX2xlbmd0aD0wLHRoaXMuaW5wdXRfZW5kPTAsdGhpcy5pc191bmNvbXByZXNzZWQ9MCx0aGlzLmlzX21ldGFkYXRhPSExfWZ1bmN0aW9uIGhpKGUpe2NvbnN0IHQ9bmV3IGdpO2lmKHQuaW5wdXRfZW5kPWUucmVhZEJpdHMoMSksdC5pbnB1dF9lbmQmJmUucmVhZEJpdHMoMSkpcmV0dXJuIHQ7Y29uc3Qgbj1lLnJlYWRCaXRzKDIpKzQ7aWYobj09PTcpe2lmKHQuaXNfbWV0YWRhdGE9ITAsZS5yZWFkQml0cygxKSE9PTApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHJlc2VydmVkIGJpdCIpO2NvbnN0IHI9ZS5yZWFkQml0cygyKTtpZihyPT09MClyZXR1cm4gdDtmb3IobGV0IGk9MDtpPHI7aSsrKXtjb25zdCBvPWUucmVhZEJpdHMoOCk7aWYoaSsxPT09ciYmcj4xJiZvPT09MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2l6ZSBieXRlIik7dC5tZXRhX2Jsb2NrX2xlbmd0aHw9bzw8aSo4fX1lbHNlIGZvcihsZXQgcj0wO3I8bjtyKyspe2NvbnN0IGk9ZS5yZWFkQml0cyg0KTtpZihyKzE9PT1uJiZuPjQmJmk9PT0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzaXplIG5pYmJsZSIpO3QubWV0YV9ibG9ja19sZW5ndGh8PWk8PHIqNH1yZXR1cm4gdC5tZXRhX2Jsb2NrX2xlbmd0aCsrLCF0LmlucHV0X2VuZCYmIXQuaXNfbWV0YWRhdGEmJih0LmlzX3VuY29tcHJlc3NlZD1lLnJlYWRCaXRzKDEpKSx0fWZ1bmN0aW9uIG9uKGUsdCl7bGV0IG49MDt0LnJlYWRNb3JlSW5wdXQoKTtjb25zdCByPXJuKHQpKzEsaT1uZXcgVWludDhBcnJheShlKTtpZihyPD0xKXJldHVybntudW1faHRyZWVzOnIsY29udGV4dF9tYXA6aX07dC5yZWFkQml0cygxKSYmKG49dC5yZWFkQml0cyg0KSsxKTtjb25zdCBmPVtdO2ZvcihsZXQgcz0wO3M8SjtzKyspZltzXT1uZXcgUigwLDApO0RlKHIrbixmLDAsdCk7Zm9yKGxldCBzPTA7czxlOyl7dC5yZWFkTW9yZUlucHV0KCk7Y29uc3QgbD1BZShmLDAsdCk7aWYobD09PTApaVtzXT0wLHMrKztlbHNlIGlmKGw8PW4pe2xldCBBPTErKDE8PGwpK3QucmVhZEJpdHMobCk7Zm9yKDstLUE7KXtpZihzPj1lKXRocm93IG5ldyBFcnJvcigiW0RlY29kZUNvbnRleHRNYXBdIGkgPj0gY29udGV4dF9tYXBfc2l6ZSIpO2lbc109MCxzKyt9fWVsc2UgaVtzXT1sLW4scysrfXJldHVybiB0LnJlYWRCaXRzKDEpJiZFaShpLGUpLHtudW1faHRyZWVzOnIsY29udGV4dF9tYXA6aX19ZnVuY3Rpb24gSWkoZSx0KXtjb25zdCBuPWVbdF07Zm9yKGxldCByPXQ7cjtyLS0pZVtyXT1lW3ItMV07ZVswXT1ufWZ1bmN0aW9uIEVpKGUsdCl7Y29uc3Qgbj1uZXcgVWludDhBcnJheSgyNTYpO2ZvcihsZXQgcj0wO3I8MjU2O3IrKyluW3JdPXI7Zm9yKGxldCByPTA7cjx0O3IrKyl7Y29uc3QgaT1lW3JdO2Vbcl09bltpXSxpJiZJaShuLGkpfX1mdW5jdGlvbiBCaShlKXtjb25zdCB0PWUuYml0X3Bvc18rNyYtODtyZXR1cm4hZS5yZWFkQml0cyh0LWUuYml0X3Bvc18pfWZ1bmN0aW9uIHlpKGUsdCl7Y29uc3Qgbj1uZXcgVWludDhBcnJheSh0KTt0cnl7bGV0IHI9MCxpPTA7Zm9yKDtyPGUubGVuZ3RoLTg7KXtjb25zdCBvPWVbcisrXTw8MjR8ZVtyKytdPDwxNnxlW3IrK108PDh8ZVtyKytdLGY9ZVtyKytdPDwyNHxlW3IrK108PDE2fGVbcisrXTw8OHxlW3IrK107aWYoZS5sZW5ndGgtcjxmKXRocm93IG5ldyBFcnJvcigibHo0IG5vdCBoYWRvb3AiKTtpZihuLmxlbmd0aDxvKXRocm93IG5ldyBFcnJvcigibHo0IG5vdCBoYWRvb3AiKTtpZihzdChlLnN1YmFycmF5KHIscitmKSxuLGkpIT09byl0aHJvdyBuZXcgRXJyb3IoImx6NCBub3QgaGFkb29wIik7aWYocis9ZixpKz1vLHI9PT1lLmxlbmd0aClyZXR1cm4gbn1pZihyPGUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigibHo0IG5vdCBoYWRvb3AiKX1jYXRjaChyKXtpZihyIGluc3RhbmNlb2YgRXJyb3ImJnIubWVzc2FnZSE9PSJsejQgbm90IGhhZG9vcCIpdGhyb3cgcjtzdChlLG4sMCl9cmV0dXJuIG59ZnVuY3Rpb24gdmkoZSx0KXtjb25zdCBuPW5ldyBVaW50OEFycmF5KHQpO3JldHVybiBzdChlLG4sMCksbn1mdW5jdGlvbiBzdChlLHQsbil7bGV0IHI9bjtmb3IobGV0IGk9MDtpPGUubGVuZ3RoOyl7Y29uc3Qgbz1lW2krK107bGV0IGY9bz4+NDtpZihmKXtsZXQgdz1mKzI0MDtmb3IoO3c9PT0yNTU7KWYrPXc9ZVtpKytdO2lmKHQuc2V0KGUuc3ViYXJyYXkoaSxpK2YpLHIpLHIrPWYsaSs9ZixpPj1lLmxlbmd0aClyZXR1cm4gci1ufWNvbnN0IHM9ZVtpKytdfGVbaSsrXTw8ODtpZighc3x8cz5yKXRocm93IG5ldyBFcnJvcihgbHo0IG9mZnNldCBvdXQgb2YgcmFuZ2UgJHtzfWApO2xldCBsPShvJjE1KSs0LEE9bCsyNDA7Zm9yKDtBPT09MjU1OylsKz1BPWVbaSsrXTtsZXQgYT1yLXM7Y29uc3QgdT1yK2w7Zm9yKDtyPHU7KXRbcisrXT10W2ErK119cmV0dXJuIHItbn1jb25zdCBmbj17U05BUFBZOkVyKCksR1pJUDooZSx0KT0+e2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHJ0KGUsbiksbn0sQlJPVExJOmFpLFpTVEQ6ZT0+SXIoZSksTFo0OnlpLExaNF9SQVc6dml9O2Z1bmN0aW9uIHBpKGUpe2lmKCJ1cmwiaW4gZSl7Y29uc3QgdD1KU09OLnN0cmluZ2lmeShlKSxuPXNuLmdldCh0KTtpZihuKXJldHVybiBuO2NvbnN0IHI9S24oZS51cmwsZS5ieXRlTGVuZ3RoKS50aGVuKGVyKTtyZXR1cm4gc24uc2V0KHQscikscn1lbHNlIHJldHVybiBlLmZpbGUuYXJyYXlCdWZmZXIoKX1jb25zdCBzbj1uZXcgTWFwO2Z1bmN0aW9uIENpKHtjaHVuazplLHF1ZXJ5SWQ6dH0pe3NlbGYucG9zdE1lc3NhZ2Uoe2NodW5rOmUscXVlcnlJZDp0fSl9ZnVuY3Rpb24gbWkoe3Jlc3VsdDplLHF1ZXJ5SWQ6dH0pe3NlbGYucG9zdE1lc3NhZ2Uoe3Jlc3VsdDplLHF1ZXJ5SWQ6dH0pfWZ1bmN0aW9uIEFuKHtlcnJvcjplLHF1ZXJ5SWQ6dH0pe3NlbGYucG9zdE1lc3NhZ2Uoe2Vycm9yOmUscXVlcnlJZDp0fSl9ZnVuY3Rpb24gUWkoe2luZGljZXM6ZSxxdWVyeUlkOnR9KXtzZWxmLnBvc3RNZXNzYWdlKHtpbmRpY2VzOmUscXVlcnlJZDp0fSl9c2VsZi5vbm1lc3NhZ2U9YXN5bmMoe2RhdGE6ZX0pPT57Y29uc3R7bWV0YWRhdGE6dCxmcm9tOm4scm93U3RhcnQ6cixyb3dFbmQ6aSxvcmRlckJ5Om8sY29sdW1uczpmLHF1ZXJ5SWQ6cyxjaHVua3M6bCxzb3J0SW5kZXg6QX09ZSxhPWF3YWl0IHBpKG4pO2lmKEE9PT12b2lkIDApe2NvbnN0IHU9bD93PT57Q2koe2NodW5rOncscXVlcnlJZDpzfSl9OnZvaWQgMDt0cnl7Y29uc3Qgdz1hd2FpdCB4dCh7bWV0YWRhdGE6dCxmaWxlOmEscm93U3RhcnQ6cixyb3dFbmQ6aSxvcmRlckJ5Om8sY29sdW1uczpmLGNvbXByZXNzb3JzOmZuLG9uQ2h1bms6dX0pO21pKHtyZXN1bHQ6dyxxdWVyeUlkOnN9KX1jYXRjaCh3KXtBbih7ZXJyb3I6dyxxdWVyeUlkOnN9KX19ZWxzZSB0cnl7aWYobz09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoInNvcnRQYXJxdWV0V29ya2VyIHJlcXVpcmVzIG9yZGVyQnkiKTtpZihyIT09dm9pZCAwfHxpIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigic29ydEluZGV4IHJlcXVpcmVzIGFsbCByb3dzIik7Y29uc3QgdT1hd2FpdCB4dCh7bWV0YWRhdGE6dCxmaWxlOmEsY29sdW1uczpbb10sY29tcHJlc3NvcnM6Zm59KSx3PUFycmF5LmZyb20odSwoaCxFKT0+RSkuc29ydCgoaCxFKT0+YmkodVtoXVtvXSx1W0VdW29dKSk7UWkoe2luZGljZXM6dyxxdWVyeUlkOnN9KX1jYXRjaCh1KXtBbih7ZXJyb3I6dSxxdWVyeUlkOnN9KX19O2Z1bmN0aW9uIGJpKGUsdCl7cmV0dXJuIGU8dD8tMTooZT50LDEpfX0pKCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhcnF1ZXRXb3JrZXItRGcyblh0a0guanMubWFwCg==",F=typeof self<"u"&&self.Blob&&new Blob([(M=T,Uint8Array.from(atob(M),(e=>e.charCodeAt(0))))],{type:"text/javascript;charset=utf-8"});var M;function h(e){let l;try{if(l=F&&(self.URL||self.webkitURL).createObjectURL(F),!l)throw"";const n=new Worker(l,{name:null==e?void 0:e.name});return n.addEventListener("error",(()=>{(self.URL||self.webkitURL).revokeObjectURL(l)})),n}catch{return new Worker("data:text/javascript;base64,"+T,{name:null==e?void 0:e.name})}finally{l&&(self.URL||self.webkitURL).revokeObjectURL(l)}}let S,k=0;const y=new Map;function Q(){return S||(S=new h,S.onmessage=({data:e})=>{const l=y.get(e.queryId);if(l)if("query"===l.kind){const{resolve:n,reject:t,onChunk:d}=l;"error"in e?t(e.error):"result"in e?n(e.result):"chunk"in e?null==d||d(e.chunk):t(new Error("Unexpected message from worker"))}else{const{resolve:n,reject:t}=l;"error"in e?t(e.error):"indices"in e?n(e.indices):t(new Error("Unexpected message from worker"))}else console.warn(`Unexpected: no pending promise found for queryId: ${e.queryId.toString()}`)}),S}function G(e,l){const{children:n}=function(e){return b(e.schema,[])[0]}(l),t=n.map((e=>e.element.name)),d=new Map,a=new Array(Number(l.num_rows)),r=new Array(l.row_groups.length).fill(!1);let c=0;const i=l.row_groups.map((e=>c+=Number(e.num_rows)));function V(n){if(!r[n]){const d=i[n-1]||0,c=i[n];for(let e=d;e[e,R()])));(function({metadata:e,from:l,rowStart:n,rowEnd:t,orderBy:d,onChunk:a}){return new Promise(((r,c)=>{const i=k++;y.set(i,{kind:"query",resolve:r,reject:c,onChunk:a});const V=Q(),o=void 0!==a;V.postMessage({queryId:i,metadata:e,from:l,rowStart:n,rowEnd:t,orderBy:d,chunks:o})}))})({from:e,metadata:l,rowStart:d,rowEnd:c}).then((e=>{var l;for(let n=d;n{console.error("Error fetching row group",e)})),r[n]=!0}}function o(n){let t=d.get(n);return t||(t=function({metadata:e,from:l,orderBy:n}){return new Promise(((t,d)=>{const a=k++;y.set(a,{kind:"sortIndex",resolve:t,reject:d}),Q().postMessage({queryId:a,metadata:e,from:l,orderBy:n,sortIndex:!0})}))}({from:e,metadata:l,orderBy:n}),d.set(n,t)),t}return{header:t,numRows:Number(l.num_rows),rows(e,l,n){if(n){const d=new Array(l-e).fill(null).map((()=>Object.fromEntries(t.map((e=>[e,R()])))));return o(n).then((n=>{for(const t of n.slice(e,l)){V(i.findIndex((e=>t{var t;null==(t=d[r-e])||t[l].resolve(n)})).catch((e=>{console.error("Error resolving sorted row",e)}))}})).catch((e=>{console.error("Error fetching sort index or resolving sorted rows",e)})),d}for(let n=0;nt&&V(n)}return a.slice(e,l)},sortable:!0}}function X(...e){return e.filter((e=>e)).join(" ")}var E,w,K={exports:{}},f={},Y=(w||(w=1,K.exports=function(){if(E)return f;E=1;var e=t,l=Symbol.for("react.element"),n=Symbol.for("react.fragment"),d=Object.prototype.hasOwnProperty,a=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,r={key:!0,ref:!0,__self:!0,__source:!0};function c(e,n,t){var c,i={},V=null,o=null;for(c in void 0!==t&&(V=""+t),void 0!==n.key&&(V=""+n.key),void 0!==n.ref&&(o=n.ref),n)d.call(n,c)&&!r.hasOwnProperty(c)&&(i[c]=n[c]);if(e&&e.defaultProps)for(c in n=e.defaultProps)void 0===i[c]&&(i[c]=n[c]);return{$$typeof:l,type:e,key:V,ref:o,props:i,_owner:a.current}}return f.Fragment=n,f.jsx=c,f.jsxs=c,f}()),K.exports);function x(e,l,n){if(Array.isArray(e))return e;const t=new Array(l).fill(null).map((e=>function(e){return Object.fromEntries(e.map((e=>[e,J()])))}(n)));return e.then((e=>{e.length!==l&&console.warn(`Expected ${l} rows, got ${e.length}`);for(let l=0;l{for(let d=0;d(l.resolved=e,e))).catch((e=>{throw l.rejected=e,e}));return l}(new Promise(((n,t)=>{e=n,l=t})));return n.resolve=e,n.reject=l,n}function z({header:e,cacheKey:l,columnWidths:n,orderBy:t,setOrderBy:c,setColumnWidth:i,setColumnWidths:Z,dataReady:u}){const[U,m]=d(),W=r(e.map((()=>o())));function N(e){return e.current?e.current.offsetWidth-20:void 0}a((()=>{const n=new Array(e.length);l&&I(l).forEach((({columnIndex:l,columnName:t,width:d})=>{e[l]===t&&(n[l]=d)})),Z(n)}),[l]),a((()=>{if(u){const e=W.current.map(N);Z(e)}}),[l,u,e]),a((()=>{function t(){if(!U)return;const{columnIndex:t}=U;if(l&&n[t]){const d=n[t];D(l,{columnIndex:t,columnName:e[t],width:d})}m(void 0)}function d({clientX:e}){U&&i(U.columnIndex,Math.max(1,e-U.clientX))}return U&&(window.addEventListener("mousemove",d),window.addEventListener("mouseup",t)),()=>{window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",t)}}),[l,e,U,Z]);const R=V((()=>n.map(L)),[n]);return Y.jsx("thead",{children:Y.jsxs("tr",{children:[Y.jsx("th",{children:Y.jsx("span",{})}),e.map(((d,a)=>Y.jsxs("th",{"aria-sort":t===d?"ascending":void 0,className:t===d?"orderby":void 0,onClick:e=>{return l=d,void("SPAN"!==e.target.tagName&&(null==c||c(t===l?void 0:l)));var l},ref:W.current[a],style:R[a],title:d,children:[d,Y.jsx("span",{onDoubleClick:()=>function(n){s((()=>{i(n,void 0)}));const t=N(W.current[n]);l&&t&&D(l,{columnIndex:n,columnName:e[n],width:t}),i(n,t)}(a),onMouseDown:e=>{return l=a,(t=e).stopPropagation(),void m({columnIndex:l,clientX:t.clientX-(n[l]||0)});var l,t}})]},a)))]})})}function L(e){const l=e?`${e}px`:void 0;return{minWidth:l,maxWidth:l}}function I(e){const l=localStorage.getItem(`column-widths:${e}`);return l?JSON.parse(l):[]}function D(e,l){const n=[...I(e).filter((e=>e.columnIndex!==l.columnIndex)),l];localStorage.setItem(`column-widths:${e}`,JSON.stringify(n))}function B(e,l){switch(l.type){case"SET_ROWS":return{...e,startIndex:l.start,rows:l.rows,dataReady:e.dataReady||l.hasCompleteRow};case"SET_COLUMN_WIDTH":{const n=[...e.columnWidths];return n[l.columnIndex]=l.columnWidth,{...e,columnWidths:n}}case"SET_COLUMN_WIDTHS":return{...e,columnWidths:l.columnWidths};case"SET_ORDER":return{...e,orderBy:l.orderBy};case"SET_PENDING":return{...e,pending:l.pending};case"DATA_CHANGED":return{...e,dataReady:!1};default:return e}}const g={columnWidths:[],startIndex:0,rows:[],dataReady:!1,pending:!1};function C({data:e,cacheKey:l,overscan:n=20,padding:t=20,onDoubleClickCell:d,onMouseDownCell:o,onError:s=console.error}){const[Z,u]=i(B,g),{columnWidths:U,startIndex:m,rows:W,orderBy:N,dataReady:R,pending:p}=Z,b=r(0),T=r(null),F=r(null),M=r(0),h=r(!1);if(!e)throw new Error("HighTable: data is required");const S=33*(e.numRows+1);function k(l,n){if(l.length>0&&l.length!==e.header.length)return`Row ${n+1} length ${l.length} does not match header length ${e.header.length}`}a((()=>{async function l(){var d,a;const r=(null==(d=T.current)?void 0:d.clientHeight)||100,c=(null==(a=T.current)?void 0:a.scrollTop)||0,i=Math.floor(e.numRows*c/S),V=Math.ceil(e.numRows*(c+r)/S),o=Math.max(0,i-n),Z=Math.min(e.numRows,V+n);if(isNaN(o))throw new Error("invalid start row "+o);if(isNaN(Z))throw new Error("invalid end row "+Z);if(Z-o>1e3)throw new Error("too many rows to fetch "+(Z-o));const U=33*Math.max(0,o-t);try{const n=++M.current,t=x(e.rows(o,Z,N),Z-o,e.header),d=function(e){let l=0,n=!1;return()=>{const t=Date.now();t-l>10?(l=t,e()):n||(n=!0,setTimeout((()=>{l=Date.now(),n=!1,e()}),10-(t-l)))}}((()=>{const e=[];let l=!1;for(const n of t){const t={};let d=!0;for(const[e,l]of Object.entries(n))"resolved"in l?t[e]=l.resolved:d=!1;d&&(l=!0),e.push(t)}b.current=U,u({type:"SET_ROWS",start:o,rows:e,hasCompleteRow:l})}));d();for(const e of t)for(const[l,t]of Object.entries(e))t.then((()=>{M.current===n&&d()})).catch((()=>{}));for(const e of t)for(const l of Object.values(e))await l;h.current&&(h.current=!1,l())}catch(e){u({type:"SET_PENDING",pending:!1}),s(e)}}l();const d=T.current;return null==d||d.addEventListener("scroll",l),window.addEventListener("resize",l),()=>{null==d||d.removeEventListener("scroll",l),window.removeEventListener("resize",l)}}),[e,N,n,t,S,s]);const y=V((()=>U.map(L)),[U]);a((()=>{var e;null==(e=F.current)||e.focus()}),[]),a((()=>{u({type:"DATA_CHANGED"})}),[e]);const Q=c((e=>W[e].__index__??e+m+1),[W,m]),G=Array.from({length:Math.min(t,m)},(()=>[])),X=Array.from({length:Math.min(t,e.numRows-m-W.length)},(()=>[])),E=4*Math.ceil(Math.log10(e.numRows+1))+22,w=V((()=>L(E)),[E]);if(e.header.length)return Y.jsxs("div",{className:p?"table-container pending":"table-container",children:[Y.jsx("div",{className:"table-scroll",ref:T,children:Y.jsx("div",{style:{height:`${S}px`},children:Y.jsxs("table",{"aria-colcount":e.header.length,"aria-rowcount":e.numRows,className:e.sortable?"table sortable":"table",ref:F,role:"grid",style:{top:`${b.current}px`},tabIndex:0,children:[Y.jsx(z,{cacheKey:l,columnWidths:U,dataReady:R,header:e.header,orderBy:N,setColumnWidth:(e,l)=>u({type:"SET_COLUMN_WIDTH",columnIndex:e,columnWidth:l}),setColumnWidths:e=>u({type:"SET_COLUMN_WIDTHS",columnWidths:e}),setOrderBy:l=>e.sortable&&u({type:"SET_ORDER",orderBy:l})}),Y.jsxs("tbody",{children:[G.map(((e,l)=>Y.jsx("tr",{children:Y.jsx("td",{style:w,children:(m-G.length+l+1).toLocaleString()})},m-G.length+l))),W.map(((l,n)=>Y.jsxs("tr",{title:k(l,n),children:[Y.jsx("td",{style:w,children:Q(n).toLocaleString()}),e.header.map(((e,t)=>{var a;return function(e,l,n,t){let a,r=v(e);return"string"==typeof r&&(r.length>400&&(r=`${r.slice(0,397)}…`),r.length>100&&(a=r)),Y.jsx("td",{className:void 0===r?"pending":void 0,onDoubleClick:()=>null==d?void 0:d(l,t??n),onMouseDown:e=>null==o?void 0:o(e,l,t??n),style:y[l],title:a,children:r},l)}(l[e],t,m+n,null==(a=l.__index__)?void 0:a.resolved)}))]},m+n))),X.map(((e,l)=>Y.jsx("tr",{children:Y.jsx("td",{style:w,children:(m+W.length+l+1).toLocaleString()})},m+W.length+l)))]})]})})}),Y.jsx("div",{className:"table-corner",style:w,children:" "}),Y.jsx("div",{className:"mock-row-label",style:w,children:" "})]})}function v(e){return"string"==typeof e?e:"number"==typeof e?e.toLocaleString():Array.isArray(e)?`[${e.map(v).join(", ")}]`:null==e?JSON.stringify(e):e instanceof Date?e.toISOString():"object"==typeof e?`{${Object.entries(e).map((([e,l])=>`${e}: ${v(l)}`)).join(", ")}}`:e.toString()}const H=["BOOLEAN","INT32","INT64","INT96","FLOAT","DOUBLE","BYTE_ARRAY","FIXED_LEN_BYTE_ARRAY"],j=["PLAIN",void 0,"PLAIN_DICTIONARY","RLE","BIT_PACKED","DELTA_BINARY_PACKED","DELTA_LENGTH_BYTE_ARRAY","DELTA_BYTE_ARRAY","RLE_DICTIONARY","BYTE_STREAM_SPLIT"],O=["REQUIRED","OPTIONAL","REPEATED"],P=["UTF8","MAP","MAP_KEY_VALUE","LIST","ENUM","DECIMAL","DATE","TIME_MILLIS","TIME_MICROS","TIMESTAMP_MILLIS","TIMESTAMP_MICROS","UINT_8","UINT_16","UINT_32","UINT_64","INT_8","INT_16","INT_32","INT_64","JSON","BSON","INTERVAL"],A=["UNCOMPRESSED","SNAPPY","GZIP","LZO","BROTLI","LZ4","ZSTD","LZ4_RAW"],_=["DATA_PAGE","INDEX_PAGE","DICTIONARY_PAGE","DATA_PAGE_V2"];const q=0,$=1,ee=2,le=3,ne=4,te=5,de=6,ae=7,re=8,ce=9,ie=12,Ve=13;function oe(e,l){switch(l){case $:return!0;case ee:return!1;case le:return e.view.getInt8(e.offset++);case ne:case te:return function(e){const l=se(e);return l>>>1^-(1&l)}(e);case de:return function(e){const l=function(e){let l=0n,n=0n;for(;;){const t=e.view.getUint8(e.offset++);if(l|=BigInt(127&t)<>BigInt(1)^-(l&BigInt(1))}(e);case ae:{const l=e.view.getFloat64(e.offset,!0);return e.offset+=8,l}case re:{const l=se(e),n=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,l);return e.offset+=l,n}case ce:{const[l,n]=function(e){const l=e.view.getUint8(e.offset++),n=l>>4,t=Ze(l);if(15===n){return[t,se(e)]}return[t,n]}(e),t=l===$||l===ee,d=new Array(n);for(let a=0;a>4;let d;if(!t)throw new Error("non-delta field id not supported");return d=l+t,[Ze(n),d,d]}async function Ue(e,l=1<<19){if(!e)throw new Error("parquet file is required");if(!(e.byteLength>=0))throw new Error("parquet file byteLength is required");const n=Math.max(0,e.byteLength-l),t=await e.slice(n,e.byteLength),d=new DataView(t);if(827474256!==d.getUint32(t.byteLength-4,!0))throw new Error("parquet file invalid (footer != PAR1)");const a=d.getUint32(t.byteLength-8,!0);if(a>e.byteLength-8)throw new Error(`parquet metadata length ${a} exceeds available buffer ${e.byteLength-8}`);if(a+8>l){const l=e.byteLength-a-8,d=await e.slice(l,n),r=new ArrayBuffer(a+8),c=new Uint8Array(r);return c.set(new Uint8Array(d)),c.set(new Uint8Array(t),n-l),me(r)}return me(t)}function me(e){var l;if(!e)throw new Error("parquet file is required");const n=new DataView(e);if(n.byteLength<8)throw new Error("parquet file is too short");if(827474256!==n.getUint32(n.byteLength-4,!0))throw new Error("parquet file invalid (footer != PAR1)");const t=n.byteLength-8,d=n.getUint32(t,!0);if(d>n.byteLength-8)throw new Error(`parquet metadata length ${d} exceeds available buffer ${n.byteLength-8}`);const a=function(e){let l=0;const n={};for(;e.offset({type:H[e.field_1],type_length:e.field_2,repetition_type:O[e.field_3],name:c(e.field_4),num_children:e.field_5,converted_type:P[e.field_6],scale:e.field_7,precision:e.field_8,field_id:e.field_9,logical_type:We(e.field_10)}))),o=V.filter((e=>e.type));return{version:i,schema:V,num_rows:a.field_3,row_groups:a.field_4.map((e=>{var l;return{columns:e.field_1.map(((e,l)=>{var n,t;return{file_path:c(e.field_1),file_offset:e.field_2,meta_data:e.field_3&&{type:H[e.field_3.field_1],encodings:null==(n=e.field_3.field_2)?void 0:n.map((e=>j[e])),path_in_schema:e.field_3.field_3.map(c),codec:A[e.field_3.field_4],num_values:e.field_3.field_5,total_uncompressed_size:e.field_3.field_6,total_compressed_size:e.field_3.field_7,key_value_metadata:e.field_3.field_8,data_page_offset:e.field_3.field_9,index_page_offset:e.field_3.field_10,dictionary_page_offset:e.field_3.field_11,statistics:Re(e.field_3.field_12,o[l]),encoding_stats:null==(t=e.field_3.field_13)?void 0:t.map((e=>({page_type:_[e.field_1],encoding:j[e.field_2],count:e.field_3}))),bloom_filter_offset:e.field_3.field_14,bloom_filter_length:e.field_3.field_15,size_statistics:e.field_3.field_16&&{unencoded_byte_array_data_bytes:e.field_3.field_16.field_1,repetition_level_histogram:e.field_3.field_16.field_2,definition_level_histogram:e.field_3.field_16.field_3}},offset_index_offset:e.field_4,offset_index_length:e.field_5,column_index_offset:e.field_6,column_index_length:e.field_7,crypto_metadata:e.field_7,encrypted_column_metadata:e.field_8}})),total_byte_size:e.field_2,num_rows:e.field_3,sorting_columns:null==(l=e.field_4)?void 0:l.map((e=>({column_idx:e.field_1,descending:e.field_2,nulls_first:e.field_3}))),file_offset:e.field_5,total_compressed_size:e.field_6,ordinal:e.field_7}})),key_value_metadata:null==(l=a.field_5)?void 0:l.map((e=>({key:c(e.field_1),value:c(e.field_2)}))),created_by:c(a.field_6),metadata_length:d}}function We(e){return null!=e&&e.field_1?{type:"STRING"}:null!=e&&e.field_2?{type:"MAP"}:null!=e&&e.field_3?{type:"LIST"}:null!=e&&e.field_4?{type:"ENUM"}:null!=e&&e.field_5?{type:"DECIMAL",scale:e.field_5.field_1,precision:e.field_5.field_2}:null!=e&&e.field_6?{type:"DATE"}:null!=e&&e.field_7?{type:"TIME",isAdjustedToUTC:e.field_7.field_1,unit:Ne(e.field_7.field_2)}:null!=e&&e.field_8?{type:"TIMESTAMP",isAdjustedToUTC:e.field_8.field_1,unit:Ne(e.field_8.field_2)}:null!=e&&e.field_10?{type:"INTEGER",bitWidth:e.field_10.field_1,isSigned:e.field_10.field_2}:null!=e&&e.field_11?{type:"NULL"}:null!=e&&e.field_12?{type:"JSON"}:null!=e&&e.field_13?{type:"BSON"}:null!=e&&e.field_14?{type:"UUID"}:null!=e&&e.field_15?{type:"FLOAT16"}:e}function Ne(e){if(e.field_1)return"MILLIS";if(e.field_2)return"MICROS";if(e.field_3)return"NANOS";throw new Error("parquet time unit required")}function Re(e,l){return e&&{max:pe(e.field_1,l),min:pe(e.field_2,l),null_count:e.field_3,distinct_count:e.field_4,max_value:pe(e.field_5,l),min_value:pe(e.field_6,l),is_max_value_exact:e.field_7,is_min_value_exact:e.field_8}}function pe(e,l){const{type:n,converted_type:t,logical_type:d}=l;if(void 0===e)return e;if("BOOLEAN"===n)return 1===e[0];if("BYTE_ARRAY"===n)return(new TextDecoder).decode(e);const a=new DataView(e.buffer,e.byteOffset,e.byteLength);return"FLOAT"===n&&4===a.byteLength?a.getFloat32(0,!0):"DOUBLE"===n&&8===a.byteLength?a.getFloat64(0,!0):"INT32"===n&&"DATE"===t?new Date(864e5*a.getInt32(0,!0)):"INT64"===n&&"TIMESTAMP_MICROS"===t?new Date(Number(a.getBigInt64(0,!0)/1000n)):"INT64"===n&&"TIMESTAMP_MILLIS"===t||"INT64"===n&&"TIMESTAMP"===(null==d?void 0:d.type)?new Date(Number(a.getBigInt64(0,!0))):"INT32"===n&&4===a.byteLength?a.getInt32(0,!0):"INT64"===n&&8===a.byteLength?a.getBigInt64(0,!0):"DECIMAL"===t?function(e){let l=0;for(const n of e)l=l<<8|n;return l}(e)*Math.pow(10,-(l.scale||0)):"FLOAT16"===(null==d?void 0:d.type)?function(e){if(!e)return;const l=e[1]<<8|e[0],n=l>>15?-1:1,t=l>>10&31,d=1023&l;return 0===t?n*Math.pow(2,-14)*(d/1024):31===t?d?NaN:n*(1/0):n*Math.pow(2,t-15)*(1+d/1024)}(e):e}async function be(e,l){return l||(l=await async function(e){return await fetch(e,{method:"HEAD"}).then((e=>{if(!e.ok)throw new Error(`fetch head failed ${e.status}`);const l=e.headers.get("Content-Length");if(!l)throw new Error("missing content length");return parseInt(l)}))}(e)),{byteLength:l,async slice(l,n){const t=new Headers,d=void 0===n?"":n-1;t.set("Range",`bytes=${l}-${d}`);const a=await fetch(e,{headers:t});if(!a.ok||!a.body)throw new Error(`fetch failed ${a.status}`);return a.arrayBuffer()}}}function Te({urlKey:l}){return e("nav",{className:"top-header",children:e("div",{className:"path",children:e("a",{href:`/files?key=${l.raw}`,children:l.raw})})})}function Fe({fileKey:n}){const t=n.raw.split("/");return e("nav",{className:"top-header",children:l("div",{className:"path",children:[e("a",{href:"/files",children:"/"}),t.slice(0,-1).map(((e,n)=>l("a",{href:`/files?key=${t.slice(0,n+1).join("/")}/`,children:[e,"/"]},n))),e("a",{href:`/files?key=${n.raw}`,children:n.fileName})]})})}function Me({parsedKey:l}){return"url"===l.kind?e(Te,{urlKey:l}):e(Fe,{fileKey:l})}function he({children:n,className:t,progress:d,error:r,title:c}){const i=null==r?void 0:r.toString();return r&&console.error(r),a((()=>{document.title=c?`${c} - hyperparam`:"hyperparam"}),[c]),l("main",{className:"main",children:[e(Se,{}),l("div",{className:"content-container",children:[e("div",{className:X("content",t),children:n}),e("div",{className:X("error-bar",void 0!==r&&"show-error"),children:i})]}),void 0!==d&&d<1&&e("div",{className:"progress-bar",role:"progressbar",children:e("div",{style:{width:100*d+"%"}})})]})}function Se(){return e("nav",{className:"nav",children:e("a",{className:"brand",href:"/",children:"hyperparam"})})}function ke({className:l}){return e("div",{className:X("spinner",l)})}function ye({parsedKey:n,row:t,col:r}){const[c,i]=d(0),[V,o]=d(),[s,Z]=d(),[u,U]=d(),{resolveUrl:m,fileName:W}=n;return a((()=>{0===c&&(i(1),async function(){try{Z(.25);const e=await be(m),l={url:m,byteLength:e.byteLength};Z(.5);const n=await Ue(e);Z(.75);const d=G(l,n),a=d.rows(t,t+1),c=await x(a,1,d.header)[0][d.header[r]].then(Qe);o(c),U(void 0)}catch(e){U(e),o(void 0)}finally{i(2),Z(void 0)}}().catch((()=>{})))}),[m,r,t,c,U]),l(he,{progress:s,error:u,title:W,children:[e(Me,{parsedKey:n}),e("pre",{className:"viewer text",children:V})]})}function Qe(e){return"string"==typeof e?e:"number"==typeof e?e.toLocaleString("en-US"):Array.isArray(e)?`[\n${e.map((e=>function(e,l){return null==e?void 0:e.split("\n").map((e=>" ".repeat(l)+e)).join("\n")}(Qe(e),2))).join(",\n")}\n]`:null==e?JSON.stringify(e):e instanceof Date?e.toISOString():"object"==typeof e?`{${Object.entries(e).filter((e=>void 0!==e[1])).map((([e,l])=>`${e}: ${Qe(l)}`)).join(", ")}}`:"{}"}function Ge({content:n,headers:t,children:d}){return l("div",{className:"viewer",children:[l("div",{className:"view-header",children:[(null==n?void 0:n.fileSize)&&e("span",{title:n.fileSize.toLocaleString("en-US")+" bytes",children:U(n)}),t]}),d]})}function Xe({parsedKey:n,setError:t}){const[r,c]=d(0),[i,V]=d(),{fileName:o,resolveUrl:s}=n;return a((()=>{async function e(){try{const e=await fetch(s);if(401===e.status){const l=await e.text();return t(new Error(l)),void V(void 0)}const l=function(e){let l="";const n=new Uint8Array(e);for(let e=0;e0!==l?l:(e().catch((()=>{})),1)))}),[o,s,t]),l(Ge,{content:i,children:[(null==i?void 0:i.dataUri)&&e("img",{alt:n.raw,className:"image",src:i.dataUri}),r&&e(ke,{className:"center"})]})}function Ee({text:l,className:n}){return function(l){const t=[],d=l.split("\n");let a=!1,r=[],c=!1,i=[];for(let l=0;ln%2?e("strong",{children:l},n):l))},l));continue}if(n.includes("*")){const d=n.split("*");t.push(e("p",{children:d.map(((l,n)=>n%2?e("em",{children:l},n):l))},l));continue}if(n.startsWith("#")){const d=n.split(" ")[0].length,a=n.slice(d+1),r=`h${d}`;t.push(e(r,{children:a},l));continue}const V=/!\[(.*?)\]\((.*?)\)/.exec(n);if(V){const[,n,d]=V;t.push(e("img",{src:d,alt:n},l))}else if(n.includes("[")&&n.includes("]")&&n.includes("(")&&n.includes(")")){const d=n.replace(/\[(.*?)\]\((.*?)\)/g,((e,l,n)=>`${l}`));t.push(e("p",{dangerouslySetInnerHTML:{__html:d}},l))}else if(n.startsWith("-")||n.startsWith("*")||n.startsWith("+")){const t=n.slice(1).trim();i.push(e("li",{children:t},`list-item-${l}`)),c=!0}else c&&i.length>0&&(t.push(e("ul",{children:i},`list-${l}`)),i=[],c=!1),t.push(e("p",{children:n},l))}return a&&r.length>0&&t.push(e("pre",{children:r.join("\n")},`code-${d.length}`)),c&&i.length>0&&t.push(e("ul",{children:i},`list-${d.length}`)),e("div",{className:n,children:t})}(l)}function we({parsedKey:n,setError:t}){const[r,c]=d(0),[i,V]=d(),{resolveUrl:o}=n;return a((()=>{c((e=>0!==e?e:(async function(){try{const e=await fetch(o),l=await e.text(),n=m(e.headers)??l.length;if(401===e.status)return t(new Error(l)),void V(void 0);t(void 0),V({text:l,fileSize:n})}catch(e){t(e),V(void 0)}finally{c(2)}}().catch((()=>{})),1)))}),[o,t]),l(Ge,{content:i,children:[e(Ee,{className:"markdown",text:(null==i?void 0:i.text)??""}),1===r&&e(ke,{className:"center"})]})}function Ke({parsedKey:t,setProgress:r,setError:i}){const[V,o]=d(0),[s,Z]=d(),{resolveUrl:u,raw:U}=t;a((()=>{0===V&&(o(1),async function(){try{r(.33);const e=await be(u),l={url:u,byteLength:e.byteLength};r(.66);let n=G(l,await Ue(e));n=function(e){const l={};return{...e,rows(n,t,d){var a;const r=l[a=d||""]||(l[a]=new Array(e.numRows));let c;for(let l=n;l{})))}),[V,u,i,r]);const m=c(((e,l)=>{location.href="/files?key="+U+"&row="+l.toString()+"&col="+e.toString()}),[U]),W=c(((e,l,n)=>{1===e.button&&(e.preventDefault(),window.open("/files?key="+U+"&row="+n.toString()+"&col="+l.toString(),"_blank"))}),[U]),N=e(n,{children:(null==s?void 0:s.dataframe)&&l("span",{children:[s.dataframe.numRows.toLocaleString()," rows"]})});return l(Ge,{content:s,headers:N,children:[(null==s?void 0:s.dataframe)&&e(C,{cacheKey:u,data:s.dataframe,onDoubleClickCell:m,onMouseDownCell:W,onError:i}),V&&e(ke,{className:"center"})]})}function fe({parsedKey:t,setError:c}){const[i,V]=d(0),[o,s]=d(),Z=r(null),{resolveUrl:u}=t;a((()=>{V((e=>0!==e?e:(async function(){try{const e=await fetch(u),l=await e.text(),n=m(e.headers)??l.length;if(401===e.status)return c(new Error(l)),void s(void 0);c(void 0),s({text:l,fileSize:n})}catch(e){c(e),s(void 0)}finally{V(2)}}().catch((()=>{})),1)))}),[u,c]);const U=e(n,{children:l("span",{children:[Ye((null==o?void 0:o.text)??"")," lines"]})});return l(Ge,{content:o,headers:U,children:[e("code",{className:"text",ref:Z,children:null==o?void 0:o.text}),i&&e(ke,{className:"center"})]})}function Ye(e){let l=0;for(const n of e)"\n"===n&&l++;return l.toLocaleString("en-US")}function xe({parsedKey:l,setError:n,setProgress:t}){const{fileName:d}=l;return d.endsWith(".md")?e(we,{parsedKey:l,setError:n}):d.endsWith(".parquet")?e(Ke,{parsedKey:l,setError:n,setProgress:t}):N.some((e=>d.endsWith(e)))?e(Xe,{parsedKey:l,setError:n}):e(fe,{parsedKey:l,setError:n,setProgress:t})}function Je({parsedKey:n}){const[t,a]=d(),[r,c]=d();return l(he,{progress:t,error:r,title:n.fileName,children:[e(Me,{parsedKey:n}),e(xe,{parsedKey:n,setProgress:a,setError:c})]})}function ze({folderKey:t}){const[i,V]=d(),[o,s]=d(),m=r(null),{prefix:W}=t,N=W.split("/");a((()=>{(async function(e){e=encodeURIComponent(e);const l=await fetch(`/api/store/list?prefix=${e}`);if(l.ok)return await l.json();throw new Error(`file list error ${l.status} ${await l.text()}`)})(W).then(V).catch((e=>{V([]),s(e instanceof Error?e:new Error(`Failed to fetch files - ${e}`))}))}),[W]);const R=c((e=>W?`/files?key=${W}/${e.key}`:`/files?key=${e.key}`),[W]);return l(he,{error:o,title:W,children:[e("nav",{className:"top-header",children:l("div",{className:"path",children:[e("a",{href:"/files",children:"/"}),W.length>0&&W.split("/").map(((e,n)=>l("a",{href:`/files?key=${N.slice(0,n+1).join("/")}/`,children:[e,"/"]},n)))]})}),i&&i.length>0&&e("ul",{className:"file-list",ref:m,children:i.map(((t,d)=>e("li",{children:l("a",{href:R(t),children:[e("span",{className:X("file-name","file",t.key.endsWith("/")&&"folder"),children:t.key}),!t.key.endsWith("/")&&l(n,{children:[void 0!==t.fileSize&&e("span",{className:"file-size",title:t.fileSize.toLocaleString()+" bytes",children:U(t)}),e("span",{className:"file-date",title:u(t),children:Z(t)})]})]})},d)))}),0===(null==i?void 0:i.length)&&e("div",{className:"center",children:"No files"}),void 0===i&&e(ke,{className:"center"})]})}function Le(){const l=new URLSearchParams(location.search),n=l.get("key");if(Array.isArray(n))throw new Error("key must be a string");const t=function(e){if(!e)return{kind:"folder",raw:e,prefix:""};const l=decodeURIComponent(e);if(l.endsWith("/"))return{kind:"folder",raw:e,prefix:l.replace(/\/$/,"")};const n=l.replace(/\?.*$/,"").split("/").at(-1);if(!n)throw new Error("Invalid key");return l.startsWith("http://")||l.startsWith("https://")?{kind:"url",raw:e,resolveUrl:l,fileName:n}:{kind:"file",raw:e,resolveUrl:"/api/store/get?key="+l,fileName:n}}(n),d=l.get("row"),a=l.get("col");return"folder"===t.kind?e(ze,{folderKey:t}):null!==d&&null!==a?e(ye,{parsedKey:t,row:Number(d),col:Number(a)}):e(Je,{parsedKey:t})}function Ie(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var De,Be,ge={exports:{}},Ce={};function ve(){if(De)return Ce;De=1;var e=Symbol.for("react.element"),l=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),t=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),a=Symbol.for("react.provider"),r=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),i=Symbol.for("react.suspense"),V=Symbol.for("react.memo"),o=Symbol.for("react.lazy"),s=Symbol.iterator;var Z={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},u=Object.assign,U={};function m(e,l,n){this.props=e,this.context=l,this.refs=U,this.updater=n||Z}function W(){}function N(e,l,n){this.props=e,this.context=l,this.refs=U,this.updater=n||Z}m.prototype.isReactComponent={},m.prototype.setState=function(e,l){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,l,"setState")},m.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},W.prototype=m.prototype;var R=N.prototype=new W;R.constructor=N,u(R,m.prototype),R.isPureReactComponent=!0;var p=Array.isArray,b=Object.prototype.hasOwnProperty,T={current:null},F={key:!0,ref:!0,__self:!0,__source:!0};function M(l,n,t){var d,a={},r=null,c=null;if(null!=n)for(d in void 0!==n.ref&&(c=n.ref),void 0!==n.key&&(r=""+n.key),n)b.call(n,d)&&!F.hasOwnProperty(d)&&(a[d]=n[d]);var i=arguments.length-2;if(1===i)a.children=t;else if(1>>1,a=e[t];if(!(0>>1;td(i,n))Vd(o,i)?(e[t]=o,e[V]=n,t=V):(e[t]=i,e[c]=n,t=c);else{if(!(Vd(o,n)))break e;e[t]=o,e[V]=n,t=V}}}return l}function d(e,l){var n=e.sortIndex-l.sortIndex;return 0!==n?n:e.id-l.id}if("object"==typeof performance&&"function"==typeof performance.now){var a=performance;e.unstable_now=function(){return a.now()}}else{var r=Date,c=r.now();e.unstable_now=function(){return r.now()-c}}var i=[],V=[],o=1,s=null,Z=3,u=!1,U=!1,m=!1,W="function"==typeof setTimeout?setTimeout:null,N="function"==typeof clearTimeout?clearTimeout:null,R="undefined"!=typeof setImmediate?setImmediate:null;function p(e){for(var d=n(V);null!==d;){if(null===d.callback)t(V);else{if(!(d.startTime<=e))break;t(V),d.sortIndex=d.expirationTime,l(i,d)}d=n(V)}}function b(e){if(m=!1,p(e),!U)if(null!==n(i))U=!0,w(T);else{var l=n(V);null!==l&&K(b,l.startTime-e)}}function T(l,d){U=!1,m&&(m=!1,N(S),S=-1),u=!0;var a=Z;try{for(p(d),s=n(i);null!==s&&(!(s.expirationTime>d)||l&&!Q());){var r=s.callback;if("function"==typeof r){s.callback=null,Z=s.priorityLevel;var c=r(s.expirationTime<=d);d=e.unstable_now(),"function"==typeof c?s.callback=c:s===n(i)&&t(i),p(d)}else t(i);s=n(i)}if(null!==s)var o=!0;else{var W=n(V);null!==W&&K(b,W.startTime-d),o=!1}return o}finally{s=null,Z=a,u=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var F,M=!1,h=null,S=-1,k=5,y=-1;function Q(){return!(e.unstable_now()-ye||125r?(t.sortIndex=a,l(V,t),null===n(i)&&t===n(V)&&(m?(N(S),S=-1):m=!0,K(b,a-r))):(t.sortIndex=c,l(i,t),U||u||(U=!0,w(T))),t},e.unstable_shouldYield=Q,e.unstable_wrapCallback=function(e){var l=Z;return function(){var n=Z;Z=l;try{return e.apply(this,arguments)}finally{Z=n}}}}(tl)),tl)),nl.exports} /** * @license React * react-dom.production.min.js @@ -16,5 +7,5 @@ function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"de * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */function M(){if(u)return p;u=1;var e=s(),l=F();function n(e){for(var l="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n