@txnlab/use-wallet 1.2.2 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/constants/constants.ts","../../src/algod/index.ts","../../node_modules/immer/dist/immer.esm.mjs","../../node_modules/zustand/esm/middleware/immer.mjs","../../node_modules/zustand/esm/vanilla.mjs","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../../node_modules/use-sync-external-store/shim/index.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js","../../node_modules/use-sync-external-store/shim/with-selector.js","../../node_modules/zustand/esm/index.mjs","../../node_modules/zustand/esm/middleware.mjs","../../src/store/state/walletStore.ts","../../src/store/state/clientStore.ts","../../src/media/audio.ts","../../src/clients/base/base.ts","../../src/clients/pera/constants.ts","../../src/clients/pera/client.ts","../../src/clients/myalgo/constants.ts","../../src/clients/myalgo/client.ts","../../src/clients/defly/constants.ts","../../src/clients/defly/client.ts","../../src/clients/exodus/constants.ts","../../src/clients/exodus/client.ts","../../src/clients/algosigner/constants.ts","../../src/clients/algosigner/client.ts","../../src/clients/walletconnect/constants.ts","../../src/clients/walletconnect/client.ts","../../src/clients/kmd/constants.ts","../../src/clients/kmd/client.ts","../../src/clients/mnemonic/constants.ts","../../src/clients/mnemonic/client.ts","../../src/clients/index.ts","../../src/utils/clearAccounts.ts","../../node_modules/zustand/esm/shallow.mjs","../../src/hooks/useWallet.ts","../../src/utils/initializeProviders.ts","../../src/utils/reconnectProviders.ts","../../src/utils/encodeNFDTransactionsArray.ts"],"sourcesContent":["import { Network } from \"../types\";\n\nexport enum PROVIDER_ID {\n KMD = \"kmd\",\n PERA = \"pera\",\n MYALGO = \"myalgo\",\n ALGOSIGNER = \"algosigner\",\n DEFLY = \"defly\",\n EXODUS = \"exodus\",\n WALLETCONNECT = \"walletconnect\",\n MNEMONIC = \"mnemonic\",\n}\n\nexport const DEFAULT_NETWORK: Network = \"mainnet\";\n\nexport const DEFAULT_NODE_BASEURL = \"https://mainnet-api.algonode.cloud\";\n\nexport const DEFAULT_NODE_TOKEN = \"\";\n\nexport const DEFAULT_NODE_PORT = \"\";\n","import type _algosdk from \"algosdk\";\nimport type { AlgodClientOptions } from \"../types\";\nimport {\n DEFAULT_NODE_BASEURL,\n DEFAULT_NODE_TOKEN,\n DEFAULT_NODE_PORT,\n} from \"../constants\";\n\nexport const getAlgosdk = async () => {\n return (await import(\"algosdk\")).default;\n};\n\nexport const getAlgodClient = async (\n algosdk: typeof _algosdk,\n algodClientOptions?: AlgodClientOptions\n) => {\n const [\n tokenOrBaseClient = DEFAULT_NODE_TOKEN,\n baseServer = DEFAULT_NODE_BASEURL,\n port = DEFAULT_NODE_PORT,\n headers,\n ] = algodClientOptions || [];\n\n return new algosdk.Algodv2(tokenOrBaseClient, baseServer, port, headers);\n};\n\nexport default class Algod {\n algosdk: typeof _algosdk;\n algodClient: _algosdk.Algodv2;\n\n constructor(algosdk: typeof _algosdk, algodClient: _algosdk.Algodv2) {\n this.algosdk = algosdk;\n this.algodClient = algodClient;\n }\n\n static async init(algodOptions?: AlgodClientOptions) {\n const algosdk = await getAlgosdk();\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n\n return new Algod(algosdk, algodClient);\n }\n}\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!n.constructor[L]||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?(n.delete(r),n.add(t)):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)?n:(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0),n)}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function O(n){g(n),n.p.forEach(S),n.p=null}function g(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.O=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.g||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(O(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(r,i){return A(n,e,o,r,i,t)})),x(n,o,!1),t&&n.u&&b(\"Patches\").R(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!r(v))return;e.m=!1}if(t(c)&&!y(c)){if(!e.h.F&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),n.h.F&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function R(n,r,t){var e=s(r)?b(\"MapSet\").N(r,t):v(r)?b(\"MapSet\").T(r,t):n.g?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function D(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=F(r,c),u.I=!1}else e=F(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function F(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function N(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.O&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:i,o:null,O:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.D,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=\"\"+i[s];0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},R:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.D,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.D,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.D=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=R(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.O&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,D:void 0,t:n,k:this,C:!1,O:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.D.set(n,!0),t.o.set(n,r),t.D.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.D.set(n,!1):r.D.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.D=new Map,i(n.t,(function(r){n.D.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=R(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,O:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{N:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){N(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=R(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.D[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&\"number\"!=typeof t&&(void 0!==t||r in n.o)||(n.o[r]=t,n.D[r]=!0,!0)},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.D[r]=!1,E(n),k(n)):delete n.D[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.g=B,this.F=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=R(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?O(c):g(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw O(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.F&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=D(e));var i=w(this),o=R(this,e,void 0);return o[Q].C=!0,g(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.F=n},i.setUseProxies=function(r){r&&!B&&n(20),this.g=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,D as current,J as enableAllPlugins,N as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","import { produce } from 'immer';\n\nconst immerImpl = (initializer) => (set, get, store) => {\n store.setState = (updater, replace, ...a) => {\n const nextState = typeof updater === \"function\" ? produce(updater) : updater;\n return set(nextState, replace, ...a);\n };\n return initializer(store.setState, get, store);\n};\nconst immer = immerImpl;\n\nexport { immer };\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\") ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore as default };\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var React = require('react');\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\n// dispatch for CommonJS interop named imports.\n\nvar useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nvar didWarnOld18Alpha = false;\nvar didWarnUncachedGetSnapshot = false; // Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\n\nfunction useSyncExternalStore(subscribe, getSnapshot, // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n// React do not expose a way to check if we're hydrating. So users of the shim\n// will need to track that themselves and return the correct value\n// from `getSnapshot`.\ngetServerSnapshot) {\n {\n if (!didWarnOld18Alpha) {\n if (React.startTransition !== undefined) {\n didWarnOld18Alpha = true;\n\n error('You are using an outdated, pre-release alpha of React 18 that ' + 'does not support useSyncExternalStore. The ' + 'use-sync-external-store shim will not work correctly. Upgrade ' + 'to a newer pre-release.');\n }\n }\n } // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n\n\n var value = getSnapshot();\n\n {\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n\n if (!objectIs(value, cachedValue)) {\n error('The result of getSnapshot should be cached to avoid an infinite loop');\n\n didWarnUncachedGetSnapshot = true;\n }\n }\n } // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n\n\n var _useState = useState({\n inst: {\n value: value,\n getSnapshot: getSnapshot\n }\n }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1]; // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n\n\n useLayoutEffect(function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot; // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n }, [subscribe, value, getSnapshot]);\n useEffect(function () {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n\n var handleStoreChange = function () {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n }; // Subscribe to the store and return a clean-up function.\n\n\n return subscribe(handleStoreChange);\n }, [subscribe]);\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n var prevValue = inst.value;\n\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n\nfunction useSyncExternalStore$1(subscribe, getSnapshot, getServerSnapshot) {\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n return getSnapshot();\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\n\nvar isServerEnvironment = !canUseDOM;\n\nvar shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore;\nvar useSyncExternalStore$2 = React.useSyncExternalStore !== undefined ? React.useSyncExternalStore : shim;\n\nexports.useSyncExternalStore = useSyncExternalStore$2;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var React = require('react');\nvar shim = require('use-sync-external-store/shim');\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\nvar useSyncExternalStore = shim.useSyncExternalStore;\n\n// for CommonJS interop.\n\nvar useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue; // Same as useSyncExternalStore, but supports selector and isEqual arguments.\n\nfunction useSyncExternalStoreWithSelector(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {\n // Use this to track the rendered snapshot.\n var instRef = useRef(null);\n var inst;\n\n if (instRef.current === null) {\n inst = {\n hasValue: false,\n value: null\n };\n instRef.current = inst;\n } else {\n inst = instRef.current;\n }\n\n var _useMemo = useMemo(function () {\n // Track the memoized state using closure variables that are local to this\n // memoized instance of a getSnapshot function. Intentionally not using a\n // useRef hook, because that state would be shared across all concurrent\n // copies of the hook/component.\n var hasMemo = false;\n var memoizedSnapshot;\n var memoizedSelection;\n\n var memoizedSelector = function (nextSnapshot) {\n if (!hasMemo) {\n // The first time the hook is called, there is no memoized result.\n hasMemo = true;\n memoizedSnapshot = nextSnapshot;\n\n var _nextSelection = selector(nextSnapshot);\n\n if (isEqual !== undefined) {\n // Even if the selector has changed, the currently rendered selection\n // may be equal to the new selection. We should attempt to reuse the\n // current value if possible, to preserve downstream memoizations.\n if (inst.hasValue) {\n var currentSelection = inst.value;\n\n if (isEqual(currentSelection, _nextSelection)) {\n memoizedSelection = currentSelection;\n return currentSelection;\n }\n }\n }\n\n memoizedSelection = _nextSelection;\n return _nextSelection;\n } // We may be able to reuse the previous invocation's result.\n\n\n // We may be able to reuse the previous invocation's result.\n var prevSnapshot = memoizedSnapshot;\n var prevSelection = memoizedSelection;\n\n if (objectIs(prevSnapshot, nextSnapshot)) {\n // The snapshot is the same as last time. Reuse the previous selection.\n return prevSelection;\n } // The snapshot has changed, so we need to compute a new selection.\n\n\n // The snapshot has changed, so we need to compute a new selection.\n var nextSelection = selector(nextSnapshot); // If a custom isEqual function is provided, use that to check if the data\n // has changed. If it hasn't, return the previous selection. That signals\n // to React that the selections are conceptually equal, and we can bail\n // out of rendering.\n\n // If a custom isEqual function is provided, use that to check if the data\n // has changed. If it hasn't, return the previous selection. That signals\n // to React that the selections are conceptually equal, and we can bail\n // out of rendering.\n if (isEqual !== undefined && isEqual(prevSelection, nextSelection)) {\n return prevSelection;\n }\n\n memoizedSnapshot = nextSnapshot;\n memoizedSelection = nextSelection;\n return nextSelection;\n }; // Assigning this to a constant so that Flow knows it can't change.\n\n\n // Assigning this to a constant so that Flow knows it can't change.\n var maybeGetServerSnapshot = getServerSnapshot === undefined ? null : getServerSnapshot;\n\n var getSnapshotWithSelector = function () {\n return memoizedSelector(getSnapshot());\n };\n\n var getServerSnapshotWithSelector = maybeGetServerSnapshot === null ? undefined : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n };\n return [getSnapshotWithSelector, getServerSnapshotWithSelector];\n }, [getSnapshot, getServerSnapshot, selector, isEqual]),\n getSelection = _useMemo[0],\n getServerSelection = _useMemo[1];\n\n var value = useSyncExternalStore(subscribe, getSelection, getServerSelection);\n useEffect(function () {\n inst.hasValue = true;\n inst.value = value;\n }, [value]);\n useDebugValue(value);\n return value;\n}\n\nexports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import createStore__default from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nexport { default as createStore } from 'zustand/vanilla';\nimport { useDebugValue } from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\n\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nfunction useStore(api, selector = api.getState, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = typeof createState === \"function\" ? createStore__default(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\n\nexport { create as default, useStore };\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...a) => api.dispatch(...a), ...initial };\n};\nconst redux = reduxImpl;\n\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env && import.meta.env.MODE) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch {\n }\n if (!extensionConnector) {\n if ((import.meta.env && import.meta.env.MODE) !== \"production\" && enabled) {\n console.warn(\n \"[zustand devtools middleware] Please install/enable Redux devtools extension\"\n );\n }\n return fn(set, get, api);\n }\n const extension = extensionConnector.connect(options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording)\n return r;\n extension.send(\n nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction,\n get()\n );\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n extension.init(initialState);\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env && import.meta.env.MODE) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n extension.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n setStateFromDevtools(action.state);\n return;\n }\n if (!api.dispatchFromDevtools)\n return;\n if (typeof api.dispatch !== \"function\")\n return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n return extension.init(api.getState());\n case \"COMMIT\":\n return extension.init(api.getState());\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n extension.init(api.getState());\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState)\n return;\n setStateFromDevtools(lastComputedState);\n extension.send(\n null,\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0)\n f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n getStorage: () => localStorage,\n serialize: JSON.stringify,\n deserialize: JSON.parse,\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage;\n try {\n storage = options.getStorage();\n } catch (e) {\n }\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const thenableSerialize = toThenable(options.serialize);\n const setItem = () => {\n const state = options.partialize({ ...get() });\n let errorInSync;\n const thenable = thenableSerialize({ state, version: options.version }).then(\n (serializedValue) => storage.setItem(options.name, serializedValue)\n ).catch((e) => {\n errorInSync = e;\n });\n if (errorInSync) {\n throw errorInSync;\n }\n return thenable;\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n let stateFromStorage;\n const hydrate = () => {\n var _a;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => cb(get()));\n const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get())) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {\n if (storageValue) {\n return options.deserialize(storageValue);\n }\n }).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.getStorage) {\n storage = newOptions.getStorage();\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n hydrate();\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nexport { combine, devtools, persist, redux, subscribeWithSelector };\n","import { useState, useEffect } from \"react\";\nimport { immer } from \"zustand/middleware/immer\";\nimport create from \"zustand\";\nimport { devtools, persist } from \"zustand/middleware\";\nimport type { Account } from \"../../types\";\nimport { PROVIDER_ID } from \"../../constants\";\n\nexport const walletStoreSelector = (state: WalletStore) => ({\n accounts: state.accounts,\n activeAccount: state.activeAccount,\n setActiveAccount: state.setActiveAccount,\n clearActiveAccount: state.clearActiveAccount,\n addAccounts: state.addAccounts,\n removeAccounts: state.removeAccounts,\n});\n\nexport type WalletStore = {\n accounts: Account[];\n activeAccount: Account | null | undefined;\n setActiveAccount: (account: Account) => void;\n clearActiveAccount: (id: PROVIDER_ID) => void;\n addAccounts: (accounts: Account[]) => void;\n removeAccounts: (providerId: PROVIDER_ID) => void;\n};\n\nconst emptyState: WalletStore = {\n accounts: [],\n activeAccount: undefined,\n setActiveAccount: (account: Account) => {},\n clearActiveAccount: (id: PROVIDER_ID) => {},\n addAccounts: (accounts: Account[]) => {},\n removeAccounts: (providerId: PROVIDER_ID) => {},\n};\n\nexport const useWalletStore = create<WalletStore>()(\n immer(\n persist(\n devtools((set, _get) => ({\n accounts: [],\n activeAccount: null,\n setActiveAccount: (account: Account) => {\n set((state) => {\n state.activeAccount = account;\n });\n },\n clearActiveAccount: (id: PROVIDER_ID) => {\n set((state) => {\n if (id === state.activeAccount?.providerId)\n state.activeAccount = null;\n });\n },\n addAccounts: (accounts: Account[]) => {\n set((state) => {\n const uniqueAccounts = [...state.accounts, ...accounts].reduce<\n Account[]\n >((uniqueAccounts, o) => {\n if (\n !uniqueAccounts.some(\n (obj) =>\n obj.providerId === o.providerId && obj.address === o.address\n )\n ) {\n uniqueAccounts.push(o);\n }\n return uniqueAccounts;\n }, []);\n\n // Remove duplicates that occur when a user reconnects Pera wallet\n state.accounts = uniqueAccounts;\n });\n },\n removeAccounts: (providerId: PROVIDER_ID) => {\n set((state) => {\n state.accounts = state.accounts.filter(\n (account) => account.providerId !== providerId\n );\n });\n },\n })),\n {\n name: \"txnlab-use-wallet\", // key in local storage\n version: 1, // increment to deprecate stored data\n }\n )\n )\n);\n\n// This a fix to ensure zustand never hydrates the store before React hydrates the page\n// otherwise it causes a mismatch between SSR and client render\n// see: https://github.com/pmndrs/zustand/issues/1145\nexport const useHydratedWalletStore = ((selector, compare) => {\n const store = useWalletStore(selector, compare);\n const [hydrated, setHydrated] = useState(false);\n\n useEffect(() => setHydrated(true), []);\n\n return hydrated ? store : selector(emptyState);\n}) as typeof useWalletStore;\n","import { createContext } from \"react\";\nimport { PROVIDER_ID } from \"src/constants\";\nimport BaseWallet from \"../../clients/base\";\n\ntype Context = Partial<{ [key in PROVIDER_ID]: Promise<BaseWallet | null> }>;\n\nconst ClientContext = createContext<Context | null>(null);\n\nexport { ClientContext };\n\nexport default ClientContext.Provider;\n","export const audio =\n \"data:audio/mp3;base64,SUQzBAAAAAIYBlRJVDIAAAAWAAAAMTAgU2Vjb25kcyBvZiBTaWxlbmNlVFBFMQAAABIAAABBbmFyIFNvZnR3YXJlIExMQ1RBTEIAAAAMAAAAQmxhbmsgQXVkaW9BUElDAAIPAgAAAGltYWdlL2pwZWcAAwCJUE5HDQoaCgAAAA1JSERSAAAEOAAABDgIBgAAAOwQbI8AAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACD0AAAg9AQWVVbYAAAAHdElNRQffCgsFHDEDbwR2AAAgAElEQVR42uzde5RVZd0H8N8wDDcBAS8o6oCJVyxTsDSxojJvgVYq3jVNUQgzaZWmpqh56+ItNa+kr4Cay9Q0DQ1DWb2WeSm8pGRy0RAEgRFhuIzz/tFbC5yZc86eOWfmPDOfz1rvemvvZz9779+zz3DOt2fvXRER9QEAAACQsE5KAAAAAKROwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8BBq9pss81i4sSJMXToUMUAAACgaCoiol4ZaA177rln3HzzzdG/f/+oqamJww8/PGbNmqUwAAAAtJgZHLSKk046Ke67777o379/RET07t07pk6dGtXV1YoDAABAi5nBQcmde+65MW7cuEbXvfjii3HIIYfE2rVrFQoAAIBmq4yIC5WBUqioqIgf/ehHceqppzbZZosttohevXrFk08+qWAAAAA0/zdomMFBCVRWVsZPfvKTGD16dEHtjzrqqJgxY4bCAQAA0CwCDoquU6dOccMNN8SoUaMK3mbOnDkxYsSIWL16tQICAACQmVtUKLoLL7wwjj766Ezb9OnTJz788MP44x//qIAAAABkZgYHRXXyySfHxRdf3Kxt16xZEyNGjIg333xTIQEAAMjEa2Ipmv333z8mTpzY7O27dOnSou0BAADouMzgoCh23333uO+++6J79+4t7utLX/pSvPLKK4oKAABAwczgoMW22mqruOOOO4oSbkREjBs3TlEBAADIxAwOWqRTp05x3333xV577VW0Puvq6uIzn/lMzJ8/X4EBAAAo7PepEtASp59+elHDjYiIysrKOO200xQXAACAgpnBQbPtuuuu8cgjj0RVVVXR+66trY0999wzlixZotAAAADkZQYHzdKtW7e4/vrrSxJu/Kf/r3/96woNAABAQQQcNMv5558f22+/fUn3MWrUKIUGAACgIAIOMvvCF74Q3/jGN0q+nz322COqq6sVHAAAgLwEHGRSVVUVl156adH7Xbp0aaPLzeIAAACgEAIOMjn22GOLPqvimWeeic997nOxaNGiBusOOeQQRQcAACAvAQcF69GjR5x55plF7fOhhx6KI488MhYvXhxTp05tsH7IkCGx3XbbKT4AAAA5CTgo2De/+c3YbLPNitbfM888E+PGjYs1a9ZERMTkyZOjvr7hW4vN4gAAACAfAQcF6dOnT4wdO7Zo/S1dujTGjh0bdXV1/1321ltvxaxZsxq0HTFihAEAAAAgJwEHBfnWt74VvXv3Llp/Z555ZrzzzjsNlj/++OMNln3iE5+Irl27GgQAAACaJOAgr/79+8dJJ51UtP5uu+22RoOMiIhp06Y1WFZVVRWf+MQnDAQAAABNEnCQ19ixY6Nbt25F6evdd9+Nyy+/vMn1s2bNanRmx5577mkgAAAAaJKAg9wXSKdOMWrUqKL199Of/jQ++OCDnG0am90h4AAAACDn71clIJe99tor+vfvX5S+3njjjZgyZUredo0FHMOGDTMYAAAANEnAQU4jR44sWl8/+tGPYt26dXnbPf3007Fq1aoNlm2yySax7bbbGhAAAAAaJeCgSZWVlXHwwQcXpa9nn302HnvssYLarl69Ol588cUGyz/1qU8ZFAAAABol4KBJe++9d2y66aZF6euiiy7K1P6VV15psGyPPfYwKAAAADRKwEGTDjnkkKL088gjj8Rzzz2XaZuXX365wbKBAwcaFAAAABol4KBRnTt3joMOOqjF/axbty4uvfTSzNs1NoNjq622MjAAAAA0SsBBo/bZZ5/o27dvi/v5n//5n3jzzTczb/faa69FfX39BssGDBhgYAAAAGiUgINGFeOBnitWrIirrrqqWduuXr063n///Q2Wde/evSihCwAAAO2PgING7brrri3u46abborFixc3e/ulS5c2WOY2FQAAABoj4KBRQ4YMadH2a9eujV/+8pct6mPZsmUNlrlNBQAAgMYIOGigT58+LQ4SHnrooViyZEmL+mgs4DCDAwAAgMYIOGhg8ODBLe6jpbM3IiI++OCDBssEHAAAADRGwEED/fr1a9H2s2bNiueee67Fx9HYA0UFHAAAADRGwEEDLX1TyaRJk4pyHJtvvnmDZZ7BAQAAQGMEHDTQkhkcy5YtiwceeKAox7HZZps1WNazZ08DBAAAQAMCDhro06dPs7e9++67o7a2tsXH0KVLl+jdu3eD5Z07dzZAAAAANCDgoIHKyspmbVdfXx933nlnUY5hu+22K+qxAQAA0L4JOGhg5cqVzdpu+vTpMWfOnKIcw/7779/ocgEHAAAAjRFw0EBzA45ivBr2Pw488MBGl7tFBQAAgMYIOGjggw8+yLzN3Llz48knnyzK/rfaaqv4+Mc/3ug6AQcAAACNEXDQQHNmcEyePDk+/PDDouz/oIMOanKdW1QAAABojICDBpoTcDz22GNF2XePHj1i7NixTa4XcAAAANAYAQcNZL1FZc6cOfGPf/yjKPseP3589O/fv8n1Ag4AAAAaI+CggawzOKZNm1aU/W699dZx2mmn5WzjGRwAAAA0RsBBA1lncDz++ONF2e95550XXbt2zdmmWM/5AAAAoH0RcNBAlhkcNTU18ac//anF+9xzzz1j1KhRedstWrTIAAEAANCAgIMG3nnnnaivry+o7fTp02PdunUt2l9FRUVMnDixoLb/+te/DBAAAAANCDhoYPXq1bFw4cKC2hbj+RuHHXZYfPKTnyyo7YIFCwwQAAAADQg4aNScOXPytlm3bl1Mnz69Rfvp0aNH/OAHPyi4vYADAACAxgg4aNTcuXPztvnzn/8cNTU1LdrPuHHjcr4W9qMEHAAAADRGwEGjCgk4Xn/99RbtY6uttorTTz890zaewQEAAEBjBBw0qpBbVJYvX96ifVx55ZXRrVu3TNuYwQEAAEBjBBw0at68eXnbtCTgOO6442LEiBGZtxNwAAAA0JjOSkBjCpnBsWzZsmb1PXDgwLjgggsyb7dmzZp47733DA4AANCqKioqmr0sa9tCt1+3bl18+OGHBmc9Ao717LTTTrHjjju2yoVbqu1b+mFaf3ltbW3OW0h233336Ny5c6Z9VVRUxJgxY6JHjx6Zx2fBggVx4oknluRcy2Vcy+EPain2laVdSuea0nWVyjXoXNvn562tx6pcz7UUY9Xevos4V99FfBfxXaRcPgPl6OSTT45HH33UD/n1xzQi6pXh3yZMmBATJkxQCAAAAMraKaecEo888ohCrMcMjiJZvHhxo7ds1Nc3nh9lWZ61j6Zk7bu6ujp69+7dZH8LFiyIxYsXF3yM3bp1ix122KHZSens2bPj/fffb9b5t8U4pDDG5VyTVMcy6z6LcZ4pjHG51NvnNYyxz6ux7EDfF4yxsWwP36E68vf7Aw44IMaNG9fk+k6dPFJTwFEi1113Xdxyyy3t6py+973vxZlnntnk+nvvvTeuuOKKgvqqqqqK3/72t80ON9asWRNf/vKXY/Xq1S42AACg3dtpp51yrk/9FptSEPnQpL/97W851/fp06fgvs4666wYMmRIs4/lL3/5i3ADAADoMPI9QNQMjkZqogQ0ZdasWTnX9+3bt6B+9thjj/jWt77VomP54x//aEAAAIAOQ8CRnYrQpLfffjvna1kLmcHRrVu3uPbaa6OysrJFxzJz5kwDAgAAdBj5ntch4GikJkpALrlmcVRXV+fd/rzzzouPfexjLTqGVatWxQsvvGAwAACADsMMjuxUhJxyPYejuro6unbt2uT64cOHxze+8Y0WH8PMmTNj7dq1BgMAAOgw8s3g8JDRhgQc5JQr4OjUqVOTszM22WSTuOaaa4ryobvzzjsNBAAA0KHkm8HR0scAtEcCDnLK96DR7bffvtEP2o033hhbbrlli/c/Z86cmD59uoEAAAA6FLeoZKci5DRv3rxYvnx5k+sbCzjOOeecGD58eFH2f8cdd+SdmgUAANDeeMhodipCXrlmcXw04Dj44INj7NixRdnvqlWrYurUqQYAAADocMzgyE5FyCvXczjWDzgGDx4cV111VdH2e//990dNTY0BAAAAOpx8AYeHjDbUWQnIJ1fAsd1220VlZWV07949br/99ujZs2fR9jtp0iTFBwAAOiQzOLJTEfLKFXB06dIlqqur46qrrorBgwcXbZ9/+tOf4pVXXlF8AACgQxJwZKci5DV37tyct4pcfvnlcfDBBxd1nzfeeKPCAwAAHZaHjGanIhT0wXrppZeaXL/vvvsWdX9PPfVUTJs2TeEBAIAO/Tss5495AUfDmigBhch1m0oxrVu3Ls4//3wFBwAAOjS3qGSnIhQk16tii+n222+P2bNnKzgAANChCTiyUxEK0hozOBYvXhw/+9nPFBsAAOjwBBzZqQgFefPNN2PFihUl3cell16a82GmAAAAHYWAIzsVoeAP18svv1yy/l988cW45557FBoAACA8ZLQ5VISCvfLKKyX74J533nl5P8AAAAAdRb4ZHBUVFYr0EQIOCjJkyJA47LDDStL3TTfdFM8//7wiAwAA/D+3qGSnIuQ1aNCgmDJlSvTq1avofb/44otx2WWXKTIAAMB6BBzZqQg59e/fP+65557YbLPNit73+++/H6effnqsXbtWoQEAANYj4MhORWjSxhtvHFOnTo1tttmmJP1/73vfi7lz5yo0AABA1h/zAo6GNVECGtO9e/e46667YqeddipJ/1OnTo0HH3xQoQEAABphBkd2KkIDVVVVceutt8bQoUNL0v/rr78e5513nkIDAAA0QcCRnYqwgYqKirjmmmtixIgRJel/9erVcdppp8WqVasUGwAAoAkCjuxUhA1ccsklceihh5as/3PPPTf+/ve/KzQAAEAOAo7sOisBEf+euXHppZfGCSecULJ93HjjjTFlyhTFBgAAyCNfwFFRUaFIHyHgIDp16hQ//elPY/To0SXbxyOPPBKXXHKJYgMAABSgvr4+7+84NiTg6OgXQOfOce2115b0tpTnn38+xo8fn/cDCgAAwL+5RaUZv2+VoOOqqqqKG2+8MQ466KCS7WPevHlx4oknRm1trYIDAABlpbHbPJq69aNYywtt27lz7p/rAo6GBBxFMmzYsFi9enWbfwgKXV5VVRWjR4+OHXbYoWQ1qa2tjYcffjgOP/zwZp9j1vMs5R+jch3LcqxJKc+znGpVLv9QpjrGqX5e29sY+7waS2NsjP0b4zthR/hO2B4JOAQcJTNy5MgYOXKkQqynW7duMXbsWIUAAAAoMgFHQwKOIlm8eHEsW7aswfLGnjvR1LMoWtq2Keu3raioiIEDB0aPHj1KWo958+bF0qVLS16HLLVpzbEo13Mrh/PNcm6pjaVza/3jNZbOrb2dm3/v2te5+Qym9z3FZ9C5ldP3lL59+8a9994r4BBwtL7rrrsubrnllrI+xt69e8eUKVNKHm5ERBx88MGxZMkSFwYAAEAzbLLJJjnXCzgaqYkSdAz9+vWL++67L/bYY49W2V9r7QcAAKA98haV7FSkA+jdu3fce++9seuuu7baPocPH67wAAAAzSTgyE5F2rlu3brFHXfcEbvsskur7lfAAQAA0Hz5ni3Skd4YUygBRzvWuXPnuOmmm+LTn/50q+97p512ik033dQgAAAANIMZHNmpSDtVUVERP/vZz2K//fZrs/2bxQEAANA8Ao7sVKSduvDCC+Owww4r6T5mzpwZNTU1Ta7fd999DQQAAEAzCDiyU5F2aPz48XHKKaeUdB/PPfdcnHjiifHXv/61yTYCDgAAgObJF3BUVlYq0kcIONqZL37xi3H22WeXdB+vvvpqHHvssbFy5cp4/vnnm2y39dZbx6BBgwwKAABARh4ymp2Aox0ZOHBg/PznPy/phT537tw4+uijY/ny5RER8cILL+Rs7zkcAAAA2blFJTsVaSe6desWt956a2y88cYl28eiRYviqKOOioULF/53Wb6Aw20qAAAA2Qk4slORduLyyy+PIUOGlKz/mpqaOOqoo2LOnDkbLH/33XfjrbfeanK7ffbZx9QpAACAjPLdoiLgaKQmSpC+448/Po444oiS9V9bWxvHH398vPrqq42uzzWLo1+/fiUNXgAAANqrXLM4BByN1EQJ0rbHHnvExRdfXLL+161bF6eeemr8+c9/brKN21QAAACKL1fAYaZ8QwKOhHXp0iWuvfbaqKqqKkn/9fX1ceaZZ8YTTzyRs12uN6lEeNAoAABAc3+TNflj3gyOhjVRgnSNHz8+Pvaxj5Ws/x/+8Idx//335203a9asWLduXZPr99prr5KFMAAAAO1VXV1d0z/mBRwNa6IEadp2221j/PjxJev/5z//edx2220FtV21alW89tprTa7v3r17DB061KABAABkkOsWlcrKSgX6CAFHoq644oro0qVLSfr+/e9/H5dffnmmbfLdpuI5HAAAANl4Bkc2nZUgPV/72tdK9lyLN998M8aNG5f3ncsf9fzzz8dxxx3X5Prhw4fHj3/844iI2GSTTWLPPfeMXXbZJfr16xd9+/bd4P/36dMnVq5cGUuWLInFixfH4sWL//uf586dGzNmzIhly5a5EAAAgHbNW1SyEXAkpnfv3nHhhReWpO8PPvggvvGNb0RNTU3mbV988cWc63fbbbf42c9+Fp/61KcKem5Iz549Y/PNN290XV1dXTz77LPx+OOPx7Rp0+KNN95wYQAAAO2Oh4xmI+BIzLnnnhubbrppST44Z5xxRrz++uvN2n727NmxYsWK6NmzZ6Pru3TpEkceeWRRjrWysjL22muv2GuvveL888+PN998Mx577LG4+eabY+HChS4SAACgXTCDIxsVScigQYPimGOOKUnf11xzTTz66KMt+uDlm8VRKttuu22cfvrpMXPmzBg/fnzJnk0CAADQmgQc2ahIQk455ZSSXMRPPPFE/OQnP2n29hUVFXHEEUfE4MGD27Q+G220UZxzzjkxY8aMOPDAA10wAABA0gQc2ahIIjbeeOMYPXp00ft9880341vf+lbmh4r+xy677BIPPvhgXH311bHFFluURa0GDhwYt912W9x7772x8847u3gAAIAkeYtKNgKORBx33HHRo0ePon9YzjjjjGY9VLRXr15x8cUXx+9+97sYNmxYWdZs+PDh8dhjj8URRxzhAgIAAJLjIaPZqEgCqqqq4uSTTy56vzfffHM899xzmbf76le/Gk8//XScfPLJUVlZWfa1u/rqq2PChAkuJAAAICluUclGRRJwyCGHRP/+/Yva5z//+c+48sorM21TWVkZl156aVx//fVNvsK1XE2YMCGuuuqqqKqqckEBAABJyBVwlPv/2NwWBBwJGDNmTNE/JN/5zneitra24G169+4dd911V5x44onJ1nH06NFx1113Ra9evVxUAABA2fMMjmwEHGVu+PDhMWTIkKL2efvtt8ezzz5bcPuBAwfGb37zm/jc5z6XfD333XffeOCBB4o+IwYAAKDY3KKSjYqUua9+9atF7W/OnDlx2WWXFdz+05/+dDzyyCOx/fbbt5ua7rzzzvHLX/4yunXr5gIDAADKloeMZtNZCcpbsWdNfPe7341Vq1YV1PaTn/xkTJ06tV0GAbvttltcddVVcfrpp7vIAICSa2oqeTGWZ52mXoy+2+J8inGe5XTcxTjPFI67PV2zbTGWuZ4hKOAQcJTMgQceGNtss01RPwQbb7xxDBgwoGjHOH/+/Bg1alSMGjUq77H07NkzDjjggHY9y+GQQw6JwYMHx9///vd2/Y9WOf3x949W+/likuoXLWNsjP0w8m9MW/2NACg2AUcjf5cjojspCGQAACAASURBVF4Z/m3ChAleJwoAAEDZW7hwYey+++4KsR4zOIrk1Vdfjblz5zZY3tg9U03dR/XR5cOGDSvawzDnz58fL7zwQt5jiPj3cze22GKLDjN2a9eujccffzyWLVtWlHErZdumlOIYWvt8s9SgXMfHuXXMczOWzs25Ff/flfb8GfT3xbm5Tp1blrZPPPFEbLfddo22N4NDwFEyd999d9xyyy1F66+qqipeeeWVov2AP/zww2PevHl5206cOLFDhRv/qfWuu+4aX/jCF2LlypUuZgAAoCzU1dU1uU7A0UhNlKA8DR06NDbaaKOi9HXXXXcVFG7svffeccopp3TIeldXV8cZZ5zhwgMAAMpGrtfEVlZWKtBHCDjK1Gc/+9mi9LNy5cq4+uqr818InTrFxIkTO3TNTzvttBg0aJCLDwAAKAteE5uNipSpYr0e9t5774133303b7vRo0fHrrvu2qFr3qVLlw4f8gAAAOUj1wwOb3JqSMBRpnbaaaei9DN58uS8bXr27Blnn322okfEfvvtF1/84hcVAgAAaHO5Ag4zOBqpiRKUn169ekX37t1b3M9f//rXePnll/O2+/a3vx2bbbaZwv+/iy66KKqqqhQCAABoUwKObFSkDG2++eZF6WfKlCl522y55ZYd9sGiTdl2223j1FNPVQgAAKBNCTiy8ZrYMtS/f/8W97Fy5cr49a9/nbfdqFGjokuXLm1ynq+++mrceuutUV1dHQMHDozq6uqorq6OTTfdtM3HYMyYMXHzzTfH2rVrXZAAAECbEHBkI+AoQ8W4XeShhx6KFStW5G138MEHF/346+rq4sknn4y+ffvG0KFDm2zXp0+fmDp1aoPlgwYNimOOOSZGjx7dZmHHpptuGgcccED85je/cUECAABtItdbVDxktCGRTxkqxgyOQn6Y9+/fP2cAkdW8efPiyiuvjD333DOOP/74eOyxx3K233LLLaNnz54Nls+ZMyd+9KMfxdChQ+PUU0+Np556KucHu1SOO+44FyMAANBmzODIRkXKUEufwbF27dp45pln8rY76KCDipL6zZo1K4488sjYe++94+qrr4533nknIiJef/31vNvusMMOOc/j4YcfjiOPPDI+85nPxOOPP96q47DPPvvEoEGDXJAAAECbEHBkoyJlqKUBx1/+8pdYtWpV3nYHHnhgi/ZTU1MT5557bhx00EGNzrJ47bXX8vax/fbbF7SvuXPnxoknnhgTJ05stediVFRUxLHHHuuCBAAA2kSugCNCyNGgHkpQflp6i8rTTz+dt02/fv1i7733bvY+fv/738dnP/vZmDRpUtTV1TXaZv78+bFy5cqc/eSawfFR9fX1cdNNN8UhhxwS8+bNa5WxGD16tFfGAgAAbULAkY1qlKGWzuAoJODYb7/9orKysln9X3vttXHCCSfEokWLcrarr6+P2bNn52yTJeD4jxdffDG+/OUvt8oDQDfZZJM44IADXJQAAECry/csQg8a3ZCAo515//3348UXX8zbbtttt83c99q1a2PMmDFx+eWX500S/yPfbSrNCTgi/n17zJgxY+Luu+8ueU332WcfFxYAANDqzODIRjXK0OLFi5u97d///vcmbxlZX9++fTP3feGFF2aeNZHvQaNbb7119OjRo9nne/bZZ8dzzz1X0vHYY489XJQAAECrE3BkoxplaMmSJc3e9o033iioXZ8+fTL1e++998akSZMyH0++GRwVFRUxePDgZp/vmjVr4pvf/GYsXLiwZOOx0047Rffu3V2YAABAqxJwZKMaZaglAcc//vGPgtplmcHxt7/9Lb7//e8363gKeZNKc29T+Y+FCxfGySefHGvWrCnJeHTu3Dl22203FyYAANCqBBzZqEYZasktKsUOOJYsWRInn3xyrF69ulnH8/bbb8cHH3yQs01LA46IiOeff77ZIUwh3KYCAAC0Ng8ZzUbAUYbK6RaVCRMmxNtvv92iD2S+53AUI+CIiLjnnnvi97//fUnGRMABAAC0tnwBR3PfjNleCTjKUHNncHz44Ycxd+7cgtr27t07b5t58+bF448/3uLzKdWbVBpz0003lWRMdt99dxcmAADQqtyiko1qlKH58+c3a7sVK1bEunXrCmq7dOnSvG2mTJmSNzEsRL6Ao7q6Orp27VqU2s2cOTNefvnloo9J1oeyAgAAtJSAIxvVKEMvv/xyQQHERy1btqzgtvPmzcu5ft26dXHPPfcU5XzyBRydOnWK7bbbrmj1K8Usji5durgwAQCAViXgyEY1yvQifvrppzNvt3z58oLb5psl8sQTTxTt1aut8SaV9T344IPxzjvvFHVMKisr3d8GAAC0Kg8ZzUbAUaZmzJiReZssAUe+Z3X89re/Ldq5LFiwIN5///2cbYoZcKxduzZuu+22oo+JWRwAAEBrMoMjG9UoU80JOIp5i8qCBQuKej6t9SaV/5g8eXJRnh+yPgEHAADQmgQc2ahGmfrXv/4Vs2fPzrRNXV1dwW3z3aJS7Fs85syZk3N9MZ/BEfHvsKclr7dtTLEehAoAAFAIAUc2qlHGss7i6NevX8FtZ8+enfONK4sWLSrqueS7JWabbbYpev0KefZHpg+LPx4AAEArEnBk/M2mBOXrySefzNQ+S8BRU1MTzzzzTKPrVq1alfeZGVnluyWmR48esckmmxR1n8UMONatWxeLFy92UQIAAK3GQ0azEXCUsaeeeirTbRZZAo6IiGnTprXahyTfDI6I4s/iyPfcjyzeeuutnDNeAAAAii3fDA5vetyQgKOM1dXVxR133FFw+6wzIJoKOLp16xabbbZZUc+lkICjurq6qPss5gyOfM8QAQAAKDa3qGTTWQnK25QpU+K73/1uQW/w6NKlS2y00UbxwQcfFNT3vHnz4tVXX42dd965wbptttkm3n333aKdx8KFC2PNmjU5z2Prrbcuau1mz54d9fX1RZmR8uabb7oYAYAWaew7SVPfU4q1vFR9l/K4i3GOKZ9Pa49lW12brtnC2vfp00fAIeBofQceeGCjt1gU4wMzb968GDx4cEHHcfXVVzf5rIjG+m7qtouzzz670VkLLTmf2tranAHHkUceGdtvv31RvySsXLkyNtpooxaP79ChQ+P6669P8o95Of2R78hfQFI+n478BcQY+5Lph1HH+jem1NcVQLH5O/SRekREvTL824QJE2LChAkKAQAAQNnbb7/94uWXX1aI/2cGR5G89NJL8cYbbzRY3thTb5t6Em6utiNGjCjoIaJLliyJ6dOnZzqGvfbaKwYOHLjB+qVLl/73GR3NOd7Glu+5556xww47NHnsNTU18dBDDxWtZhERhx12WPTs2bPF43vPPffEihUrilKH1mrblHI93izbZ6lBSufr3NI9t/b6Gcxybq5T5+bc0vn7Yiydm3Nr23PLsv1ll10WJ5xwQpPH4hYVAUdJ/OpXv4pbbrmlZP1/9atfbfIWifX17ds3Lrjggli2bFnBfe+4444xffr0DaY39e3bN3784x/Hv/71r6Kdw5gxY+KCCy5ocn3Xrl3j+9//fqY/LvmMHDmyxQHH66+/Ht/5zndc5AAAQKvykNFsVCMRDz74YLz66qv5B7RTp/jsZz+bqe/XXnstHnvssQbL999//6KeQ743qXTt2jU233zzou6zR48eLe5jxowZLkAAAKDV5fsffwUcH6mHEqThww8/jIsvvrigtiNGjMjc/9VXX91g2UknnVTU9yoX8qrYYr5JZcCAAdG9e/cW9yPgAAAA2kJdXV3uH/QCjg3roQTp+MMf/hBPPfVU3nb77bdf5h/2s2bNismTJ2+wbLvttotDDz20aMc/f/78vG2qq6uLtr/dd9+9xX2sWbMm/vd//9fFBwAAtDq3qGSjGom56KKL8l7k/fr1i+OPP75Zfb/99tsbLPv+979f0MNNC7FixYpYsmRJzjblFnD8+c9/jlWrVrnwAACAVifgyEY1EvPKK6/Efffdl7fd6aefHt26dcvU9/vvvx/f/e53N1i29dZbxxlnnFG04583b17O9dtss03R9lWMgOP+++930QEAAG3CMziyUY0EXXHFFVFbW5uzzeabbx7HHnts5r5nzJgRt99++wbLli5dWrRjzxdwFGsGR/fu3WO33XZrUR+LFy8WcAAAAG3GMziyUY0ELViwIK677rq87caNGxddu3bN3P8Pf/jDuOeee/773996662iHXu+B40W6yGjX/nKV1r8BpU77rgj1qxZ44IDAADaRL5bVCoqKhRpPQKORF133XXxt7/9LWeb/v37xzHHHNOsD9GECRNi0qRJsWbNmgbP5WiJfAHHVlttVZQU8sgjj2zR9mvWrIk777zThQYAALQZz+DIRjUStW7duvj2t7+dd4bB+PHjY+ONN27WB+ncc8+NIUOGxAsvvFC04853i0pVVVVsscUWLdrHoEGDYq+99mpRH7/+9a/j3XffdaEBAABtRsCRjWok7LXXXosrr7wyZ5v+/fvH1Vdf3ex9fPDBB7F69eqiHXO+GRwRLX8Ox+jRo1s0VWvt2rVxww03uMAAAIA2JeDIRjUS94tf/CL+8pe/5Gyz//77x6mnnloWx7tgwYJYu3ZtzjYteZNKr169mnVbzvp+/vOfx+zZs11cAABAmxJwZKMa7eCCP+OMM2LVqlU525177rlFeW1qS9XV1eV9pkdLZnBMmDAhNt1002ZvP3v27BbNeAEAACjm772cP+gFHBvWQwnSN2fOnDj//PNztqmqqopf/OIX0bt37zY/3nzP4Wjum1R23HHHOOmkk1r0x+Oss87KO8MEAACgNXhNbDaq0U5MmTIlJk+enLPNNttsUxazE/I9h2PAgAHN6vfiiy+Ozp07N/u4Jk2aFM8995yLCQAAKAv19fW5f9ALODashxK0Hz/4wQ/i+eefz9nmgAMOiEsuuaRNPwj5Ao7m3GIycuTIGD58eLOP6aWXXorLLrvMRQQAAJQNt6hkoxrtyNq1a+Ob3/xm3tebnnTSSXHjjTdGly5d2uQ4892istlmm2Xqb8cdd8z7Nplc5syZE8ccc0ysXLnSRQQAAJQNt6hkoxrtzDvvvBNjxoyJdevW5Ww3cuTImDp1aps8kyPfDI5+/foV/EHdaqutYurUqbHxxhs361gWLlwYRx55ZN5QCAAAoLXlm8FRUVGhSOsRcLRDzzzzTJxzzjl579fae++949e//nVsscUWrXp8+QKOTp06Rb9+/fL207dv35g6dWqzj7+mpiaOPvrovDNKAAAA2oJncGSjGu3U5MmT49xzz83bbuedd46HH344dthhh1Y7tpqamli+fHnONvluU+nevXvceeedMXjw4GYdw4oVK+KEE06IV1991cUCAACUJc/gyEY12rFf/vKXBYUcAwYMiN/85jcxZsyYqKqqapVja8mDRgcMGBBTpkyJoUOHNmvfc+bMia985Svxpz/9yUUCAACULc/gyEY12rlJkyYVFHL06tUrLrjggpgxY0bsv//+JT+ufAFHUzM4Dj300Jg+fXp8+tOfbtZ+Z8yYEQceeGC8/vrrLg4AAKCsmcGRjWp0AJMmTYrzzjuvoLaDBg2KSZMmxa9+9avYZZddSnZM8+fPz7n+ozM4evfuHTfccEPccMMNzX4w6k033RTHHnts3ttjAAAAyoGAIxvV6CBuv/32OP/88wtuv88++8S0adPiJz/5SebXthYiywyOz3/+8/Hkk0/GoYce2qx91dTUxPjx42PixIl5p3gBAACUCwFHNp2VoOO47bbboqKiIi666KKC2nfq1CmOPvro+PrXvx5PPfVU/O53v4snnngiFi1a1OJjyRdwDB48OE477bQ46qijYvvtt2/2fh544IG48MILi3LMAAAArUnAkY2Ao4O59dZb4/3334+LLrooevXqVdA2Xbt2jf322y/222+/qK+vj+effz6mTZsW06ZNi9dee61Zx/Huu+/mXL///vu36Fkg//znP+Pss8+OmTNnGnQAACBJAo5sBBwd0D333BNPPfVUXHHFFfGlL30p07YVFRUxdOjQGDp0aJxzzjkxZ86cePzxx+Oll16KOXPmxNy5c/POlqisrIyuXbuW5NxWr14d1157bVx//fWxZs0agw0AACRLwJGNgKODWrBgQRx//PHxta99Lb73ve9FdXV1s/oZNGhQnHLKKRssW7lyZSxYsCBWrVoVq1evjtra2qitrY2qqqqorq6Orbbaquivo62trY2pU6fGjTfeGG+99ZYBBgAAkpcv4KioqFCk9Qg4Orj7778/HnzwwRg5cmSMGzcuhgwZ0uI+e/ToEdttt12rHH9NTU1MmjQpbr311liyZIkBBQAA2g0zOLIRcBB1dXXxwAMPxAMPPBCf//zn49RTT43hw4dH587le3ksXLgwbrnllrjzzjtjxYoVBhEAAGh3BBzZCDjYwB/+8If4wx/+EP369YsDDzwwRo4cGZ/5zGfKIuxYsWJFTJ8+PR599NF49NFHPWMDAABo1+rq6nKuF3BsSMBBo957772YPHlyTJ48+b9hx7777hvDhg2LAQMGtNpxLFq0KH73u9/FY489FjNnzoy1a9caHAAAoEMwgyMbAQd5rR92RERsscUWMWzYsBg6dGgMGzYshgwZEt26dSv6fi+++OL4xS9+EfX19QYBAADocPL9FhJwbEjAQWbvvPNOPPzww/Hwww//d1m/fv1iyy23jAEDBsSWW2753//cs2fPqKura/T/dtxxxxg2bFiT+6mtrRVuAAAAJdPUW0iKsTzrG04aa58vwBBw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AAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4A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/+MYxPkNE2IkGABNSVOQ7HM+7DuUt3Q7mjpUFmcjr1unl8NuVbD7m6plQSJtQIuLMFbkdTOVo4XNGpkZmZshRj5KVGyRR6oW/+MYxP8P82okOACTLDX0hZ/NMwIyV2MZOyleP56///LM+7JePftrs1g+k+jJlnog5CvNvjmcS3cDTZkDKhtl8r35yOV+jgtR/+MYxPoOQ2YYEABTSKmIjcsiPb5ZfXf7UH8zFxqUaDwmSPCizYFGwQGwyZIIX0pOLKIpjETlo1U/56E0qoAczJRAWM5G8HJA/+MYxPwK8148GABNSUZyKUXZ6Ik9o/PNrPO4Xd3k45s5ZbFOhlkKfJ2SMjFyc9KZLMjQ60Ps1iyQiQycScX711gnjk89MiiI/+MYxP8TC2oIAACTEM0f+Z/SNfy///f9lc5XLIHLMz46Yck2h2K0dtqT0bECVySOS9qTEGr9rfbPd2TQq7VMzuRDg3vYJJEn/+MYxO0ME2YcEABNSJ2RxzMIKcrhC0U0F3kImjyb03for+r/zq1OmMvJ/7vbWJlSA5zVyGFyjBs22U4ODIPh4hDbrVUbv/ln/+MYxPcNW2YcEABNSGWrMglL8cicpXM60b///+8h4bKpxqdMwhMvkpTs/hZPkDJUtJu2TccDTSJKRRGOl+v/1//9Omu/2pdE/+MYxPwPu2oQCABTLHWi9r07yp99tVRSsxysZJwFXKcDYBwxzjoPraIHIgUpiCmopmXHJwp268/L++7oMjOERqsPR/WT59fe/+MYxPgMU1ooGABTSLv/8+5at2WSQuEzX00HAFGyipKM5p5VFojkAmjknWmIKaimZccnBdUObf4ovk//MMX///X/yt/uOXlx/+MYxP8SW2IIAACTEKktqFqTxCJSJF/JNmSImOhln2AosFn0lTEFNRTMuOTguMlVVVVVVVVMQU1FMy45OC4yVVVVVVVVVVVV/+MYxPAMw2IgEABTSVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy45OC4yVVVVVVVVVVVV/+MYxPgK215IGACNTFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8MW2I4GABNSFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8Ks1oUGABTZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8AAANIAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEFHMTAgU2Vjb25kcyBvZiBTaWxlbmNlAAAAAAAAAAAAQW5hciBTb2Z0d2FyZSBMTEMAAAAAAAAAAAAAAAAAQmxhbmsgQXVkaW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8=\";\n","import type _algosdk from \"algosdk\";\nimport { PROVIDER_ID } from \"../../constants\";\nimport type {\n Asset,\n Wallet,\n AccountInfo,\n ConfirmedTxn,\n TxnType,\n TransactionsArray,\n TxnInfo,\n Metadata,\n} from \"../../types\";\nimport { audio } from \"../../media/audio\";\n\nconst getIsIOS = () => {\n if (typeof window !== \"undefined\") {\n return (\n /iPad|iPhone|iPod/.test(navigator?.userAgent) &&\n !(window as any)?.MSStream\n );\n } else {\n return false;\n }\n};\n\nconst isIOS = getIsIOS();\n\nabstract class BaseClient {\n algosdk: typeof _algosdk;\n algodClient: _algosdk.Algodv2;\n keepWCAlive: HTMLAudioElement;\n metadata: Metadata;\n\n static metadata: Metadata;\n\n abstract connect(onDisconnect: () => void): Promise<Wallet>;\n abstract disconnect(): Promise<void>;\n abstract reconnect(onDisconnect: () => void): Promise<Wallet | null>;\n abstract signTransactions(\n connectedAccounts: string[],\n transactions: Array<Uint8Array>,\n indexesToSign?: number[],\n returnGroup?: boolean\n ): Promise<Uint8Array[]>;\n\n protected constructor(\n metadata: Metadata,\n algosdk: typeof _algosdk,\n algodClient: _algosdk.Algodv2\n ) {\n this.algosdk = algosdk;\n this.algodClient = algodClient;\n this.keepWCAlive = new Audio();\n this.metadata = metadata;\n }\n\n async healthCheck() {\n return await this.algodClient.healthCheck().do();\n }\n\n async getAccountInfo(address: string) {\n const accountInfo = await this.algodClient.accountInformation(address).do();\n\n if (!accountInfo) {\n throw new Error(\"Unable to get account information\");\n }\n\n return accountInfo as AccountInfo;\n }\n\n async getAssets(address: string) {\n const accountInfo = await this.algodClient.accountInformation(address).do();\n\n if (!accountInfo || accountInfo.assets === undefined) {\n throw new Error(\"Unable to get account assets\");\n }\n\n return accountInfo.assets as Asset[];\n }\n\n async waitForConfirmation(txId: string, timeout = 4) {\n const confirmation = (await this.algosdk.waitForConfirmation(\n this.algodClient,\n txId,\n timeout\n )) as ConfirmedTxn;\n\n return { txId, ...confirmation };\n }\n\n decodeTransaction = (txn: string, isSigned: boolean) => {\n return isSigned\n ? this.algosdk.decodeSignedTransaction(\n new Uint8Array(Buffer.from(txn, \"base64\"))\n ).txn\n : this.algosdk.decodeUnsignedTransaction(\n new Uint8Array(Buffer.from(txn, \"base64\"))\n );\n };\n\n logEncodedTransaction(txn: string, isSigned: boolean) {\n const txnObj = this.decodeTransaction(txn, isSigned);\n\n console.log(\"TRANSACTION\", {\n isSigned,\n from: txnObj.from && this.algosdk.encodeAddress(txnObj.from.publicKey),\n to: txnObj.to && this.algosdk.encodeAddress(txnObj.to.publicKey),\n type: txnObj.type,\n txn: txnObj,\n });\n }\n\n groupTransactionsBySender(transactions: TransactionsArray) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function groupBy(objectArray: Record<string, any>[], property: string) {\n return objectArray.reduce(function (acc, obj) {\n const key = obj[property];\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(obj);\n return acc;\n }, {});\n }\n\n const decodedGroup = transactions.reduce(\n (acc: TxnInfo[], [type, txn], index) => {\n if (type === \"u\") {\n const decodedTxn = this.decodeTransaction(txn, false);\n const from = decodedTxn.from\n ? this.algosdk.encodeAddress(decodedTxn.from.publicKey)\n : \"\";\n const to = decodedTxn.to\n ? this.algosdk.encodeAddress(decodedTxn.to.publicKey)\n : \"\";\n const type = (decodedTxn.type as TxnType) || \"\";\n const amount = Number(decodedTxn.amount) || 0; // convert from bigint to number\n\n const txnObj = {\n groupIndex: index,\n amount,\n from,\n to,\n type,\n txn,\n };\n\n acc.push(txnObj);\n }\n\n return acc;\n },\n []\n );\n return groupBy(decodedGroup, \"from\");\n }\n\n async sendRawTransactions(\n transactions: Uint8Array[],\n waitRoundsToConfirm?: number\n ) {\n const sentTransaction = await this.algodClient\n .sendRawTransaction(transactions)\n .do();\n\n if (!sentTransaction) {\n throw new Error(\"Transaction failed.\");\n }\n\n const decodedTxn = this.algosdk.decodeSignedTransaction(transactions[0]);\n const waitRounds =\n waitRoundsToConfirm ||\n decodedTxn.txn.lastRound - decodedTxn.txn.firstRound;\n\n const confirmedTransaction = await this.waitForConfirmation(\n sentTransaction.txId,\n waitRounds\n );\n\n return {\n id: sentTransaction.txId,\n ...confirmedTransaction,\n };\n }\n\n keepWCAliveStart() {\n // Playing an audio file prevents Wallet Connect's\n // web socket connection from being dropped when\n // iOS goes into background mode\n\n if (!isIOS) {\n return;\n }\n\n this.keepWCAlive.src = audio;\n this.keepWCAlive.autoplay = true;\n this.keepWCAlive.volume = 0;\n this.keepWCAlive.loop = true;\n this.keepWCAlive.play();\n }\n\n keepWCAliveStop() {\n if (!isIOS) {\n return;\n }\n\n this.keepWCAlive.pause();\n }\n}\n\nexport default BaseClient;\n","export const ICON =\n \"data:image/svg+xml;base64,\" +\n \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNzcgMTg3Ij48cmVjdCB4PSItMTEuMzgiIHk9Ii0yNS45NyIgd2lkdGg9IjIwMC4wMiIgaGVpZ2h0PSIyMzEuNTMiIHN0eWxlPSJmaWxsOiNmZTU7Ii8+PHBhdGggZD0iTTk0LjA1LDU5LjYxYzIuMDUsOC40OCwxLjM2LDE1Ljk0LTEuNTUsMTYuNjYtMi45LC43Mi02LjkxLTUuNTctOC45Ni0xNC4wNS0yLjA1LTguNDgtMS4zNi0xNS45NCwxLjU1LTE2LjY2LDIuOS0uNzIsNi45MSw1LjU3LDguOTYsMTQuMDVaIiBzdHlsZT0iZmlsbDojMWMxYzFjOyIvPjxwYXRoIGQ9Ik0xMjcuODUsNjYuOWMtNC41My00LjgxLTEzLjU1LTMuNS0yMC4xNSwyLjkxLTYuNTksNi40MS04LjI2LDE1LjUtMy43MywyMC4zMSw0LjUzLDQuOCwxMy41NSwzLjUsMjAuMTUtMi45MXM4LjI2LTE1LjUsMy43My0yMC4zMVoiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTkxLjc5LDE0MC40N2MyLjktLjcyLDMuNDktOC42LDEuMzItMTcuNjEtMi4xNy05LTYuMjktMTUuNzEtOS4xOS0xNC45OS0yLjksLjcyLTMuNDksOC42LTEuMzIsMTcuNjEsMi4xNyw5LDYuMjksMTUuNzEsOS4xOSwxNC45OVoiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTYyLjIyLDcxLjNjOC4zNywyLjQ3LDE0LjQ4LDYuOCwxMy42Niw5LjY3LS44MywyLjg3LTguMjgsMy4yLTE2LjY1LC43My04LjM3LTIuNDctMTQuNDgtNi44LTEzLjY2LTkuNjcsLjgzLTIuODcsOC4yOC0zLjIsMTYuNjUtLjczWiIgc3R5bGU9ImZpbGw6IzFjMWMxYzsiLz48cGF0aCBkPSJNMTE2LjU0LDEwMy43NGM4Ljg4LDIuNjIsMTUuNDEsNy4wNywxNC41OSw5Ljk0LS44MywyLjg3LTguNywzLjA4LTE3LjU4LC40Ni04Ljg4LTIuNjItMTUuNDEtNy4wNy0xNC41OS05Ljk0LC44My0yLjg3LDguNy0zLjA4LDE3LjU4LS40NloiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTcxLjY0LDk3LjcxYy0yLjA4LTIuMTUtOC44OCwuOTgtMTUuMiw2Ljk5LTYuMzIsNi4wMS05Ljc2LDEyLjYzLTcuNjksMTQuNzgsMi4wOCwyLjE1LDguODgtLjk4LDE1LjItNi45OSw2LjMyLTYuMDEsOS43Ni0xMi42Myw3LjY5LTE0Ljc4WiIgc3R5bGU9ImZpbGw6IzFjMWMxYzsiLz48L3N2Zz4=\";\n","/**\n * Helpful resources:\n * https://github.com/perawallet/connect\n */\nimport type _algosdk from \"algosdk\";\nimport Algod, { getAlgodClient } from \"../../algod\";\nimport type { PeraWalletConnect } from \"@perawallet/connect\";\nimport type {\n Wallet,\n TransactionsArray,\n DecodedTransaction,\n DecodedSignedTransaction,\n Network,\n} from \"../../types\";\nimport { PROVIDER_ID, DEFAULT_NETWORK } from \"../../constants\";\nimport BaseWallet from \"../base\";\nimport { ICON } from \"./constants\";\nimport {\n PeraTransaction,\n PeraWalletClientConstructor,\n InitParams,\n} from \"./types\";\n\nclass PeraWalletClient extends BaseWallet {\n #client: PeraWalletConnect;\n network: Network;\n\n constructor({\n metadata,\n client,\n algosdk,\n algodClient,\n network,\n }: PeraWalletClientConstructor) {\n super(metadata, algosdk, algodClient);\n this.#client = client;\n this.network = network;\n this.metadata = PeraWalletClient.metadata;\n }\n\n static metadata = {\n id: PROVIDER_ID.PERA,\n name: \"Pera\",\n icon: ICON,\n isWalletConnect: true,\n };\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n algosdkStatic,\n network = DEFAULT_NETWORK,\n }: InitParams) {\n try {\n const PeraWalletConnect =\n clientStatic || (await import(\"@perawallet/connect\")).PeraWalletConnect;\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk;\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n\n const peraWallet = new PeraWalletConnect({\n ...(clientOptions ? clientOptions : { shouldShowSignTxnToast: false }),\n });\n\n return new PeraWalletClient({\n metadata: PeraWalletClient.metadata,\n client: peraWallet,\n algosdk,\n algodClient,\n network,\n });\n } catch (e) {\n console.error(\"Error initializing...\", e);\n return null;\n }\n }\n\n async connect(onDisconnect: () => void): Promise<Wallet> {\n const accounts = await this.#client.connect();\n\n this.#client.connector?.on(\"disconnect\", onDisconnect);\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${PeraWalletClient.metadata.id}`);\n }\n\n const mappedAccounts = accounts.map((address: string, index: number) => ({\n name: `Pera Wallet ${index + 1}`,\n address,\n providerId: PeraWalletClient.metadata.id,\n }));\n\n return {\n ...PeraWalletClient.metadata,\n accounts: mappedAccounts,\n };\n }\n\n async reconnect(onDisconnect: () => void) {\n const accounts = await this.#client.reconnectSession().catch(console.info);\n\n this.#client.connector?.on(\"disconnect\", onDisconnect);\n\n if (!accounts) {\n onDisconnect();\n return null;\n }\n\n return {\n ...PeraWalletClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Pera Wallet ${index + 1}`,\n address,\n providerId: PeraWalletClient.metadata.id,\n })),\n };\n }\n\n async disconnect() {\n await this.#client.disconnect();\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn);\n }) as Array<DecodedTransaction | DecodedSignedTransaction>;\n\n const signedIndexes: number[] = [];\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<PeraTransaction[]>((acc, txn, i) => {\n const isSigned = \"txn\" in txn;\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i);\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n });\n // If the indexes to be signed is specified, but it's not included in it,\n // designate that it should not be signed\n } else if (\n indexesToSign &&\n indexesToSign.length &&\n !indexesToSign.includes(i)\n ) {\n acc.push({\n txn: isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn\n : this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: [],\n });\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (\n !isSigned &&\n connectedAccounts.includes(this.algosdk.encodeAddress(txn[\"snd\"]))\n ) {\n signedIndexes.push(i);\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n });\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: this.algosdk.decodeSignedTransaction(transactions[i]).txn,\n signers: [],\n });\n } else if (!isSigned) {\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: [],\n });\n }\n\n return acc;\n }, []);\n\n // Sign them with the client.\n const result = await this.#client.signTransaction([txnsToSign]);\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift();\n signedByUser && acc.push(signedByUser);\n } else if (returnGroup) {\n acc.push(transactions[i]);\n }\n\n return acc;\n }, []);\n\n return signedTxns;\n }\n}\n\nexport default PeraWalletClient;\n","export const ICON =\n \"data:image/svg+xml;base64,\" +\n \"PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogIDxjaXJjbGUgZmlsbD0iIzI0NUVDNiIgY3g9IjE2IiBjeT0iMTYiIHI9IjE2Ii8+CiAgPHBvbHlnb24gZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIxMi40LDIxLjIgMTQuNSwyMS4yIDE1LjMsMTkuOSAxNi42LDE3LjYgMTguMSwxNC45IDE5LjksMTEuNyAyMC4yLDExLjIgMjAuMywxMS43IDIyLjksMjEuMiAyNSwyMS4yIDIxLjUsOC45IDIxLjQsOC42IDE5LjUsOC42IDE5LjUsOC43IDE3LjgsMTEuOCAxNiwxNC45IDE1LjgsMTQuMSAxNS4yLDExLjcgMTUuMSwxMS41IDE0LjQsOC45IDE0LjMsOC42IDEyLjQsOC42IDEyLjQsOC43IDEwLjcsMTEuOCA4LjksMTUgNy4xLDE4IDUuMywyMS4yIDcuNCwyMS4yIDkuMiwxOCAxMSwxNC44IDEyLjgsMTEuNiAxMy4xLDExLjEgMTMuMiwxMS42IDEzLjcsMTMuNyAxNC40LDE2LjMgMTQuNiwxNy4yIDE0LjIsMTgiLz4KPC9zdmc+\";\n","/**\n * Helpful resources:\n * https://github.com/randlabs/myalgo-connect\n */\nimport BaseWallet from \"../base\";\nimport type _MyAlgoConnect from \"@randlabs/myalgo-connect\";\nimport type _algosdk from \"algosdk\";\nimport Algod, { getAlgodClient } from \"../../algod\";\nimport { DEFAULT_NETWORK, PROVIDER_ID } from \"../../constants\";\nimport {\n TransactionsArray,\n DecodedTransaction,\n DecodedSignedTransaction,\n Network,\n} from \"../../types\";\nimport { MyAlgoWalletClientConstructor, InitParams } from \"./types\";\nimport { ICON } from \"./constants\";\n\nclass MyAlgoWalletClient extends BaseWallet {\n #client: _MyAlgoConnect;\n network: Network;\n\n constructor({\n metadata,\n client,\n algosdk,\n algodClient,\n network,\n }: MyAlgoWalletClientConstructor) {\n super(metadata, algosdk, algodClient);\n this.#client = client;\n this.network = network;\n this.metadata = MyAlgoWalletClient.metadata;\n }\n\n static metadata = {\n id: PROVIDER_ID.MYALGO,\n name: \"MyAlgo\",\n icon: ICON,\n isWalletConnect: false,\n };\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n algosdkStatic,\n network = DEFAULT_NETWORK,\n }: InitParams) {\n try {\n const MyAlgoConnect =\n clientStatic || (await import(\"@randlabs/myalgo-connect\")).default;\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk;\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n\n const myAlgo = new MyAlgoConnect({\n ...(clientOptions ? clientOptions : { disableLedgerNano: false }),\n });\n\n return new MyAlgoWalletClient({\n metadata: MyAlgoWalletClient.metadata,\n client: myAlgo,\n algosdk: algosdk,\n algodClient: algodClient,\n network,\n });\n } catch (e) {\n console.error(\"Error initializing...\", e);\n return null;\n }\n }\n\n async connect() {\n const accounts = await this.#client.connect();\n\n if (accounts.length === 0) {\n throw new Error(\n `No accounts found for ${MyAlgoWalletClient.metadata.id}`\n );\n }\n\n const mappedAccounts = accounts.map((account) => ({\n ...account,\n providerId: MyAlgoWalletClient.metadata.id,\n }));\n\n return {\n ...MyAlgoWalletClient.metadata,\n accounts: mappedAccounts,\n };\n }\n\n async reconnect() {\n return null;\n }\n\n async disconnect() {\n return;\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn);\n }) as Array<DecodedTransaction | DecodedSignedTransaction>;\n\n const signedIndexes: number[] = [];\n\n // Get the transactions to be signed\n const txnsToSign = decodedTxns.reduce<Uint8Array[]>((acc, txn, i) => {\n const isSigned = \"txn\" in txn;\n\n // If the indexes to be signed is specified, add it to the transactions to be signed,\n if (indexesToSign && indexesToSign.length && indexesToSign?.includes(i)) {\n signedIndexes.push(i);\n acc.push(transactions[i]);\n // Otherwise, if the transaction is unsigned and is to be sent from a connected account,\n // add it to the transactions to be signed\n } else if (\n !isSigned &&\n connectedAccounts.includes(this.algosdk.encodeAddress(txn[\"snd\"]))\n ) {\n signedIndexes.push(i);\n acc.push(transactions[i]);\n }\n\n return acc;\n }, []);\n\n // Sign them with the client.\n const result = await this.#client.signTransaction(txnsToSign);\n\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()?.blob;\n signedByUser && acc.push(signedByUser);\n } else if (returnGroup) {\n acc.push(txn);\n }\n\n return acc;\n }, []);\n\n return signedTxns;\n }\n}\n\nexport default MyAlgoWalletClient;\n","export const ICON =\n \"data:image/svg+xml;base64,\" +\n \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzZXJpZj0iaHR0cDovL3d3dy5zZXJpZi5jb20vIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjI7Ij4KICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjEwMjQiLz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEuNjgyMDksMCwwLDEuNjgyMDksMjI2LjM2OCwyMTIuODE4KSI+CiAgICAgICAgPHBhdGggZD0iTTMyNy4wNDksMjgwLjE5MkwxNjkuNTI0LDEzTDEyLDI4MC4xOTJMMTY5LjUyNCwxODkuMDg0TDMyNy4wNDksMjgwLjE5MloiIHN0eWxlPSJmaWxsOndoaXRlO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMS42ODIwOSwwLDAsMS42ODIwOSwyMjYuMzY4LDIxMi44MTgpIj4KICAgICAgICA8cGF0aCBkPSJNMjk5LjU0NiwzMDdMMTY5LjUyNSwyMzguNDczTDM5LjUwNCwzMDdMMTY5LjUyNSwyNjQuNjdMMjk5LjU0NiwzMDdaIiBzdHlsZT0iZmlsbDp3aGl0ZTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgIDwvZz4KPC9zdmc+Cg==\";\n","/**\n * Helpful resources:\n * https://github.com/blockshake-io/defly-connect\n */\nimport type _algosdk from \"algosdk\";\nimport Algod, { getAlgodClient } from \"../../algod\";\nimport type { Wallet } from \"../../types\";\nimport { DEFAULT_NETWORK, PROVIDER_ID } from \"../../constants\";\nimport BaseWallet from \"../base\";\nimport { TransactionsArray } from \"../../types\";\nimport type { DeflyWalletConnect } from \"@blockshake/defly-connect\";\nimport type {\n DecodedTransaction,\n DecodedSignedTransaction,\n Network,\n} from \"../../types\";\nimport { ICON } from \"./constants\";\nimport {\n DeflyTransaction,\n InitParams,\n DeflyWalletClientConstructor,\n} from \"./types\";\n\nclass DeflyWalletClient extends BaseWallet {\n #client: DeflyWalletConnect;\n network: Network;\n\n constructor({\n metadata,\n client,\n algosdk,\n algodClient,\n network,\n }: DeflyWalletClientConstructor) {\n super(metadata, algosdk, algodClient);\n this.#client = client;\n this.network = network;\n this.metadata = DeflyWalletClient.metadata;\n }\n\n static metadata = {\n id: PROVIDER_ID.DEFLY,\n name: \"Defly\",\n icon: ICON,\n isWalletConnect: true,\n };\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n algosdkStatic,\n network = DEFAULT_NETWORK,\n }: InitParams) {\n try {\n const DeflyWalletConnect =\n clientStatic ||\n (await import(\"@blockshake/defly-connect\")).DeflyWalletConnect;\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk;\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n\n const deflyWallet = new DeflyWalletConnect({\n ...(clientOptions ? clientOptions : { shouldShowSignTxnToast: false }),\n });\n\n return new DeflyWalletClient({\n metadata: DeflyWalletClient.metadata,\n client: deflyWallet,\n algosdk,\n algodClient,\n network,\n });\n } catch (e) {\n console.error(\"Error initializing...\", e);\n return null;\n }\n }\n\n async connect(onDisconnect: () => void): Promise<Wallet> {\n const accounts = await this.#client.connect().catch(console.info);\n\n this.#client.connector?.on(\"disconnect\", onDisconnect);\n\n if (!accounts || accounts.length === 0) {\n throw new Error(`No accounts found for ${DeflyWalletClient.metadata.id}`);\n }\n\n const mappedAccounts = accounts.map((address: string, index: number) => ({\n name: `Defly Wallet ${index + 1}`,\n address,\n providerId: DeflyWalletClient.metadata.id,\n }));\n\n return {\n ...DeflyWalletClient.metadata,\n accounts: mappedAccounts,\n };\n }\n\n async reconnect(onDisconnect: () => void) {\n const accounts = await this.#client.reconnectSession().catch(console.info);\n this.#client.connector?.on(\"disconnect\", onDisconnect);\n\n if (!accounts) {\n return null;\n }\n\n return {\n ...DeflyWalletClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Defly Wallet ${index + 1}`,\n address,\n providerId: DeflyWalletClient.metadata.id,\n })),\n };\n }\n\n async disconnect() {\n await this.#client.disconnect();\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn);\n }) as Array<DecodedTransaction | DecodedSignedTransaction>;\n\n const signedIndexes: number[] = [];\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<DeflyTransaction[]>((acc, txn, i) => {\n const isSigned = \"txn\" in txn;\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i);\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n });\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (\n !isSigned &&\n connectedAccounts.includes(this.algosdk.encodeAddress(txn[\"snd\"]))\n ) {\n signedIndexes.push(i);\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n });\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: this.algosdk.decodeSignedTransaction(transactions[i]).txn,\n signers: [],\n });\n } else if (!isSigned) {\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: [],\n });\n }\n\n return acc;\n }, []);\n\n // Sign them with the client.\n const result = await this.#client.signTransaction([txnsToSign]);\n\n // Join the newly signed transactions with the original group of transactions\n // if 'returnGroup' param is specified\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift();\n signedByUser && acc.push(signedByUser);\n } else if (returnGroup) {\n acc.push(transactions[i]);\n }\n\n return acc;\n }, []);\n\n return signedTxns;\n }\n}\n\nexport default DeflyWalletClient;\n","export const ICON =\n \"data:image/svg+xml;base64,\" +\n \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI2LjUuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMDAgMzAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMDAgMzAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6dXJsKCNTVkdJRF8xXyk7fQoJLnN0MXtmaWxsOnVybCgjU1ZHSURfMDAwMDAwNDM0MjYxNjcxNDAxMDY1ODIyNzAwMDAwMDIxMzA3Njg5MDYwNzMxMTM0ODRfKTt9Cgkuc3Qye2ZpbGw6dXJsKCNTVkdJRF8wMDAwMDEwMjUxOTMxNjAxNTI3NjU4MTY0MDAwMDAxNjI3NDExMjM4MzE3NTY0MTc1OV8pO2ZpbHRlcjp1cmwoI0Fkb2JlX09wYWNpdHlNYXNrRmlsdGVyKTt9Cgkuc3Qze2ZpbGw6dXJsKCNTVkdJRF8wMDAwMDEzODU2MzM4MjQ2MjA4NjAyMDM1MDAwMDAxNDg3ODQ5MDI3MDc4MjA3MTIwN18pO30KCS5zdDR7bWFzazp1cmwoI21hc2swXzE2NjFfMjk1XzAwMDAwMDg4MTMyMjUxNTk3NDQxNTczNDkwMDAwMDExNjkzNjEyMDE4NTA2NjgxNDgxXyk7fQoJLnN0NXtmaWxsOnVybCgjU1ZHSURfMDAwMDAxMDYxMjA2MzI0NjE3OTI4NzExNjAwMDAwMDc0MzM5MTMwMzgzMzc3NjY1NzZfKTt9Cjwvc3R5bGU+CjxnPgoJCgkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyNDYuNjAzIiB5MT0iOS4yMjEyIiB4Mj0iMTc0LjE1OCIgeTI9IjMwOC41NDI2IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQkZCRTAiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjc0LjcsOTMuOUwxNjYuNiwyM3YzOS42bDY5LjQsNDUuMWwtOC4yLDI1LjhoLTYxLjJ2MzIuOWg2MS4ybDguMiwyNS44bC02OS40LDQ1LjFWMjc3bDEwOC4yLTcwLjdMMjU3LDE1MC4xCgkJTDI3NC43LDkzLjl6Ii8+CgkKCQk8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzAwMDAwMDE4MjI4MjM3MTUxMjM5MTUxMzIwMDAwMDE3ODM4NjY0MjU5NzY2MjczOTI1XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMjkuMzUxNiIgeTE9Ii0xOS4xNTczIiB4Mj0iNTYuOTA2NiIgeTI9IjI4MC4xNjQxIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQkZCRTAiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMDE4MjI4MjM3MTUxMjM5MTUxMzIwMDAwMDE3ODM4NjY0MjU5NzY2MjczOTI1Xyk7IiBkPSJNNzIuNSwxNjYuNGg2MXYtMzIuOUg3Mi4ybC03LjktMjUuOAoJCWw2OS4yLTQ1LjFWMjNMMjUuMyw5My45TDQzLDE1MC4xbC0xNy43LDU2LjJMMTMzLjcsMjc3di0zOS42bC02OS40LTQ1LjFMNzIuNSwxNjYuNHoiLz4KCTxkZWZzPgoJCTxmaWx0ZXIgaWQ9IkFkb2JlX09wYWNpdHlNYXNrRmlsdGVyIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjI1LjQiIHk9IjIzIiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0Ij4KCQkJPGZlQ29sb3JNYXRyaXggIHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIxIDAgMCAwIDAgIDAgMSAwIDAgMCAgMCAwIDEgMCAwICAwIDAgMCAxIDAiLz4KCQk8L2ZpbHRlcj4KCTwvZGVmcz4KCQoJCTxtYXNrIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjI1LjQiIHk9IjIzIiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0IiBpZD0ibWFzazBfMTY2MV8yOTVfMDAwMDAwODgxMzIyNTE1OTc0NDE1NzM0OTAwMDAwMTE2OTM2MTIwMTg1MDY2ODE0ODFfIj4KCQkKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8wMDAwMDE2NTkyOTcyNDMwMzE2NDIwMzAwMDAwMDAwNzEwMTkwNDk4NDUxOTkxNTE2Ml8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMjQ2LjYwMzgiIHkxPSI5LjIyMTQiIHgyPSIxNzQuMTU4OCIgeTI9IjMwOC41NDI4IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMwQjQ2RjkiLz4KCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0JCRkJFMCIvPgoJCTwvbGluZWFyR3JhZGllbnQ+CgkJPHBhdGggc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF8wMDAwMDE2NTkyOTcyNDMwMzE2NDIwMzAwMDAwMDAwNzEwMTkwNDk4NDUxOTkxNTE2Ml8pO2ZpbHRlcjp1cmwoI0Fkb2JlX09wYWNpdHlNYXNrRmlsdGVyKTsiIGQ9IgoJCQlNMjc0LjcsOTMuOUwxNjYuNiwyM3YzOS42bDY5LjQsNDUuMWwtOC4yLDI1LjhoLTYxLjJ2MzIuOWg2MS4ybDguMiwyNS44bC02OS40LDQ1LjFWMjc3bDEwOC4yLTcwLjdMMjU3LDE1MC4xTDI3NC43LDkzLjl6Ii8+CgkJCgkJCTxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMDAwMDAxMTk4MTE3MDc2MjE0NzI4MTQyNzAwMDAwMTA4Mjk2NTkzODM4NTEyMDI0OTFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjEyOS4zNTIxIiB5MT0iLTE5LjE1NzEiIHgyPSI1Ni45MDcxIiB5Mj0iMjgwLjE2NDIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAzMDIpIj4KCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCQk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojQkJGQkUwIi8+CgkJPC9saW5lYXJHcmFkaWVudD4KCQk8cGF0aCBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTE5ODExNzA3NjIxNDcyODE0MjcwMDAwMDEwODI5NjU5MzgzODUxMjAyNDkxXyk7IiBkPSJNNzIuNSwxNjYuNGg2MXYtMzIuOUg3Mi4ybC03LjktMjUuOAoJCQlsNjkuMi00NS4xVjIzTDI1LjMsOTMuOUw0MywxNTAuMWwtMTcuNyw1Ni4yTDEzMy43LDI3N3YtMzkuNmwtNjkuNC00NS4xTDcyLjUsMTY2LjR6Ii8+Cgk8L21hc2s+Cgk8ZyBjbGFzcz0ic3Q0Ij4KCQkKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8wMDAwMDEwOTAxOTkxODU1Nzc3MzA1MzQyMDAwMDAxNzYwMjQwNTkwODA2NzEyMDMwMF8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNDYuNDY2MiIgeTE9IjIyOC43NTU0IiB4Mj0iMTcxLjg2MzgiIHkyPSIxMzUuMTAzOSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDMwMikiPgoJCQk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiM4OTUyRkY7c3RvcC1vcGFjaXR5OjAuODciLz4KCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0RBQkRGRjtzdG9wLW9wYWNpdHk6MCIvPgoJCTwvbGluZWFyR3JhZGllbnQ+CgkJCgkJCTxyZWN0IHg9IjI1LjQiIHk9IjIzIiBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTA5MDE5OTE4NTU3NzczMDUzNDIwMDAwMDE3NjAyNDA1OTA4MDY3MTIwMzAwXyk7IiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+Cg==\";\n","/**\n * Helpful resources:\n * https://docs.exodus.com/api-reference/algorand-provider-api/\n */\nimport type _algosdk from \"algosdk\";\nimport BaseWallet from \"../base\";\nimport Algod, { getAlgodClient } from \"../../algod\";\nimport { DEFAULT_NETWORK, PROVIDER_ID } from \"../../constants\";\nimport type {\n TransactionsArray,\n DecodedTransaction,\n DecodedSignedTransaction,\n Network,\n} from \"../../types\";\nimport { ICON } from \"./constants\";\nimport {\n InitParams,\n WindowExtended,\n Exodus,\n ExodusClientConstructor,\n} from \"./types\";\n\nclass ExodusClient extends BaseWallet {\n #client: Exodus;\n #onlyIfTrusted: boolean;\n network: Network;\n\n constructor({\n metadata,\n client,\n algosdk,\n algodClient,\n onlyIfTrusted,\n network,\n }: ExodusClientConstructor) {\n super(metadata, algosdk, algodClient);\n this.#client = client;\n this.#onlyIfTrusted = onlyIfTrusted;\n this.network = network;\n this.metadata = ExodusClient.metadata;\n }\n\n static metadata = {\n id: PROVIDER_ID.EXODUS,\n name: \"Exodus\",\n icon: ICON,\n isWalletConnect: false,\n };\n\n static async init({\n clientOptions,\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK,\n }: InitParams) {\n try {\n if (\n typeof window == \"undefined\" ||\n (window as WindowExtended).exodus === undefined\n ) {\n throw new Error(\"Exodus is not available.\");\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk;\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n const exodus = (window as WindowExtended).exodus.algorand as Exodus;\n\n return new ExodusClient({\n metadata: ExodusClient.metadata,\n id: PROVIDER_ID.EXODUS,\n client: exodus,\n algosdk: algosdk,\n algodClient: algodClient,\n onlyIfTrusted: clientOptions?.onlyIfTrusted || false,\n network,\n });\n } catch (e) {\n console.warn(e);\n console.warn(\n `Error initializing ${ExodusClient.metadata.name}.`,\n \"Do you have the extension installed?\",\n \"https://www.exodus.com/web3-wallet\"\n );\n return null;\n }\n }\n\n async connect() {\n const { address } = await this.#client.connect({\n onlyIfTrusted: this.#onlyIfTrusted,\n });\n\n if (!address) {\n throw new Error(`No accounts found for ${ExodusClient.metadata.id}`);\n }\n\n const accounts = [\n {\n name: `Exodus 1`,\n address,\n providerId: ExodusClient.metadata.id,\n },\n ];\n\n return {\n ...ExodusClient.metadata,\n accounts,\n };\n }\n\n async reconnect(onDisconnect: () => void) {\n if (\n window === undefined ||\n (window as WindowExtended).exodus === undefined ||\n (window as WindowExtended).exodus.algorand.isConnected !== true\n ) {\n onDisconnect();\n }\n\n return null;\n }\n\n async disconnect() {\n return;\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Array<Uint8Array>,\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn);\n }) as Array<DecodedTransaction | DecodedSignedTransaction>;\n\n const signedIndexes: number[] = [];\n\n // Get the unsigned transactions.\n const txnsToSign = decodedTxns.reduce<Uint8Array[]>((acc, txn, i) => {\n const isSigned = \"txn\" in txn;\n\n // If the indexes to be signed is specified\n // add it to the arrays of transactions to be signed.\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i);\n acc.push(transactions[i]);\n // If the transaction isn't already signed and is to be sent from a connected account,\n // add it to the arrays of transactions to be signed\n } else if (\n !isSigned &&\n connectedAccounts.includes(this.algosdk.encodeAddress(txn[\"snd\"]))\n ) {\n signedIndexes.push(i);\n acc.push(transactions[i]);\n }\n\n return acc;\n }, []);\n\n // Sign them with the client.\n const result = await this.#client.signTransaction(txnsToSign);\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift();\n signedByUser && acc.push(signedByUser);\n } else if (returnGroup) {\n acc.push(transactions[i]);\n }\n\n return acc;\n }, []);\n\n return signedTxns;\n }\n}\n\nexport default ExodusClient;\n","export const ICON =\n \"data:image/svg+xml;base64,\" +\n \"PHN2ZyB3aWR0aD0iMjM4IiBoZWlnaHQ9IjIzOCIgdmlld0JveD0iMCAwIDIzOCAyMzgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik01MS43MDUgMTQ1LjA0MkgxMTYuNzA1TDEwNy43MDUgMTU1LjA0Mkg1MS43MDVWMTQ1LjA0MloiIGZpbGw9IiNENjQ1MDAiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNDcuNTE5IDE5MS41NTdMMTI5LjU3NyAxNDQuMzk0TDE0Mi40MDQgMTI3LjExMkwxNjcuODc1IDE5MS41NTdIMTQ3LjUxOVpNMTEwLjkzNiA5NS4zOTMyTDEyMC42MTMgMTIwLjgzMUwxMzMuMzU5IDEwNC4yMjhMMTE3LjQ3NSA2NC4wNDIyQzExNS45MjggNjAuMTI4IDExMi4xNDYgNTcuNTU2NSAxMDcuOTM4IDU3LjU1NjVDMTAzLjcyOSA1Ny41NTY1IDk5Ljk0NzQgNjAuMTI4IDk4LjQwMDMgNjQuMDQyMkw2Ny45NjU5IDE0MS4wNDJIODcuNzgwN0M5NS40MTUzIDEyMS4wMTEgMTAyLjg5MyAxMDEuMzk5IDEwNS4xOTggOTUuMzU0MUMxMDUuNjQxIDk0LjE5MTIgMTA2Ljc0MyA5My40NTk5IDEwNy45ODcgOTMuNDU5OUgxMDguMTMyQzEwOS4zNzggOTMuNDU5OSAxMTAuNDkzIDk0LjIyOTMgMTEwLjkzNiA5NS4zOTMyWk04MC45MjEgMTU5LjA0MkM3NC45Mjg5IDE3NC43NjggNjkuODY2MSAxODguMDYzIDY4LjU0NDcgMTkxLjU1N0g0OEw2MC44NTE0IDE1OS4wNDJIODAuOTIxWiIgZmlsbD0iIzIyMkI2MCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE3Ni4wMjYgNTQuNzUwOUMxNzcuOTk3IDUyLjA4NzIgMTgxLjc1NCA1MS41MjU3IDE4NC40MTggNTMuNDk2N0MxODcuMDgyIDU1LjQ2NzggMTg3LjY0MyA1OS4yMjUxIDE4NS42NzIgNjEuODg4OEwxMzAuMDEzIDEzNy4xMDdDMTI5LjcxNCAxMzcuNTEyIDEyOS4zNDEgMTM3Ljg1NyAxMjguOTEzIDEzOC4xMjNMMTE3Ljg1NiAxNDUuMDEzQzExNy4wODcgMTQ1LjQ5MyAxMTYuMTI4IDE0NC43ODMgMTE2LjM2MSAxNDMuOTA3TDExOS43MTggMTMxLjMxOEMxMTkuODQ3IDEzMC44MzIgMTIwLjA2OCAxMzAuMzc0IDEyMC4zNjcgMTI5Ljk3TDE3MC42NyA2MS45ODlMMTY5LjkyOSA2MS40NDA1QzE2OS40ODUgNjEuMTEyIDE2OC44NTkgNjEuMjA1NiAxNjguNTMgNjEuNjQ5NkwxNTIuMzExIDgzLjU2ODhDMTUyLjU4NiA4NC4yMDIzIDE1Mi41MjQgODQuOTYxMiAxNTIuMDg0IDg1LjU1NjJMMTQ5LjExIDg5LjU3NTVDMTQ4LjQ1MyA5MC40NjM0IDE0Ny4yMDEgOTAuNjUwNiAxNDYuMzEzIDg5Ljk5MzZDMTQ1LjQyNSA4OS4zMzY2IDE0NS4yMzggODguMDg0MSAxNDUuODk1IDg3LjE5NjJMMTQ3LjY3OSA4NC43ODQ3TDE0OC44NjkgODMuMTc2OUwxNjcuMzA4IDU4LjI1NzRDMTY4LjYyMiA1Ni40ODE1IDE3MS4xMjcgNTYuMTA3MiAxNzIuOTAzIDU3LjQyMTJMMTczLjY0NCA1Ny45Njk3TDE3Ni4wMjYgNTQuNzUwOVoiIGZpbGw9IiNENjQ1MDAiLz4KPC9zdmc+Cg==\";\n\nexport const DEFAULT_NETWORK = \"MainNet\";\n","/**\n * Helpful resources:\n * https://github.com/PureStake/algosigner/blob/develop/docs/dApp-integration.md\n */\nimport type _algosdk from \"algosdk\";\nimport BaseWallet from \"../base\";\nimport Algod, { getAlgodClient } from \"../../algod\";\nimport { PROVIDER_ID, DEFAULT_NETWORK } from \"../../constants\";\nimport type {\n TransactionsArray,\n DecodedTransaction,\n DecodedSignedTransaction,\n Network,\n} from \"../../types\";\nimport { ICON } from \"./constants\";\nimport type {\n WindowExtended,\n AlgoSignerTransaction,\n SupportedLedgers,\n AlgoSigner,\n AlgoSignerClientConstructor,\n InitParams,\n} from \"./types\";\n\nconst getNetwork = (network: string): SupportedLedgers => {\n if (network === \"betanet\") {\n return \"BetaNet\";\n }\n\n if (network === \"testnet\") {\n return \"TestNet\";\n }\n\n if (network === \"mainnet\") {\n return \"MainNet\";\n }\n\n return network;\n};\n\nclass AlgoSignerClient extends BaseWallet {\n #client: AlgoSigner;\n network: Network;\n\n constructor({\n metadata,\n client,\n algosdk,\n algodClient,\n network,\n }: AlgoSignerClientConstructor) {\n super(metadata, algosdk, algodClient);\n this.#client = client;\n this.network = network;\n }\n\n static metadata = {\n id: PROVIDER_ID.ALGOSIGNER,\n name: \"AlgoSigner\",\n icon: ICON,\n isWalletConnect: false,\n };\n\n static async init({\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK,\n }: InitParams) {\n try {\n if (\n typeof window == \"undefined\" ||\n (window as WindowExtended).AlgoSigner === undefined\n ) {\n throw new Error(\"AlgoSigner is not available.\");\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk;\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n const algosigner = (window as WindowExtended).AlgoSigner as AlgoSigner;\n\n return new AlgoSignerClient({\n metadata: AlgoSignerClient.metadata,\n id: PROVIDER_ID.ALGOSIGNER,\n client: algosigner,\n algosdk: algosdk,\n algodClient: algodClient,\n network,\n });\n } catch (e) {\n console.warn(e);\n console.warn(\n `Error initializing ${AlgoSignerClient.metadata.name}.`,\n \"Do you have the extension installed?\",\n \"https://www.purestake.com/technology/algosigner\"\n );\n return null;\n }\n }\n\n async connect() {\n await this.#client.connect();\n\n const accounts = await this.#client.accounts({\n ledger: getNetwork(this.network),\n });\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${AlgoSignerClient.metadata.id}`);\n }\n\n const mappedAccounts = accounts.map(({ address }, index) => ({\n name: `AlgoSigner ${index + 1}`,\n address,\n providerId: AlgoSignerClient.metadata.id,\n }));\n\n return {\n ...AlgoSignerClient.metadata,\n accounts: mappedAccounts,\n };\n }\n\n async reconnect(onDisconnect: () => void) {\n if (\n window === undefined ||\n (window as WindowExtended).AlgoSigner === undefined\n ) {\n onDisconnect();\n }\n\n return null;\n }\n\n async disconnect() {\n return;\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn);\n }) as Array<DecodedTransaction | DecodedSignedTransaction>;\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<AlgoSignerTransaction[]>(\n (acc, txn, i) => {\n const isSigned = \"txn\" in txn;\n\n const txnObj: AlgoSignerTransaction = {\n txn: this.#client.encoding.msgpackToBase64(transactions[i]),\n };\n\n if (\n indexesToSign &&\n indexesToSign.length &&\n !indexesToSign.includes(i)\n ) {\n txnObj.txn = this.#client.encoding.msgpackToBase64(\n isSigned\n ? this.algosdk\n .decodeSignedTransaction(transactions[i])\n .txn.toByte()\n : this.algosdk.decodeUnsignedTransaction(transactions[i]).toByte()\n );\n txnObj.signers = [];\n } else if (\n !connectedAccounts.includes(\n this.algosdk.encodeAddress(isSigned ? txn.txn[\"snd\"] : txn[\"snd\"])\n )\n ) {\n txnObj.txn = this.#client.encoding.msgpackToBase64(\n isSigned\n ? this.algosdk\n .decodeSignedTransaction(transactions[i])\n .txn.toByte()\n : this.algosdk.decodeUnsignedTransaction(transactions[i]).toByte()\n );\n txnObj.signers = [];\n }\n\n acc.push(txnObj);\n\n return acc;\n },\n []\n );\n\n // Sign them with the client.\n const result = await this.#client.signTxn(txnsToSign);\n\n // Join the newly signed transactions with the original group of transactions\n // if 'returnGroup' param is specified\n const signedTxns = result.reduce<Uint8Array[]>((acc, txn, i) => {\n if (txn) {\n acc.push(new Uint8Array(Buffer.from(txn.blob, \"base64\")));\n } else if (returnGroup) {\n acc.push(transactions[i]);\n }\n\n return acc;\n }, []);\n\n return signedTxns;\n }\n}\n\nexport default AlgoSignerClient;\n","export const ICON =\n \"data:image/svg+xml;base64,\" +\n \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMzMzk2RkY7fQo8L3N0eWxlPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTI2LjYsMTY4YzYyLjYtNjEuMywxNjQuMi02MS4zLDIyNi44LDBsNy41LDcuNGMzLjEsMy4xLDMuMSw4LDAsMTEuMWwtMjUuOCwyNS4yYy0xLjYsMS41LTQuMSwxLjUtNS43LDAKCWwtMTAuNC0xMC4yYy00My43LTQyLjgtMTE0LjUtNDIuOC0xNTguMiwwbC0xMS4xLDEwLjljLTEuNiwxLjUtNC4xLDEuNS01LjcsMGwtMjUuOC0yNS4yYy0zLjEtMy4xLTMuMS04LDAtMTEuMUwxMjYuNiwxNjh6CgkgTTQwNi43LDIyMC4ybDIyLjksMjIuNWMzLjEsMy4xLDMuMSw4LDAsMTEuMUwzMjYuMiwzNTUuMWMtMy4xLDMuMS04LjIsMy4xLTExLjMsMGwtNzMuNC03MS45Yy0wLjgtMC44LTIuMS0wLjgtMi44LDBsLTczLjQsNzEuOQoJYy0zLjEsMy4xLTguMiwzLjEtMTEuMywwTDUwLjMsMjUzLjhjLTMuMS0zLjEtMy4xLTgsMC0xMS4xbDIyLjktMjIuNWMzLjEtMy4xLDguMi0zLjEsMTEuMywwbDczLjQsNzEuOWMwLjgsMC44LDIuMSwwLjgsMi44LDAKCWw3My40LTcxLjljMy4xLTMuMSw4LjItMy4xLDExLjMsMGw3My40LDcxLjljMC44LDAuOCwyLjEsMC44LDIuOCwwbDczLjQtNzEuOUMzOTguNSwyMTcuMSw0MDMuNiwyMTcuMSw0MDYuNywyMjAuMkw0MDYuNywyMjAuMnoiLz4KPC9zdmc+Cg==\";\n\nexport const DEFAULT_NETWORK = \"mainnet\";\n","/**\n * Helpful resources:\n * https://developer.algorand.org/docs/get-details/walletconnect/\n */\nimport type _algosdk from \"algosdk\";\nimport Algod, { getAlgodClient } from \"../../algod\";\nimport type WalletConnect from \"@walletconnect/client\";\nimport { PROVIDER_ID } from \"../../constants\";\nimport BaseWallet from \"../base\";\nimport { formatJsonRpcRequest } from \"@json-rpc-tools/utils\";\nimport {\n Wallet,\n TransactionsArray,\n DecodedTransaction,\n DecodedSignedTransaction,\n Network,\n} from \"../../types\";\nimport { DEFAULT_NETWORK, ICON } from \"./constants\";\nimport {\n WalletConnectClientConstructor,\n InitParams,\n WalletConnectTransaction,\n} from \"./types\";\n\nclass WalletConnectClient extends BaseWallet {\n #client: WalletConnect;\n network: Network;\n\n constructor({\n metadata,\n client,\n algosdk,\n algodClient,\n network,\n }: WalletConnectClientConstructor) {\n super(metadata, algosdk, algodClient);\n this.#client = client;\n this.network = network;\n this.metadata = WalletConnectClient.metadata;\n }\n\n static metadata = {\n id: PROVIDER_ID.WALLETCONNECT,\n name: \"WalletConnect\",\n icon: ICON,\n isWalletConnect: true,\n };\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n modalStatic,\n algosdkStatic,\n network = DEFAULT_NETWORK,\n }: InitParams) {\n try {\n const WalletConnect =\n clientStatic || (await import(\"@walletconnect/client\")).default;\n const QRCodeModal =\n modalStatic ||\n (await import(\"algorand-walletconnect-qrcode-modal\")).default;\n\n const walletConnect = new WalletConnect({\n bridge: \"https://bridge.walletconnect.org\",\n qrcodeModal: QRCodeModal,\n storageId: \"walletconnect-generic\",\n ...(clientOptions || {}),\n });\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk;\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n\n const initWallet: WalletConnectClientConstructor = {\n metadata: WalletConnectClient.metadata,\n client: walletConnect,\n algosdk: algosdk,\n algodClient: algodClient,\n network,\n };\n\n return new WalletConnectClient(initWallet);\n } catch (e) {\n console.error(\"Error initializing...\", e);\n return null;\n }\n }\n\n async connect(): Promise<Wallet> {\n let chainId = 416001;\n\n if (this.network === \"betanet\") {\n chainId = 416003;\n } else if (this.network === \"testnet\") {\n chainId = 416002;\n }\n\n if (!this.#client.connected) {\n await this.#client.createSession({ chainId });\n }\n\n return new Promise((resolve, reject) => {\n this.#client.on(\"connect\", (error, payload) => {\n if (error) {\n reject(error);\n }\n\n const { accounts } = payload.params[0];\n\n resolve({\n ...WalletConnectClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Wallet Connect ${index + 1}`,\n address,\n providerId: WalletConnectClient.metadata.id,\n })),\n });\n });\n\n this.#client.on(\"session_update\", (error, payload) => {\n if (error) {\n reject(error);\n }\n\n const { accounts } = payload.params[0];\n\n resolve({\n ...WalletConnectClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Wallet Connect ${index + 1}`,\n address,\n providerId: WalletConnectClient.metadata.id,\n })),\n });\n });\n });\n }\n\n async reconnect() {\n const accounts = this.#client.accounts;\n\n if (!accounts) {\n return null;\n }\n\n return {\n ...WalletConnectClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Wallet Connect ${index + 1}`,\n address,\n providerId: WalletConnectClient.metadata.id,\n })),\n };\n }\n\n check() {\n return this.#client.connected;\n }\n\n async disconnect() {\n try {\n await this.#client.killSession();\n } catch (e) {\n console.error(\"Error disconnecting\", e);\n }\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn);\n }) as Array<DecodedTransaction | DecodedSignedTransaction>;\n\n const signedIndexes: number[] = [];\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<WalletConnectTransaction[]>(\n (acc, txn, i) => {\n const isSigned = \"txn\" in txn;\n\n if (\n indexesToSign &&\n indexesToSign.length &&\n indexesToSign.includes(i)\n ) {\n signedIndexes.push(i);\n acc.push({\n txn: Buffer.from(transactions[i]).toString(\"base64\"),\n });\n } else if (\n !isSigned &&\n connectedAccounts.includes(this.algosdk.encodeAddress(txn[\"snd\"]))\n ) {\n signedIndexes.push(i);\n acc.push({\n txn: Buffer.from(transactions[i]).toString(\"base64\"),\n });\n } else {\n acc.push({\n txn: isSigned\n ? Buffer.from(\n this.algosdk.encodeUnsignedTransaction(\n this.algosdk.decodeSignedTransaction(transactions[i]).txn\n )\n ).toString(\"base64\")\n : Buffer.from(transactions[i]).toString(\"base64\"),\n signers: [],\n });\n }\n\n return acc;\n },\n []\n );\n\n const requestParams = [txnsToSign];\n const request = formatJsonRpcRequest(\"algo_signTxn\", requestParams);\n\n // Play an audio file to keep Wallet Connect's web socket open on iOS\n // when the user goes into background mode.\n this.keepWCAliveStart();\n\n // Sign them with the client.\n const result: Array<string | null> = await this.#client.sendCustomRequest(\n request\n );\n\n this.keepWCAliveStop();\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = result.reduce((signedTxns: Uint8Array[], txn, i) => {\n if (txn) {\n signedTxns.push(new Uint8Array(Buffer.from(txn, \"base64\")));\n }\n\n if (returnGroup) {\n signedTxns.push(transactions[i]);\n }\n\n return signedTxns;\n }, []);\n\n return signedTxns;\n }\n}\n\nexport default WalletConnectClient;\n","export const ICON =\n \"data:image/svg+xml;base64,\" +\n \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDkuODMgMjEwLjMzIj48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDE2MS4zMSkiIHN0eWxlPSJmb250LWZhbWlseTpJQk1QbGV4U2Fucy1NZWRtLCAmYXBvcztJQk0gUGxleCBTYW5zJmFwb3M7OyBmb250LXNpemU6MTkwcHg7Ij48dHNwYW4geD0iMCIgeT0iMCI+S01EPC90c3Bhbj48L3RleHQ+PC9zdmc+\";\n","import type _algosdk from \"algosdk\";\nimport Algod, { getAlgodClient } from \"../../algod\";\nimport BaseWallet from \"../base\";\nimport { DEFAULT_NETWORK, PROVIDER_ID } from \"../../constants\";\nimport type { Account, Wallet, TransactionsArray, Network } from \"../../types\";\nimport { ICON } from \"./constants\";\nimport {\n InitParams,\n ListWalletResponse,\n InitWalletHandle,\n KMDWalletClientConstructor,\n} from \"./types\";\n\nclass KMDWalletClient extends BaseWallet {\n #client: _algosdk.Kmd;\n #wallet: string;\n #password: string;\n walletId: string;\n id: PROVIDER_ID;\n network: Network;\n\n constructor({\n metadata,\n client,\n id,\n wallet,\n password,\n algosdk,\n algodClient,\n network,\n }: KMDWalletClientConstructor) {\n super(metadata, algosdk, algodClient);\n\n this.#client = client;\n this.#wallet = wallet;\n this.#password = password;\n this.id = id;\n this.walletId = \"\";\n this.network = network;\n this.metadata = KMDWalletClient.metadata;\n }\n\n static metadata = {\n id: PROVIDER_ID.KMD,\n name: \"KMD\",\n icon: ICON,\n isWalletConnect: false,\n };\n\n static async init({\n clientOptions,\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK,\n }: InitParams) {\n try {\n const {\n token = \"a\".repeat(64),\n host = \"http://localhost\",\n port = \"4002\",\n wallet = \"unencrypted-default-wallet\",\n password = \"\",\n } = clientOptions || {};\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk;\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n const kmdClient = new algosdk.Kmd(token, host, port);\n\n return new KMDWalletClient({\n metadata: KMDWalletClient.metadata,\n id: PROVIDER_ID.KMD,\n password,\n wallet,\n client: kmdClient,\n algosdk: algosdk,\n algodClient: algodClient,\n network,\n });\n } catch (e) {\n console.error(\"Error initializing...\", e);\n return null;\n }\n }\n\n async connect(): Promise<Wallet> {\n // TODO: prompt for wallet and password?\n return {\n ...KMDWalletClient.metadata,\n accounts: await this.listAccounts(\n this.#wallet,\n await this.requestPassword()\n ),\n };\n }\n\n async disconnect() {\n return;\n }\n\n async reconnect(): Promise<Wallet | null> {\n return null;\n }\n\n async requestPassword(): Promise<string> {\n // TODO: store it locally?\n const pw = prompt(\"KMD password\");\n return pw ? pw : \"\";\n }\n\n async getWalletToken(walletId: string, password: string): Promise<string> {\n const handleResp: InitWalletHandle = await this.#client.initWalletHandle(\n walletId,\n password\n );\n return handleResp.wallet_handle_token;\n }\n\n async releaseToken(token: string): Promise<void> {\n await this.#client.releaseWalletHandle(token);\n }\n\n async listWallets(): Promise<Record<string, string>> {\n const walletResponse = await this.#client.listWallets();\n const walletList: Array<ListWalletResponse> = walletResponse[\"wallets\"];\n const walletMap: Record<string, string> = {};\n for (const w of walletList) {\n walletMap[w.name] = w.id;\n }\n return walletMap;\n }\n\n async listAccounts(\n wallet: string,\n password: string\n ): Promise<Array<Account>> {\n // Get a handle token\n const walletId = await this.getWalletId();\n const token = await this.getWalletToken(walletId, password);\n\n // Fetch accounts and format them as lib expects\n const listResponse = await this.#client.listKeys(token);\n const addresses: Array<string> = listResponse[\"addresses\"];\n const mappedAccounts = addresses.map((address: string, index: number) => {\n return {\n name: `KMDWallet ${index + 1}`,\n address,\n providerId: KMDWalletClient.metadata.id,\n };\n });\n\n // Release handle token\n this.releaseToken(token);\n\n return mappedAccounts;\n }\n\n async getWalletId(): Promise<string> {\n // Use cached if available\n if(this.walletId !== \"\") return this.walletId\n\n const walletMap = await this.listWallets();\n if (!(this.#wallet in walletMap)) \n throw Error(\"No wallet named: \" + this.#wallet);\n this.walletId = walletMap[this.#wallet];\n\n return this.walletId\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn);\n }) as Array<\n _algosdk.EncodedTransaction | _algosdk.EncodedSignedTransaction\n >;\n\n // Get a handle token\n const walletId = await this.getWalletId()\n const pw = await this.requestPassword();\n const token = await this.getWalletToken(walletId, pw);\n\n const signedTxns: Array<Uint8Array> = [];\n // Sign them with the client.\n const signingPromises: Promise<Uint8Array>[] = [];\n\n for (const idx in decodedTxns) {\n const dtxn = decodedTxns[idx];\n const isSigned = \"txn\" in dtxn;\n\n // push the incoming txn into signed, we'll overwrite it later\n signedTxns.push(transactions[idx]);\n\n // Its already signed, skip it\n if (isSigned) {\n continue;\n // Not specified in indexes to sign, skip it\n } else if (\n indexesToSign &&\n indexesToSign.length &&\n !indexesToSign.includes(Number(idx))\n ) {\n continue;\n }\n // Not to be signed by our signer, skip it\n else if (\n !connectedAccounts.includes(this.algosdk.encodeAddress(dtxn.snd))\n ) {\n continue;\n }\n\n // overwrite with an empty blob\n signedTxns[idx] = new Uint8Array();\n\n const txn = this.algosdk.Transaction.from_obj_for_encoding(dtxn);\n signingPromises.push(this.#client.signTransaction(token, pw, txn));\n }\n\n const signingResults = await Promise.all(signingPromises);\n\n // Restore the newly signed txns in the correct order\n let signedIdx = 0;\n\n const formattedTxns = signedTxns.reduce<Uint8Array[]>((acc, txn, i) => {\n // If its an empty array, infer that it is one of the\n // ones we wanted to have signed and overwrite the empty buff\n if (txn.length === 0) {\n acc.push(signingResults[signedIdx]);\n\n signedIdx += 1;\n } else if (returnGroup) {\n acc.push(txn);\n }\n\n return acc;\n }, []);\n\n return formattedTxns;\n }\n}\n\nexport default KMDWalletClient;\n","export const ICON =\n \"data:image/svg+xml,%3c%3fxml version='1.0' encoding='UTF-8'%3f%3e %3c!-- Generated by Pixelmator Pro 3.2.2 --%3e %3csvg width='409' height='210' viewBox='0 0 409 210' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctext id='MNEMONIC' xml:space='preserve' x='0' y='129' font-family='Helvetica' font-size='72' fill='black'%3eMNEMONIC%3c/text%3e%3c/svg%3e\";\n","import type _algosdk from \"algosdk\";\nimport Algod, { getAlgodClient } from \"../../algod\";\nimport BaseWallet from \"../base\";\nimport { DEFAULT_NETWORK, PROVIDER_ID } from \"../../constants\";\nimport type { Wallet, TransactionsArray, Network } from \"../../types\";\nimport { ICON } from \"./constants\";\nimport { InitParams, MnemonicWalletClientConstructor } from \"./types\";\nimport algosdk from \"algosdk\";\n\nclass MnemonicWalletClient extends BaseWallet {\n #client?: _algosdk.Account;\n id: PROVIDER_ID;\n network: Network;\n\n constructor({\n metadata,\n id,\n algosdk,\n algodClient,\n network,\n }: MnemonicWalletClientConstructor) {\n super(metadata, algosdk, algodClient);\n\n this.id = id;\n this.network = network;\n this.metadata = MnemonicWalletClient.metadata;\n }\n\n static metadata = {\n id: PROVIDER_ID.MNEMONIC,\n name: \"MNEMONIC\",\n icon: ICON,\n isWalletConnect: false,\n };\n\n static async init({\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK,\n }: InitParams) {\n try {\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk;\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n console.log(network, algodClient);\n return new MnemonicWalletClient({\n metadata: MnemonicWalletClient.metadata,\n id: PROVIDER_ID.MNEMONIC,\n algosdk: algosdk,\n algodClient: algodClient,\n network,\n });\n } catch (e) {\n console.error(\"Error initializing...\", e);\n return null;\n }\n }\n\n async connect(): Promise<Wallet> {\n const password = await this.requestPassword();\n\n if (!password) {\n this.#client = undefined;\n throw new Error(\"Mnemonic passphrase is required\");\n }\n\n this.#client = algosdk.mnemonicToSecretKey(password);\n\n return {\n ...MnemonicWalletClient.metadata,\n accounts: [\n {\n name: `MnemonicWallet 1`,\n address: this.#client.addr,\n providerId: MnemonicWalletClient.metadata.id,\n },\n ],\n };\n }\n\n async disconnect() {\n this.#client = undefined;\n return;\n }\n\n async reconnect(): Promise<Wallet | null> {\n return null;\n }\n\n async requestPassword(): Promise<string> {\n // TODO: store it locally?\n const pass = prompt(\"enter mnemonic passphrase, 25 words\");\n return pass ? pass : \"\";\n }\n\n signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ): Promise<Uint8Array[]> {\n if (!this.#client) {\n throw new Error(\"Client not connected\");\n }\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn);\n }) as Array<\n _algosdk.EncodedTransaction | _algosdk.EncodedSignedTransaction\n >;\n\n const signedTxns: Uint8Array[] = [];\n // Sign them with the client.\n const signingResults: Uint8Array[] = [];\n for (const idx in decodedTxns) {\n const dtxn = decodedTxns[idx];\n const isSigned = \"txn\" in dtxn;\n\n // push the incoming txn into signed, we'll overwrite it later\n signedTxns.push(transactions[idx]);\n\n // Its already signed, skip it\n if (isSigned) {\n continue;\n // Not specified in indexes to sign, skip it\n } else if (\n indexesToSign &&\n indexesToSign.length &&\n !indexesToSign.includes(Number(idx))\n ) {\n continue;\n }\n // Not to be signed by our signer, skip it\n else if (\n !connectedAccounts.includes(this.algosdk.encodeAddress(dtxn.snd))\n ) {\n continue;\n }\n\n // overwrite with an empty blob\n signedTxns[idx] = new Uint8Array();\n\n const txn = this.algosdk.Transaction.from_obj_for_encoding(dtxn);\n const signedTxn = txn.signTxn(this.#client.sk);\n signingResults.push(signedTxn);\n }\n\n // Restore the newly signed txns in the correct order\n let signedIdx = 0;\n const formattedTxns = signedTxns.reduce<Uint8Array[]>((acc, txn, i) => {\n // If its an empty array, infer that it is one of the\n // ones we wanted to have signed and overwrite the empty buff\n if (txn.length === 0) {\n acc.push(signingResults[signedIdx]);\n\n signedIdx += 1;\n } else if (returnGroup) {\n acc.push(txn);\n }\n\n return acc;\n }, []);\n\n return Promise.resolve(formattedTxns);\n }\n\n signEncodedTransactions(\n transactions: TransactionsArray\n ): Promise<Uint8Array[]> {\n throw new Error(\"Method not implemented.\");\n }\n}\n\nexport default MnemonicWalletClient;\n","import pera from \"./pera\";\nimport myalgo from \"./myalgo\";\nimport defly from \"./defly\";\nimport exodus from \"./exodus\";\nimport algosigner from \"./algosigner\";\nimport walletconnect from \"./walletconnect\";\nimport kmd from \"./kmd\";\nimport mnemonic from \"./mnemonic\";\n\nexport {\n pera,\n myalgo,\n defly,\n exodus,\n algosigner,\n walletconnect,\n kmd,\n mnemonic,\n};\n\nexport default {\n [pera.metadata.id]: pera,\n [myalgo.metadata.id]: myalgo,\n [defly.metadata.id]: defly,\n [exodus.metadata.id]: exodus,\n [algosigner.metadata.id]: algosigner,\n [walletconnect.metadata.id]: walletconnect,\n [kmd.metadata.id]: kmd,\n [mnemonic.metadata.id]: mnemonic,\n};\n","import { PROVIDER_ID } from \"../types\";\nimport { useWalletStore } from \"../store/index\";\n\nconst clearActiveAccount = useWalletStore.getState().clearActiveAccount;\nconst removeAccounts = useWalletStore.getState().removeAccounts;\n\nexport const clearAccounts = (id: PROVIDER_ID) => {\n clearActiveAccount(id);\n removeAccounts(id);\n};\n","function shallow(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\n\nexport { shallow as default };\n","import { useState, useMemo, useContext, useEffect } from \"react\";\nimport type algosdk from \"algosdk\";\nimport { getAlgosdk } from \"../algod\";\nimport { useHydratedWalletStore, walletStoreSelector } from \"../store/index\";\nimport {\n PROVIDER_ID,\n TransactionsArray,\n WalletClient,\n Provider,\n} from \"../types\";\nimport { ClientContext } from \"../store/state/clientStore\";\nimport allClients from \"../clients\";\nimport { clearAccounts } from \"../utils/clearAccounts\";\nimport shallow from \"zustand/shallow\";\n\nexport { PROVIDER_ID };\n\nexport default function useWallet() {\n const [providers, setProviders] = useState<Provider[] | null>(null);\n const clients = useContext(ClientContext);\n\n const {\n activeAccount,\n accounts: connectedAccounts,\n setActiveAccount: _setActiveAccount,\n addAccounts,\n } = useHydratedWalletStore(walletStoreSelector, shallow);\n\n const getAccountsByProvider = (id: PROVIDER_ID) => {\n return connectedAccounts.filter((account) => account.providerId === id);\n };\n\n const connectedActiveAccounts = useMemo(\n () =>\n connectedAccounts.filter(\n (account) => account.providerId === activeAccount?.providerId\n ),\n [connectedAccounts, activeAccount]\n );\n\n useEffect(() => {\n if (!clients) {\n setProviders(null);\n return;\n }\n\n const supportedClients = Object.keys(clients) as PROVIDER_ID[];\n\n setProviders(\n supportedClients.map((id) => {\n return {\n ...allClients[id],\n accounts: getAccountsByProvider(id),\n isActive: activeAccount?.providerId === id,\n isConnected: connectedAccounts.some(\n (accounts) => accounts.providerId === id\n ),\n connect: () => connect(id),\n disconnect: () => disconnect(id),\n reconnect: () => reconnect(id),\n setActiveProvider: () => setActive(id),\n setActiveAccount: (account: string) =>\n selectActiveAccount(id, account),\n };\n })\n );\n }, [clients, connectedAccounts, connectedActiveAccounts, activeAccount]);\n\n const getClient = async (id?: PROVIDER_ID): Promise<WalletClient> => {\n if (!id) throw new Error(\"Provier ID is missing.\");\n\n const client = await clients?.[id];\n\n if (!client) throw new Error(\"Client not found for ID\");\n\n return client;\n };\n\n const status = useMemo(() => {\n if (activeAccount === undefined) {\n return \"initializing\";\n }\n\n if (activeAccount === null && connectedAccounts.length) {\n return \"connected\";\n }\n\n if (activeAccount === null && !connectedAccounts.length) {\n return \"disconnected\";\n }\n\n if (activeAccount && activeAccount.address) {\n return \"active\";\n }\n\n return \"error\";\n }, [activeAccount]);\n\n const isActive = useMemo(() => {\n return status === \"active\";\n }, [status]);\n\n const isReady = useMemo(() => {\n return status !== \"initializing\";\n }, [status]);\n\n const selectActiveAccount = async (\n providerId: PROVIDER_ID,\n address: string\n ) => {\n try {\n const account = connectedActiveAccounts.find(\n (acct) => acct.address === address && acct.providerId === providerId\n );\n\n if (!account) {\n throw new Error(`No accounts with address ${address} found.`);\n }\n\n _setActiveAccount(account);\n } catch (e) {\n console.error(e);\n }\n };\n\n const connect = async (id: PROVIDER_ID) => {\n try {\n const walletClient = await getClient(id);\n const walletInfo = await walletClient?.connect(() => clearAccounts(id));\n\n if (!walletInfo || !walletInfo.accounts.length) {\n throw new Error(\"Failed to connect \" + id);\n }\n\n _setActiveAccount(walletInfo.accounts[0]);\n addAccounts(walletInfo.accounts);\n } catch (e) {\n console.error(e);\n }\n };\n\n const reconnect = async (id: PROVIDER_ID) => {\n try {\n const walletClient = await getClient(id);\n const walletInfo = await walletClient?.reconnect(() => clearAccounts(id));\n\n if (walletInfo && walletInfo.accounts.length) {\n addAccounts(walletInfo.accounts);\n }\n } catch (e) {\n console.error(e);\n disconnect(id);\n }\n };\n\n const disconnect = async (id: PROVIDER_ID) => {\n try {\n const walletClient = await getClient(id);\n\n walletClient?.disconnect();\n } catch (e) {\n console.error(e);\n } finally {\n clearAccounts(id);\n }\n };\n\n const setActive = async (id: PROVIDER_ID) => {\n try {\n const accounts = getAccountsByProvider(id);\n _setActiveAccount(accounts[0]);\n } catch (e) {\n console.error(e);\n }\n };\n\n const signTransactions = async (\n transactions: Array<Uint8Array>,\n indexesToSign?: number[],\n returnGroup = true\n ) => {\n const walletClient = await getClient(activeAccount?.providerId);\n\n if (!walletClient || !activeAccount?.address) {\n throw new Error(\"No wallet found.\");\n }\n\n const signedTransactions = await walletClient.signTransactions(\n connectedActiveAccounts.map((acct) => acct.address),\n transactions,\n indexesToSign,\n returnGroup\n );\n\n return signedTransactions;\n };\n\n const sendTransactions = async (\n transactions: Uint8Array[],\n waitRoundsToConfirm?: number\n ) => {\n const walletClient = await getClient(activeAccount?.providerId);\n\n const result = await walletClient?.sendRawTransactions(\n transactions,\n waitRoundsToConfirm\n );\n\n return result;\n };\n\n const signer: algosdk.TransactionSigner = async (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ) => {\n const algosdk = await getAlgosdk();\n const txnBlobs: Array<Uint8Array> = txnGroup.map(\n algosdk.encodeUnsignedTransaction\n );\n\n return await Promise.resolve(\n signTransactions(txnBlobs, indexesToSign, false)\n );\n };\n\n const getAccountInfo = async () => {\n if (!activeAccount) throw new Error(\"No selected account.\");\n\n const walletClient = await getClient(activeAccount.providerId);\n\n const accountInfo = await walletClient?.getAccountInfo(\n activeAccount.address\n );\n\n return accountInfo;\n };\n\n const getAddress = () => {\n return activeAccount?.address;\n };\n\n const getAssets = async () => {\n if (!activeAccount) throw new Error(\"No selected account.\");\n\n const walletClient = await getClient(activeAccount.providerId);\n\n return await walletClient?.getAssets(activeAccount.address);\n };\n\n const groupTransactionsBySender = async (transactions: TransactionsArray) => {\n const walletClient = await getClient(activeAccount?.providerId);\n\n return walletClient?.groupTransactionsBySender(transactions);\n };\n\n return {\n clients,\n providers,\n connectedAccounts,\n connectedActiveAccounts,\n activeAccount,\n activeAddress: activeAccount?.address,\n status,\n isActive,\n isReady,\n signer,\n signTransactions,\n sendTransactions,\n getAddress,\n groupTransactionsBySender,\n getAccountInfo,\n getAssets,\n };\n}\n","import type algosdk from \"algosdk\";\nimport { PROVIDER_ID, WalletClient, Network } from \"../types\";\nimport allClients from \"../clients\";\nimport {\n DEFAULT_NODE_BASEURL,\n DEFAULT_NODE_TOKEN,\n DEFAULT_NODE_PORT,\n DEFAULT_NETWORK,\n} from \"../constants\";\n\ntype SupportedProviders = { [x: string]: Promise<WalletClient | null> };\n\ntype NodeConfig = {\n network: Network;\n nodeServer: string;\n nodeToken?: string;\n nodePort?: string;\n};\n\nexport const initializeProviders = (\n providers?: PROVIDER_ID[],\n nodeConfig?: NodeConfig,\n algosdkStatic?: typeof algosdk\n) => {\n const initializedProviders: SupportedProviders = {};\n\n if (typeof window === \"undefined\") {\n console.warn(\"Window object is not available, skipping initialization.\");\n return initializedProviders;\n }\n\n const {\n network = DEFAULT_NETWORK,\n nodeServer = DEFAULT_NODE_BASEURL,\n nodePort = DEFAULT_NODE_PORT,\n nodeToken = DEFAULT_NODE_TOKEN,\n } = nodeConfig || {};\n\n if (!providers || providers.length === 0)\n for (const [id, client] of Object.entries(allClients)) {\n if (id === \"kmd\" || id === \"mnemonic\") {\n continue;\n }\n\n initializedProviders[id] = client.init({\n network,\n algodOptions: [nodeToken, nodeServer, nodePort],\n algosdkStatic: algosdkStatic,\n });\n }\n\n if (providers) {\n for (const id of providers) {\n initializedProviders[id] = allClients[id].init({\n network,\n algodOptions: [nodeToken, nodeServer, nodePort],\n algosdkStatic: algosdkStatic,\n });\n }\n }\n\n return initializedProviders;\n};\n","import { WalletClient } from \"../types\";\nimport { clearAccounts } from \"./clearAccounts\";\n\ntype SupportedProviders = { [x: string]: Promise<WalletClient | null> };\n\nexport const reconnectProviders = async (providers: SupportedProviders) => {\n try {\n const clients = Object.values(providers);\n\n for (const client of clients) {\n const c = await client;\n c?.reconnect(() => clearAccounts(c?.metadata.id));\n }\n } catch (e) {\n console.error(e);\n }\n};\n","export type NFDTransactionsArray = [\"u\" | \"s\", string][];\n\nexport function encodeNFDTransactionsArray(\n transactionsArray: NFDTransactionsArray\n) {\n return transactionsArray.map(([type, txn]) => {\n return new Uint8Array(Buffer.from(txn, \"base64\"));\n });\n}\n"],"names":["PROVIDER_ID","DEFAULT_NETWORK","produce","require$$0","require$$1","useDebugValue","createStore__default","useState","useEffect","createContext","ICON","BaseWallet","formatJsonRpcRequest","pera","myalgo","defly","exodus","algosigner","walletconnect","kmd","mnemonic","useContext","useMemo"],"mappings":"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AAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,C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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/constants/constants.ts","../../src/algod/index.ts","../../node_modules/immer/dist/immer.esm.mjs","../../node_modules/zustand/esm/middleware/immer.mjs","../../node_modules/zustand/esm/vanilla.mjs","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../../node_modules/use-sync-external-store/shim/index.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js","../../node_modules/use-sync-external-store/shim/with-selector.js","../../node_modules/zustand/esm/index.mjs","../../node_modules/zustand/esm/middleware.mjs","../../src/store/state/walletStore.ts","../../src/store/state/clientStore.ts","../../src/media/audio.ts","../../src/clients/base/base.ts","../../src/clients/pera/constants.ts","../../src/clients/pera/client.ts","../../src/clients/myalgo/constants.ts","../../src/clients/myalgo/client.ts","../../src/clients/defly/constants.ts","../../src/clients/defly/client.ts","../../src/clients/exodus/constants.ts","../../src/clients/exodus/client.ts","../../src/clients/algosigner/constants.ts","../../src/clients/algosigner/client.ts","../../src/clients/walletconnect/constants.ts","../../src/clients/walletconnect/client.ts","../../src/clients/kmd/constants.ts","../../src/clients/kmd/client.ts","../../src/clients/mnemonic/constants.ts","../../src/clients/mnemonic/client.ts","../../src/clients/index.ts","../../src/utils/clearAccounts.ts","../../node_modules/zustand/esm/shallow.mjs","../../src/hooks/useWallet.ts","../../src/utils/initializeProviders.ts","../../src/utils/providers.ts","../../src/utils/reconnectProviders.ts","../../src/utils/encodeNFDTransactionsArray.ts"],"sourcesContent":["import { Network } from \"../types\";\n\nexport enum PROVIDER_ID {\n KMD = \"kmd\",\n PERA = \"pera\",\n MYALGO = \"myalgo\",\n ALGOSIGNER = \"algosigner\",\n DEFLY = \"defly\",\n EXODUS = \"exodus\",\n WALLETCONNECT = \"walletconnect\",\n MNEMONIC = \"mnemonic\",\n}\n\nexport const DEFAULT_NETWORK: Network = \"mainnet\";\n\nexport const DEFAULT_NODE_BASEURL = \"https://mainnet-api.algonode.cloud\";\n\nexport const DEFAULT_NODE_TOKEN = \"\";\n\nexport const DEFAULT_NODE_PORT = \"\";\n","import type _algosdk from \"algosdk\";\nimport type { AlgodClientOptions } from \"../types\";\nimport {\n DEFAULT_NODE_BASEURL,\n DEFAULT_NODE_TOKEN,\n DEFAULT_NODE_PORT,\n} from \"../constants\";\n\nexport const getAlgosdk = async () => {\n return (await import(\"algosdk\")).default;\n};\n\nexport const getAlgodClient = async (\n algosdk: typeof _algosdk,\n algodClientOptions?: AlgodClientOptions\n) => {\n const [\n tokenOrBaseClient = DEFAULT_NODE_TOKEN,\n baseServer = DEFAULT_NODE_BASEURL,\n port = DEFAULT_NODE_PORT,\n headers,\n ] = algodClientOptions || [];\n\n return new algosdk.Algodv2(tokenOrBaseClient, baseServer, port, headers);\n};\n\nexport default class Algod {\n algosdk: typeof _algosdk;\n algodClient: _algosdk.Algodv2;\n\n constructor(algosdk: typeof _algosdk, algodClient: _algosdk.Algodv2) {\n this.algosdk = algosdk;\n this.algodClient = algodClient;\n }\n\n static async init(algodOptions?: AlgodClientOptions) {\n const algosdk = await getAlgosdk();\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n\n return new Algod(algosdk, algodClient);\n }\n}\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!n.constructor[L]||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?(n.delete(r),n.add(t)):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)?n:(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0),n)}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function O(n){g(n),n.p.forEach(S),n.p=null}function g(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.O=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.g||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(O(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(r,i){return A(n,e,o,r,i,t)})),x(n,o,!1),t&&n.u&&b(\"Patches\").R(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!r(v))return;e.m=!1}if(t(c)&&!y(c)){if(!e.h.F&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),n.h.F&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function R(n,r,t){var e=s(r)?b(\"MapSet\").N(r,t):v(r)?b(\"MapSet\").T(r,t):n.g?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function D(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=F(r,c),u.I=!1}else e=F(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function F(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function N(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.O&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:i,o:null,O:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.D,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=\"\"+i[s];0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},R:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.D,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.D,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.D=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=R(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.O&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,D:void 0,t:n,k:this,C:!1,O:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.D.set(n,!0),t.o.set(n,r),t.D.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.D.set(n,!1):r.D.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.D=new Map,i(n.t,(function(r){n.D.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=R(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,O:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{N:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){N(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=R(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.D[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&\"number\"!=typeof t&&(void 0!==t||r in n.o)||(n.o[r]=t,n.D[r]=!0,!0)},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.D[r]=!1,E(n),k(n)):delete n.D[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.g=B,this.F=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=R(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?O(c):g(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw O(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.F&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=D(e));var i=w(this),o=R(this,e,void 0);return o[Q].C=!0,g(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.F=n},i.setUseProxies=function(r){r&&!B&&n(20),this.g=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,D as current,J as enableAllPlugins,N as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","import { produce } from 'immer';\n\nconst immerImpl = (initializer) => (set, get, store) => {\n store.setState = (updater, replace, ...a) => {\n const nextState = typeof updater === \"function\" ? produce(updater) : updater;\n return set(nextState, replace, ...a);\n };\n return initializer(store.setState, get, store);\n};\nconst immer = immerImpl;\n\nexport { immer };\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\") ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore as default };\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var React = require('react');\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\n// dispatch for CommonJS interop named imports.\n\nvar useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nvar didWarnOld18Alpha = false;\nvar didWarnUncachedGetSnapshot = false; // Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\n\nfunction useSyncExternalStore(subscribe, getSnapshot, // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n// React do not expose a way to check if we're hydrating. So users of the shim\n// will need to track that themselves and return the correct value\n// from `getSnapshot`.\ngetServerSnapshot) {\n {\n if (!didWarnOld18Alpha) {\n if (React.startTransition !== undefined) {\n didWarnOld18Alpha = true;\n\n error('You are using an outdated, pre-release alpha of React 18 that ' + 'does not support useSyncExternalStore. The ' + 'use-sync-external-store shim will not work correctly. Upgrade ' + 'to a newer pre-release.');\n }\n }\n } // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n\n\n var value = getSnapshot();\n\n {\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n\n if (!objectIs(value, cachedValue)) {\n error('The result of getSnapshot should be cached to avoid an infinite loop');\n\n didWarnUncachedGetSnapshot = true;\n }\n }\n } // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n\n\n var _useState = useState({\n inst: {\n value: value,\n getSnapshot: getSnapshot\n }\n }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1]; // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n\n\n useLayoutEffect(function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot; // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n }, [subscribe, value, getSnapshot]);\n useEffect(function () {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n\n var handleStoreChange = function () {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n }; // Subscribe to the store and return a clean-up function.\n\n\n return subscribe(handleStoreChange);\n }, [subscribe]);\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n var prevValue = inst.value;\n\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n\nfunction useSyncExternalStore$1(subscribe, getSnapshot, getServerSnapshot) {\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n return getSnapshot();\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\n\nvar isServerEnvironment = !canUseDOM;\n\nvar shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore;\nvar useSyncExternalStore$2 = React.useSyncExternalStore !== undefined ? React.useSyncExternalStore : shim;\n\nexports.useSyncExternalStore = useSyncExternalStore$2;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var React = require('react');\nvar shim = require('use-sync-external-store/shim');\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\nvar useSyncExternalStore = shim.useSyncExternalStore;\n\n// for CommonJS interop.\n\nvar useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue; // Same as useSyncExternalStore, but supports selector and isEqual arguments.\n\nfunction useSyncExternalStoreWithSelector(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {\n // Use this to track the rendered snapshot.\n var instRef = useRef(null);\n var inst;\n\n if (instRef.current === null) {\n inst = {\n hasValue: false,\n value: null\n };\n instRef.current = inst;\n } else {\n inst = instRef.current;\n }\n\n var _useMemo = useMemo(function () {\n // Track the memoized state using closure variables that are local to this\n // memoized instance of a getSnapshot function. Intentionally not using a\n // useRef hook, because that state would be shared across all concurrent\n // copies of the hook/component.\n var hasMemo = false;\n var memoizedSnapshot;\n var memoizedSelection;\n\n var memoizedSelector = function (nextSnapshot) {\n if (!hasMemo) {\n // The first time the hook is called, there is no memoized result.\n hasMemo = true;\n memoizedSnapshot = nextSnapshot;\n\n var _nextSelection = selector(nextSnapshot);\n\n if (isEqual !== undefined) {\n // Even if the selector has changed, the currently rendered selection\n // may be equal to the new selection. We should attempt to reuse the\n // current value if possible, to preserve downstream memoizations.\n if (inst.hasValue) {\n var currentSelection = inst.value;\n\n if (isEqual(currentSelection, _nextSelection)) {\n memoizedSelection = currentSelection;\n return currentSelection;\n }\n }\n }\n\n memoizedSelection = _nextSelection;\n return _nextSelection;\n } // We may be able to reuse the previous invocation's result.\n\n\n // We may be able to reuse the previous invocation's result.\n var prevSnapshot = memoizedSnapshot;\n var prevSelection = memoizedSelection;\n\n if (objectIs(prevSnapshot, nextSnapshot)) {\n // The snapshot is the same as last time. Reuse the previous selection.\n return prevSelection;\n } // The snapshot has changed, so we need to compute a new selection.\n\n\n // The snapshot has changed, so we need to compute a new selection.\n var nextSelection = selector(nextSnapshot); // If a custom isEqual function is provided, use that to check if the data\n // has changed. If it hasn't, return the previous selection. That signals\n // to React that the selections are conceptually equal, and we can bail\n // out of rendering.\n\n // If a custom isEqual function is provided, use that to check if the data\n // has changed. If it hasn't, return the previous selection. That signals\n // to React that the selections are conceptually equal, and we can bail\n // out of rendering.\n if (isEqual !== undefined && isEqual(prevSelection, nextSelection)) {\n return prevSelection;\n }\n\n memoizedSnapshot = nextSnapshot;\n memoizedSelection = nextSelection;\n return nextSelection;\n }; // Assigning this to a constant so that Flow knows it can't change.\n\n\n // Assigning this to a constant so that Flow knows it can't change.\n var maybeGetServerSnapshot = getServerSnapshot === undefined ? null : getServerSnapshot;\n\n var getSnapshotWithSelector = function () {\n return memoizedSelector(getSnapshot());\n };\n\n var getServerSnapshotWithSelector = maybeGetServerSnapshot === null ? undefined : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n };\n return [getSnapshotWithSelector, getServerSnapshotWithSelector];\n }, [getSnapshot, getServerSnapshot, selector, isEqual]),\n getSelection = _useMemo[0],\n getServerSelection = _useMemo[1];\n\n var value = useSyncExternalStore(subscribe, getSelection, getServerSelection);\n useEffect(function () {\n inst.hasValue = true;\n inst.value = value;\n }, [value]);\n useDebugValue(value);\n return value;\n}\n\nexports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import createStore__default from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nexport { default as createStore } from 'zustand/vanilla';\nimport { useDebugValue } from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\n\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nfunction useStore(api, selector = api.getState, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = typeof createState === \"function\" ? createStore__default(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\n\nexport { create as default, useStore };\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...a) => api.dispatch(...a), ...initial };\n};\nconst redux = reduxImpl;\n\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env && import.meta.env.MODE) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch {\n }\n if (!extensionConnector) {\n if ((import.meta.env && import.meta.env.MODE) !== \"production\" && enabled) {\n console.warn(\n \"[zustand devtools middleware] Please install/enable Redux devtools extension\"\n );\n }\n return fn(set, get, api);\n }\n const extension = extensionConnector.connect(options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording)\n return r;\n extension.send(\n nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction,\n get()\n );\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n extension.init(initialState);\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env && import.meta.env.MODE) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n extension.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n setStateFromDevtools(action.state);\n return;\n }\n if (!api.dispatchFromDevtools)\n return;\n if (typeof api.dispatch !== \"function\")\n return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n return extension.init(api.getState());\n case \"COMMIT\":\n return extension.init(api.getState());\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n extension.init(api.getState());\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState)\n return;\n setStateFromDevtools(lastComputedState);\n extension.send(\n null,\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0)\n f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n getStorage: () => localStorage,\n serialize: JSON.stringify,\n deserialize: JSON.parse,\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage;\n try {\n storage = options.getStorage();\n } catch (e) {\n }\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const thenableSerialize = toThenable(options.serialize);\n const setItem = () => {\n const state = options.partialize({ ...get() });\n let errorInSync;\n const thenable = thenableSerialize({ state, version: options.version }).then(\n (serializedValue) => storage.setItem(options.name, serializedValue)\n ).catch((e) => {\n errorInSync = e;\n });\n if (errorInSync) {\n throw errorInSync;\n }\n return thenable;\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n let stateFromStorage;\n const hydrate = () => {\n var _a;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => cb(get()));\n const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get())) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {\n if (storageValue) {\n return options.deserialize(storageValue);\n }\n }).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.getStorage) {\n storage = newOptions.getStorage();\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n hydrate();\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nexport { combine, devtools, persist, redux, subscribeWithSelector };\n","import { useState, useEffect } from \"react\";\nimport { immer } from \"zustand/middleware/immer\";\nimport create from \"zustand\";\nimport { devtools, persist } from \"zustand/middleware\";\nimport type { Account } from \"../../types\";\nimport { PROVIDER_ID } from \"../../constants\";\n\nexport const walletStoreSelector = (state: WalletStore) => ({\n accounts: state.accounts,\n activeAccount: state.activeAccount,\n setActiveAccount: state.setActiveAccount,\n clearActiveAccount: state.clearActiveAccount,\n addAccounts: state.addAccounts,\n removeAccounts: state.removeAccounts,\n});\n\nexport type WalletStore = {\n accounts: Account[];\n activeAccount: Account | null | undefined;\n setActiveAccount: (account: Account) => void;\n clearActiveAccount: (id: PROVIDER_ID) => void;\n addAccounts: (accounts: Account[]) => void;\n removeAccounts: (providerId: PROVIDER_ID) => void;\n};\n\nconst emptyState: WalletStore = {\n accounts: [],\n activeAccount: undefined,\n setActiveAccount: (account: Account) => {},\n clearActiveAccount: (id: PROVIDER_ID) => {},\n addAccounts: (accounts: Account[]) => {},\n removeAccounts: (providerId: PROVIDER_ID) => {},\n};\n\nexport const useWalletStore = create<WalletStore>()(\n immer(\n persist(\n devtools((set, _get) => ({\n accounts: [],\n activeAccount: null,\n setActiveAccount: (account: Account) => {\n set((state) => {\n state.activeAccount = account;\n });\n },\n clearActiveAccount: (id: PROVIDER_ID) => {\n set((state) => {\n if (id === state.activeAccount?.providerId)\n state.activeAccount = null;\n });\n },\n addAccounts: (accounts: Account[]) => {\n set((state) => {\n const uniqueAccounts = [...state.accounts, ...accounts].reduce<\n Account[]\n >((uniqueAccounts, o) => {\n if (\n !uniqueAccounts.some(\n (obj) =>\n obj.providerId === o.providerId && obj.address === o.address\n )\n ) {\n uniqueAccounts.push(o);\n }\n return uniqueAccounts;\n }, []);\n\n // Remove duplicates that occur when a user reconnects Pera wallet\n state.accounts = uniqueAccounts;\n });\n },\n removeAccounts: (providerId: PROVIDER_ID) => {\n set((state) => {\n state.accounts = state.accounts.filter(\n (account) => account.providerId !== providerId\n );\n });\n },\n })),\n {\n name: \"txnlab-use-wallet\", // key in local storage\n version: 1, // increment to deprecate stored data\n }\n )\n )\n);\n\n// This a fix to ensure zustand never hydrates the store before React hydrates the page\n// otherwise it causes a mismatch between SSR and client render\n// see: https://github.com/pmndrs/zustand/issues/1145\nexport const useHydratedWalletStore = ((selector, compare) => {\n const store = useWalletStore(selector, compare);\n const [hydrated, setHydrated] = useState(false);\n\n useEffect(() => setHydrated(true), []);\n\n return hydrated ? store : selector(emptyState);\n}) as typeof useWalletStore;\n","import { createContext } from \"react\";\nimport { PROVIDER_ID } from \"src/constants\";\nimport BaseWallet from \"../../clients/base\";\n\ntype Context = Partial<{ [key in PROVIDER_ID]: Promise<BaseWallet | null> }>;\n\nconst ClientContext = createContext<Context | null>(null);\n\nexport { ClientContext };\n\nexport default ClientContext.Provider;\n","export const audio =\n \"data:audio/mp3;base64,SUQzBAAAAAIYBlRJVDIAAAAWAAAAMTAgU2Vjb25kcyBvZiBTaWxlbmNlVFBFMQAAABIAAABBbmFyIFNvZnR3YXJlIExMQ1RBTEIAAAAMAAAAQmxhbmsgQXVkaW9BUElDAAIPAgAAAGltYWdlL2pwZWcAAwCJUE5HDQoaCgAAAA1JSERSAAAEOAAABDgIBgAAAOwQbI8AAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACD0AAAg9AQWVVbYAAAAHdElNRQffCgsFHDEDbwR2AAAgAElEQVR42uzde5RVZd0H8N8wDDcBAS8o6oCJVyxTsDSxojJvgVYq3jVNUQgzaZWmpqh56+ItNa+kr4Cay9Q0DQ1DWb2WeSm8pGRy0RAEgRFhuIzz/tFbC5yZc86eOWfmPDOfz1rvemvvZz9779+zz3DOt2fvXRER9QEAAACQsE5KAAAAAKROwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8BBq9pss81i4sSJMXToUMUAAACgaCoiol4ZaA177rln3HzzzdG/f/+oqamJww8/PGbNmqUwAAAAtJgZHLSKk046Ke67777o379/RET07t07pk6dGtXV1YoDAABAi5nBQcmde+65MW7cuEbXvfjii3HIIYfE2rVrFQoAAIBmq4yIC5WBUqioqIgf/ehHceqppzbZZosttohevXrFk08+qWAAAAA0/zdomMFBCVRWVsZPfvKTGD16dEHtjzrqqJgxY4bCAQAA0CwCDoquU6dOccMNN8SoUaMK3mbOnDkxYsSIWL16tQICAACQmVtUKLoLL7wwjj766Ezb9OnTJz788MP44x//qIAAAABkZgYHRXXyySfHxRdf3Kxt16xZEyNGjIg333xTIQEAAMjEa2Ipmv333z8mTpzY7O27dOnSou0BAADouMzgoCh23333uO+++6J79+4t7utLX/pSvPLKK4oKAABAwczgoMW22mqruOOOO4oSbkREjBs3TlEBAADIxAwOWqRTp05x3333xV577VW0Puvq6uIzn/lMzJ8/X4EBAAAo7PepEtASp59+elHDjYiIysrKOO200xQXAACAgpnBQbPtuuuu8cgjj0RVVVXR+66trY0999wzlixZotAAAADkZQYHzdKtW7e4/vrrSxJu/Kf/r3/96woNAABAQQQcNMv5558f22+/fUn3MWrUKIUGAACgIAIOMvvCF74Q3/jGN0q+nz322COqq6sVHAAAgLwEHGRSVVUVl156adH7Xbp0aaPLzeIAAACgEAIOMjn22GOLPqvimWeeic997nOxaNGiBusOOeQQRQcAACAvAQcF69GjR5x55plF7fOhhx6KI488MhYvXhxTp05tsH7IkCGx3XbbKT4AAAA5CTgo2De/+c3YbLPNitbfM888E+PGjYs1a9ZERMTkyZOjvr7hW4vN4gAAACAfAQcF6dOnT4wdO7Zo/S1dujTGjh0bdXV1/1321ltvxaxZsxq0HTFihAEAAAAgJwEHBfnWt74VvXv3Llp/Z555ZrzzzjsNlj/++OMNln3iE5+Irl27GgQAAACaJOAgr/79+8dJJ51UtP5uu+22RoOMiIhp06Y1WFZVVRWf+MQnDAQAAABNEnCQ19ixY6Nbt25F6evdd9+Nyy+/vMn1s2bNanRmx5577mkgAAAAaJKAg9wXSKdOMWrUqKL199Of/jQ++OCDnG0am90h4AAAACDn71clIJe99tor+vfvX5S+3njjjZgyZUredo0FHMOGDTMYAAAANEnAQU4jR44sWl8/+tGPYt26dXnbPf3007Fq1aoNlm2yySax7bbbGhAAAAAaJeCgSZWVlXHwwQcXpa9nn302HnvssYLarl69Ol588cUGyz/1qU8ZFAAAABol4KBJe++9d2y66aZF6euiiy7K1P6VV15psGyPPfYwKAAAADRKwEGTDjnkkKL088gjj8Rzzz2XaZuXX365wbKBAwcaFAAAABol4KBRnTt3joMOOqjF/axbty4uvfTSzNs1NoNjq622MjAAAAA0SsBBo/bZZ5/o27dvi/v5n//5n3jzzTczb/faa69FfX39BssGDBhgYAAAAGiUgINGFeOBnitWrIirrrqqWduuXr063n///Q2Wde/evSihCwAAAO2PgING7brrri3u46abborFixc3e/ulS5c2WOY2FQAAABoj4KBRQ4YMadH2a9eujV/+8pct6mPZsmUNlrlNBQAAgMYIOGigT58+LQ4SHnrooViyZEmL+mgs4DCDAwAAgMYIOGhg8ODBLe6jpbM3IiI++OCDBssEHAAAADRGwEED/fr1a9H2s2bNiueee67Fx9HYA0UFHAAAADRGwEEDLX1TyaRJk4pyHJtvvnmDZZ7BAQAAQGMEHDTQkhkcy5YtiwceeKAox7HZZps1WNazZ08DBAAAQAMCDhro06dPs7e9++67o7a2tsXH0KVLl+jdu3eD5Z07dzZAAAAANCDgoIHKyspmbVdfXx933nlnUY5hu+22K+qxAQAA0L4JOGhg5cqVzdpu+vTpMWfOnKIcw/7779/ocgEHAAAAjRFw0EBzA45ivBr2Pw488MBGl7tFBQAAgMYIOGjggw8+yLzN3Llz48knnyzK/rfaaqv4+Mc/3ug6AQcAAACNEXDQQHNmcEyePDk+/PDDouz/oIMOanKdW1QAAABojICDBpoTcDz22GNF2XePHj1i7NixTa4XcAAAANAYAQcNZL1FZc6cOfGPf/yjKPseP3589O/fv8n1Ag4AAAAaI+CggawzOKZNm1aU/W699dZx2mmn5WzjGRwAAAA0RsBBA1lncDz++ONF2e95550XXbt2zdmmWM/5AAAAoH0RcNBAlhkcNTU18ac//anF+9xzzz1j1KhRedstWrTIAAEAANCAgIMG3nnnnaivry+o7fTp02PdunUt2l9FRUVMnDixoLb/+te/DBAAAAANCDhoYPXq1bFw4cKC2hbj+RuHHXZYfPKTnyyo7YIFCwwQAAAADQg4aNScOXPytlm3bl1Mnz69Rfvp0aNH/OAHPyi4vYADAACAxgg4aNTcuXPztvnzn/8cNTU1LdrPuHHjcr4W9qMEHAAAADRGwEGjCgk4Xn/99RbtY6uttorTTz890zaewQEAAEBjBBw0qpBbVJYvX96ifVx55ZXRrVu3TNuYwQEAAEBjBBw0at68eXnbtCTgOO6442LEiBGZtxNwAAAA0JjOSkBjCpnBsWzZsmb1PXDgwLjgggsyb7dmzZp47733DA4AANCqKioqmr0sa9tCt1+3bl18+OGHBmc9Ao717LTTTrHjjju2yoVbqu1b+mFaf3ltbW3OW0h233336Ny5c6Z9VVRUxJgxY6JHjx6Zx2fBggVx4oknluRcy2Vcy+EPain2laVdSuea0nWVyjXoXNvn562tx6pcz7UUY9Xevos4V99FfBfxXaRcPgPl6OSTT45HH33UD/n1xzQi6pXh3yZMmBATJkxQCAAAAMraKaecEo888ohCrMcMjiJZvHhxo7ds1Nc3nh9lWZ61j6Zk7bu6ujp69+7dZH8LFiyIxYsXF3yM3bp1ix122KHZSens2bPj/fffb9b5t8U4pDDG5VyTVMcy6z6LcZ4pjHG51NvnNYyxz6ux7EDfF4yxsWwP36E68vf7Aw44IMaNG9fk+k6dPFJTwFEi1113Xdxyyy3t6py+973vxZlnntnk+nvvvTeuuOKKgvqqqqqK3/72t80ON9asWRNf/vKXY/Xq1S42AACg3dtpp51yrk/9FptSEPnQpL/97W851/fp06fgvs4666wYMmRIs4/lL3/5i3ADAADoMPI9QNQMjkZqogQ0ZdasWTnX9+3bt6B+9thjj/jWt77VomP54x//aEAAAIAOQ8CRnYrQpLfffjvna1kLmcHRrVu3uPbaa6OysrJFxzJz5kwDAgAAdBj5ntch4GikJkpALrlmcVRXV+fd/rzzzouPfexjLTqGVatWxQsvvGAwAACADsMMjuxUhJxyPYejuro6unbt2uT64cOHxze+8Y0WH8PMmTNj7dq1BgMAAOgw8s3g8JDRhgQc5JQr4OjUqVOTszM22WSTuOaaa4ryobvzzjsNBAAA0KHkm8HR0scAtEcCDnLK96DR7bffvtEP2o033hhbbrlli/c/Z86cmD59uoEAAAA6FLeoZKci5DRv3rxYvnx5k+sbCzjOOeecGD58eFH2f8cdd+SdmgUAANDeeMhodipCXrlmcXw04Dj44INj7NixRdnvqlWrYurUqQYAAADocMzgyE5FyCvXczjWDzgGDx4cV111VdH2e//990dNTY0BAAAAOpx8AYeHjDbUWQnIJ1fAsd1220VlZWV07949br/99ujZs2fR9jtp0iTFBwAAOiQzOLJTEfLKFXB06dIlqqur46qrrorBgwcXbZ9/+tOf4pVXXlF8AACgQxJwZKci5DV37tyct4pcfvnlcfDBBxd1nzfeeKPCAwAAHZaHjGanIhT0wXrppZeaXL/vvvsWdX9PPfVUTJs2TeEBAIAO/Tss5495AUfDmigBhch1m0oxrVu3Ls4//3wFBwAAOjS3qGSnIhQk16tii+n222+P2bNnKzgAANChCTiyUxEK0hozOBYvXhw/+9nPFBsAAOjwBBzZqQgFefPNN2PFihUl3cell16a82GmAAAAHYWAIzsVoeAP18svv1yy/l988cW45557FBoAACA8ZLQ5VISCvfLKKyX74J533nl5P8AAAAAdRb4ZHBUVFYr0EQIOCjJkyJA47LDDStL3TTfdFM8//7wiAwAA/D+3qGSnIuQ1aNCgmDJlSvTq1avofb/44otx2WWXKTIAAMB6BBzZqQg59e/fP+65557YbLPNit73+++/H6effnqsXbtWoQEAANYj4MhORWjSxhtvHFOnTo1tttmmJP1/73vfi7lz5yo0AABA1h/zAo6GNVECGtO9e/e46667YqeddipJ/1OnTo0HH3xQoQEAABphBkd2KkIDVVVVceutt8bQoUNL0v/rr78e5513nkIDAAA0QcCRnYqwgYqKirjmmmtixIgRJel/9erVcdppp8WqVasUGwAAoAkCjuxUhA1ccsklceihh5as/3PPPTf+/ve/KzQAAEAOAo7sOisBEf+euXHppZfGCSecULJ93HjjjTFlyhTFBgAAyCNfwFFRUaFIHyHgIDp16hQ//elPY/To0SXbxyOPPBKXXHKJYgMAABSgvr4+7+84NiTg6OgXQOfOce2115b0tpTnn38+xo8fn/cDCgAAwL+5RaUZv2+VoOOqqqqKG2+8MQ466KCS7WPevHlx4oknRm1trYIDAABlpbHbPJq69aNYywtt27lz7p/rAo6GBBxFMmzYsFi9enWbfwgKXV5VVRWjR4+OHXbYoWQ1qa2tjYcffjgOP/zwZp9j1vMs5R+jch3LcqxJKc+znGpVLv9QpjrGqX5e29sY+7waS2NsjP0b4zthR/hO2B4JOAQcJTNy5MgYOXKkQqynW7duMXbsWIUAAAAoMgFHQwKOIlm8eHEsW7aswfLGnjvR1LMoWtq2Keu3raioiIEDB0aPHj1KWo958+bF0qVLS16HLLVpzbEo13Mrh/PNcm6pjaVza/3jNZbOrb2dm3/v2te5+Qym9z3FZ9C5ldP3lL59+8a9994r4BBwtL7rrrsubrnllrI+xt69e8eUKVNKHm5ERBx88MGxZMkSFwYAAEAzbLLJJjnXCzgaqYkSdAz9+vWL++67L/bYY49W2V9r7QcAAKA98haV7FSkA+jdu3fce++9seuuu7baPocPH67wAAAAzSTgyE5F2rlu3brFHXfcEbvsskur7lfAAQAA0Hz5ni3Skd4YUygBRzvWuXPnuOmmm+LTn/50q+97p512ik033dQgAAAANIMZHNmpSDtVUVERP/vZz2K//fZrs/2bxQEAANA8Ao7sVKSduvDCC+Owww4r6T5mzpwZNTU1Ta7fd999DQQAAEAzCDiyU5F2aPz48XHKKaeUdB/PPfdcnHjiifHXv/61yTYCDgAAgObJF3BUVlYq0kcIONqZL37xi3H22WeXdB+vvvpqHHvssbFy5cp4/vnnm2y39dZbx6BBgwwKAABARh4ymp2Aox0ZOHBg/PznPy/phT537tw4+uijY/ny5RER8cILL+Rs7zkcAAAA2blFJTsVaSe6desWt956a2y88cYl28eiRYviqKOOioULF/53Wb6Aw20qAAAA2Qk4slORduLyyy+PIUOGlKz/mpqaOOqoo2LOnDkbLH/33XfjrbfeanK7ffbZx9QpAACAjPLdoiLgaKQmSpC+448/Po444oiS9V9bWxvHH398vPrqq42uzzWLo1+/fiUNXgAAANqrXLM4BByN1EQJ0rbHHnvExRdfXLL+161bF6eeemr8+c9/brKN21QAAACKL1fAYaZ8QwKOhHXp0iWuvfbaqKqqKkn/9fX1ceaZZ8YTTzyRs12uN6lEeNAoAABAc3+TNflj3gyOhjVRgnSNHz8+Pvaxj5Ws/x/+8Idx//335203a9asWLduXZPr99prr5KFMAAAAO1VXV1d0z/mBRwNa6IEadp2221j/PjxJev/5z//edx2220FtV21alW89tprTa7v3r17DB061KABAABkkOsWlcrKSgX6CAFHoq644oro0qVLSfr+/e9/H5dffnmmbfLdpuI5HAAAANl4Bkc2nZUgPV/72tdK9lyLN998M8aNG5f3ncsf9fzzz8dxxx3X5Prhw4fHj3/844iI2GSTTWLPPfeMXXbZJfr16xd9+/bd4P/36dMnVq5cGUuWLInFixfH4sWL//uf586dGzNmzIhly5a5EAAAgHbNW1SyEXAkpnfv3nHhhReWpO8PPvggvvGNb0RNTU3mbV988cWc63fbbbf42c9+Fp/61KcKem5Iz549Y/PNN290XV1dXTz77LPx+OOPx7Rp0+KNN95wYQAAAO2Oh4xmI+BIzLnnnhubbrppST44Z5xxRrz++uvN2n727NmxYsWK6NmzZ6Pru3TpEkceeWRRjrWysjL22muv2GuvveL888+PN998Mx577LG4+eabY+HChS4SAACgXTCDIxsVScigQYPimGOOKUnf11xzTTz66KMt+uDlm8VRKttuu22cfvrpMXPmzBg/fnzJnk0CAADQmgQc2ahIQk455ZSSXMRPPPFE/OQnP2n29hUVFXHEEUfE4MGD27Q+G220UZxzzjkxY8aMOPDAA10wAABA0gQc2ahIIjbeeOMYPXp00ft9880341vf+lbmh4r+xy677BIPPvhgXH311bHFFluURa0GDhwYt912W9x7772x8847u3gAAIAkeYtKNgKORBx33HHRo0ePon9YzjjjjGY9VLRXr15x8cUXx+9+97sYNmxYWdZs+PDh8dhjj8URRxzhAgIAAJLjIaPZqEgCqqqq4uSTTy56vzfffHM899xzmbf76le/Gk8//XScfPLJUVlZWfa1u/rqq2PChAkuJAAAICluUclGRRJwyCGHRP/+/Yva5z//+c+48sorM21TWVkZl156aVx//fVNvsK1XE2YMCGuuuqqqKqqckEBAABJyBVwlPv/2NwWBBwJGDNmTNE/JN/5zneitra24G169+4dd911V5x44onJ1nH06NFx1113Ra9evVxUAABA2fMMjmwEHGVu+PDhMWTIkKL2efvtt8ezzz5bcPuBAwfGb37zm/jc5z6XfD333XffeOCBB4o+IwYAAKDY3KKSjYqUua9+9atF7W/OnDlx2WWXFdz+05/+dDzyyCOx/fbbt5ua7rzzzvHLX/4yunXr5gIDAADKloeMZtNZCcpbsWdNfPe7341Vq1YV1PaTn/xkTJ06tV0GAbvttltcddVVcfrpp7vIAICSa2oqeTGWZ52mXoy+2+J8inGe5XTcxTjPFI67PV2zbTGWuZ4hKOAQcJTMgQceGNtss01RPwQbb7xxDBgwoGjHOH/+/Bg1alSMGjUq77H07NkzDjjggHY9y+GQQw6JwYMHx9///vd2/Y9WOf3x949W+/likuoXLWNsjP0w8m9MW/2NACg2AUcjf5cjojspCGQAACAASURBVF4Z/m3ChAleJwoAAEDZW7hwYey+++4KsR4zOIrk1Vdfjblz5zZY3tg9U03dR/XR5cOGDSvawzDnz58fL7zwQt5jiPj3cze22GKLDjN2a9eujccffzyWLVtWlHErZdumlOIYWvt8s9SgXMfHuXXMczOWzs25Ff/flfb8GfT3xbm5Tp1blrZPPPFEbLfddo22N4NDwFEyd999d9xyyy1F66+qqipeeeWVov2AP/zww2PevHl5206cOLFDhRv/qfWuu+4aX/jCF2LlypUuZgAAoCzU1dU1uU7A0UhNlKA8DR06NDbaaKOi9HXXXXcVFG7svffeccopp3TIeldXV8cZZ5zhwgMAAMpGrtfEVlZWKtBHCDjK1Gc/+9mi9LNy5cq4+uqr818InTrFxIkTO3TNTzvttBg0aJCLDwAAKAteE5uNipSpYr0e9t5774133303b7vRo0fHrrvu2qFr3qVLlw4f8gAAAOUj1wwOb3JqSMBRpnbaaaei9DN58uS8bXr27Blnn322okfEfvvtF1/84hcVAgAAaHO5Ag4zOBqpiRKUn169ekX37t1b3M9f//rXePnll/O2+/a3vx2bbbaZwv+/iy66KKqqqhQCAABoUwKObFSkDG2++eZF6WfKlCl522y55ZYd9sGiTdl2223j1FNPVQgAAKBNCTiy8ZrYMtS/f/8W97Fy5cr49a9/nbfdqFGjokuXLm1ynq+++mrceuutUV1dHQMHDozq6uqorq6OTTfdtM3HYMyYMXHzzTfH2rVrXZAAAECbEHBkI+AoQ8W4XeShhx6KFStW5G138MEHF/346+rq4sknn4y+ffvG0KFDm2zXp0+fmDp1aoPlgwYNimOOOSZGjx7dZmHHpptuGgcccED85je/cUECAABtItdbVDxktCGRTxkqxgyOQn6Y9+/fP2cAkdW8efPiyiuvjD333DOOP/74eOyxx3K233LLLaNnz54Nls+ZMyd+9KMfxdChQ+PUU0+Np556KucHu1SOO+44FyMAANBmzODIRkXKUEufwbF27dp45pln8rY76KCDipL6zZo1K4488sjYe++94+qrr4533nknIiJef/31vNvusMMOOc/j4YcfjiOPPDI+85nPxOOPP96q47DPPvvEoEGDXJAAAECbEHBkoyJlqKUBx1/+8pdYtWpV3nYHHnhgi/ZTU1MT5557bhx00EGNzrJ47bXX8vax/fbbF7SvuXPnxoknnhgTJ05stediVFRUxLHHHuuCBAAA2kSugCNCyNGgHkpQflp6i8rTTz+dt02/fv1i7733bvY+fv/738dnP/vZmDRpUtTV1TXaZv78+bFy5cqc/eSawfFR9fX1cdNNN8UhhxwS8+bNa5WxGD16tFfGAgAAbULAkY1qlKGWzuAoJODYb7/9orKysln9X3vttXHCCSfEokWLcrarr6+P2bNn52yTJeD4jxdffDG+/OUvt8oDQDfZZJM44IADXJQAAECry/csQg8a3ZCAo515//3348UXX8zbbtttt83c99q1a2PMmDFx+eWX500S/yPfbSrNCTgi/n17zJgxY+Luu+8ueU332WcfFxYAANDqzODIRjXK0OLFi5u97d///vcmbxlZX9++fTP3feGFF2aeNZHvQaNbb7119OjRo9nne/bZZ8dzzz1X0vHYY489XJQAAECrE3BkoxplaMmSJc3e9o033iioXZ8+fTL1e++998akSZMyH0++GRwVFRUxePDgZp/vmjVr4pvf/GYsXLiwZOOx0047Rffu3V2YAABAqxJwZKMaZaglAcc//vGPgtplmcHxt7/9Lb7//e8363gKeZNKc29T+Y+FCxfGySefHGvWrCnJeHTu3Dl22203FyYAANCqBBzZqEYZasktKsUOOJYsWRInn3xyrF69ulnH8/bbb8cHH3yQs01LA46IiOeff77ZIUwh3KYCAAC0Ng8ZzUbAUYbK6RaVCRMmxNtvv92iD2S+53AUI+CIiLjnnnvi97//fUnGRMABAAC0tnwBR3PfjNleCTjKUHNncHz44Ycxd+7cgtr27t07b5t58+bF448/3uLzKdWbVBpz0003lWRMdt99dxcmAADQqtyiko1qlKH58+c3a7sVK1bEunXrCmq7dOnSvG2mTJmSNzEsRL6Ao7q6Orp27VqU2s2cOTNefvnloo9J1oeyAgAAtJSAIxvVKEMvv/xyQQHERy1btqzgtvPmzcu5ft26dXHPPfcU5XzyBRydOnWK7bbbrmj1K8Usji5durgwAQCAViXgyEY1yvQifvrppzNvt3z58oLb5psl8sQTTxTt1aut8SaV9T344IPxzjvvFHVMKisr3d8GAAC0Kg8ZzUbAUaZmzJiReZssAUe+Z3X89re/Ldq5LFiwIN5///2cbYoZcKxduzZuu+22oo+JWRwAAEBrMoMjG9UoU80JOIp5i8qCBQuKej6t9SaV/5g8eXJRnh+yPgEHAADQmgQc2ahGmfrXv/4Vs2fPzrRNXV1dwW3z3aJS7Fs85syZk3N9MZ/BEfHvsKclr7dtTLEehAoAAFAIAUc2qlHGss7i6NevX8FtZ8+enfONK4sWLSrqueS7JWabbbYpev0KefZHpg+LPx4AAEArEnBk/M2mBOXrySefzNQ+S8BRU1MTzzzzTKPrVq1alfeZGVnluyWmR48esckmmxR1n8UMONatWxeLFy92UQIAAK3GQ0azEXCUsaeeeirTbRZZAo6IiGnTprXahyTfDI6I4s/iyPfcjyzeeuutnDNeAAAAii3fDA5vetyQgKOM1dXVxR133FFw+6wzIJoKOLp16xabbbZZUc+lkICjurq6qPss5gyOfM8QAQAAKDa3qGTTWQnK25QpU+K73/1uQW/w6NKlS2y00UbxwQcfFNT3vHnz4tVXX42dd965wbptttkm3n333aKdx8KFC2PNmjU5z2Prrbcuau1mz54d9fX1RZmR8uabb7oYAYAWaew7SVPfU4q1vFR9l/K4i3GOKZ9Pa49lW12brtnC2vfp00fAIeBofQceeGCjt1gU4wMzb968GDx4cEHHcfXVVzf5rIjG+m7qtouzzz670VkLLTmf2tranAHHkUceGdtvv31RvySsXLkyNtpooxaP79ChQ+P6669P8o95Of2R78hfQFI+n478BcQY+5Lph1HH+jem1NcVQLH5O/SRekREvTL824QJE2LChAkKAQAAQNnbb7/94uWXX1aI/2cGR5G89NJL8cYbbzRY3thTb5t6Em6utiNGjCjoIaJLliyJ6dOnZzqGvfbaKwYOHLjB+qVLl/73GR3NOd7Glu+5556xww47NHnsNTU18dBDDxWtZhERhx12WPTs2bPF43vPPffEihUrilKH1mrblHI93izbZ6lBSufr3NI9t/b6Gcxybq5T5+bc0vn7Yiydm3Nr23PLsv1ll10WJ5xwQpPH4hYVAUdJ/OpXv4pbbrmlZP1/9atfbfIWifX17ds3Lrjggli2bFnBfe+4444xffr0DaY39e3bN3784x/Hv/71r6Kdw5gxY+KCCy5ocn3Xrl3j+9//fqY/LvmMHDmyxQHH66+/Ht/5zndc5AAAQKvykNFsVCMRDz74YLz66qv5B7RTp/jsZz+bqe/XXnstHnvssQbL999//6KeQ743qXTt2jU233zzou6zR48eLe5jxowZLkAAAKDV5fsffwUcH6mHEqThww8/jIsvvrigtiNGjMjc/9VXX91g2UknnVTU9yoX8qrYYr5JZcCAAdG9e/cW9yPgAAAA2kJdXV3uH/QCjg3roQTp+MMf/hBPPfVU3nb77bdf5h/2s2bNismTJ2+wbLvttotDDz20aMc/f/78vG2qq6uLtr/dd9+9xX2sWbMm/vd//9fFBwAAtDq3qGSjGom56KKL8l7k/fr1i+OPP75Zfb/99tsbLPv+979f0MNNC7FixYpYsmRJzjblFnD8+c9/jlWrVrnwAACAVifgyEY1EvPKK6/Efffdl7fd6aefHt26dcvU9/vvvx/f/e53N1i29dZbxxlnnFG04583b17O9dtss03R9lWMgOP+++930QEAAG3CMziyUY0EXXHFFVFbW5uzzeabbx7HHnts5r5nzJgRt99++wbLli5dWrRjzxdwFGsGR/fu3WO33XZrUR+LFy8WcAAAAG3GMziyUY0ELViwIK677rq87caNGxddu3bN3P8Pf/jDuOeee/773996662iHXu+B40W6yGjX/nKV1r8BpU77rgj1qxZ44IDAADaRL5bVCoqKhRpPQKORF133XXxt7/9LWeb/v37xzHHHNOsD9GECRNi0qRJsWbNmgbP5WiJfAHHVlttVZQU8sgjj2zR9mvWrIk777zThQYAALQZz+DIRjUStW7duvj2t7+dd4bB+PHjY+ONN27WB+ncc8+NIUOGxAsvvFC04853i0pVVVVsscUWLdrHoEGDYq+99mpRH7/+9a/j3XffdaEBAABtRsCRjWok7LXXXosrr7wyZ5v+/fvH1Vdf3ex9fPDBB7F69eqiHXO+GRwRLX8Ox+jRo1s0VWvt2rVxww03uMAAAIA2JeDIRjUS94tf/CL+8pe/5Gyz//77x6mnnloWx7tgwYJYu3ZtzjYteZNKr169mnVbzvp+/vOfx+zZs11cAABAmxJwZKMa7eCCP+OMM2LVqlU525177rlFeW1qS9XV1eV9pkdLZnBMmDAhNt1002ZvP3v27BbNeAEAACjm772cP+gFHBvWQwnSN2fOnDj//PNztqmqqopf/OIX0bt37zY/3nzP4Wjum1R23HHHOOmkk1r0x+Oss87KO8MEAACgNXhNbDaq0U5MmTIlJk+enLPNNttsUxazE/I9h2PAgAHN6vfiiy+Ozp07N/u4Jk2aFM8995yLCQAAKAv19fW5f9ALODashxK0Hz/4wQ/i+eefz9nmgAMOiEsuuaRNPwj5Ao7m3GIycuTIGD58eLOP6aWXXorLLrvMRQQAAJQNt6hkoxrtyNq1a+Ob3/xm3tebnnTSSXHjjTdGly5d2uQ4892istlmm2Xqb8cdd8z7Nplc5syZE8ccc0ysXLnSRQQAAJQNt6hkoxrtzDvvvBNjxoyJdevW5Ww3cuTImDp1aps8kyPfDI5+/foV/EHdaqutYurUqbHxxhs361gWLlwYRx55ZN5QCAAAoLXlm8FRUVGhSOsRcLRDzzzzTJxzzjl579fae++949e//nVsscUWrXp8+QKOTp06Rb9+/fL207dv35g6dWqzj7+mpiaOPvrovDNKAAAA2oJncGSjGu3U5MmT49xzz83bbuedd46HH344dthhh1Y7tpqamli+fHnONvluU+nevXvceeedMXjw4GYdw4oVK+KEE06IV1991cUCAACUJc/gyEY12rFf/vKXBYUcAwYMiN/85jcxZsyYqKqqapVja8mDRgcMGBBTpkyJoUOHNmvfc+bMia985Svxpz/9yUUCAACULc/gyEY12rlJkyYVFHL06tUrLrjggpgxY0bsv//+JT+ufAFHUzM4Dj300Jg+fXp8+tOfbtZ+Z8yYEQceeGC8/vrrLg4AAKCsmcGRjWp0AJMmTYrzzjuvoLaDBg2KSZMmxa9+9avYZZddSnZM8+fPz7n+ozM4evfuHTfccEPccMMNzX4w6k033RTHHnts3ttjAAAAyoGAIxvV6CBuv/32OP/88wtuv88++8S0adPiJz/5SebXthYiywyOz3/+8/Hkk0/GoYce2qx91dTUxPjx42PixIl5p3gBAACUCwFHNp2VoOO47bbboqKiIi666KKC2nfq1CmOPvro+PrXvx5PPfVU/O53v4snnngiFi1a1OJjyRdwDB48OE477bQ46qijYvvtt2/2fh544IG48MILi3LMAAAArUnAkY2Ao4O59dZb4/3334+LLrooevXqVdA2Xbt2jf322y/222+/qK+vj+effz6mTZsW06ZNi9dee61Zx/Huu+/mXL///vu36Fkg//znP+Pss8+OmTNnGnQAACBJAo5sBBwd0D333BNPPfVUXHHFFfGlL30p07YVFRUxdOjQGDp0aJxzzjkxZ86cePzxx+Oll16KOXPmxNy5c/POlqisrIyuXbuW5NxWr14d1157bVx//fWxZs0agw0AACRLwJGNgKODWrBgQRx//PHxta99Lb73ve9FdXV1s/oZNGhQnHLKKRssW7lyZSxYsCBWrVoVq1evjtra2qitrY2qqqqorq6Orbbaquivo62trY2pU6fGjTfeGG+99ZYBBgAAkpcv4KioqFCk9Qg4Orj7778/HnzwwRg5cmSMGzcuhgwZ0uI+e/ToEdttt12rHH9NTU1MmjQpbr311liyZIkBBQAA2g0zOLIRcBB1dXXxwAMPxAMPPBCf//zn49RTT43hw4dH587le3ksXLgwbrnllrjzzjtjxYoVBhEAAGh3BBzZCDjYwB/+8If4wx/+EP369YsDDzwwRo4cGZ/5zGfKIuxYsWJFTJ8+PR599NF49NFHPWMDAABo1+rq6nKuF3BsSMBBo957772YPHlyTJ48+b9hx7777hvDhg2LAQMGtNpxLFq0KH73u9/FY489FjNnzoy1a9caHAAAoEMwgyMbAQd5rR92RERsscUWMWzYsBg6dGgMGzYshgwZEt26dSv6fi+++OL4xS9+EfX19QYBAADocPL9FhJwbEjAQWbvvPNOPPzww/Hwww//d1m/fv1iyy23jAEDBsSWW2753//cs2fPqKura/T/dtxxxxg2bFiT+6mtrRVuAAAAJdPUW0iKsTzrG04aa58vwBBwbEjAUSTDhg2L1atXl+wDUy4fxkKXL1++PJYvX56z74033jjn+X3pS1+K7t27t+pxt0bfWcYzhfNp7Wu21Mddqn+cjHFFkrXqKGPs75K/S8bY3yV/l/xd6gjXbHsk4BBwlMTIkSNj5MiRClFEI0aMiBEjRigEAABAIwQcGxJwrOe9996Lf/zjHw2WN3WbRKmXN6WU+23Nc91oo41ixx13bPI8Fy1aFPPnz2/XNWjr8W6rGjjXtrvOSlmDFM5VDYx3RzvXrDVwrmmfqxpkP1/n6lxTP9e3337bD/n1VESEhxzQJgYNGhR//OMfm1x/9913x1lnnaVQAAAA5GU+C23mvffey7m+R48eigQAAEBBBBy0mdra2pzrBRwAAAAUSsBBm1m7dm3O9RtttJEiAQAAUBABB22mvr4+1qxZ0+R6MzgAAAAolICDNrV69eom15nBAQAAQKEEHLQpAQcAAADFIOCgTeW6RUXAAQAAQKEEHLSpXDM4unfvrkAAAAAURMBBm8oVcFRVVUVVVZUiAQAAkFdnJWg/qqqqYtddd43dd989Pv7xj0fv3r2jS5cu0bVr16ipqYm5c+fGvHnz4tlnn41XXnmlLI45V8AREdGlS5e8r5MFAAAAAUc7MHjw4DjttNPi61//enTt2rWgbf75z3/GAw88ELfcckssX768zY491zM4IiJqa2sNMAAAAHm5RSVhW2yxRdx+++0xY8aMOProowsONyIiPvaxj8VZZ50VM2fOjMMPP7zNziHXDI41a9ZEXV2dgQYAACAvAUeiRowYEU888UQccMABUVFR0ex+Ntlkk7jmmmvimmuuiU6dyutyWLVqlYEGAACgIAKOBI0dOzbuuuuu6NevX9H6PPzww+PKK69sUVjSHLleBbty5UqDDQAAQEEEHIk56qij4rzzzitJEHH00UfH2LFjW/V8cgUcZnAAAABQKAFHQr74xS/GlVdeWdJ9nHXWWbH11lu32jn17NmzyXVmcAAAAFAoAUcievbsGT/96U+jsrKypPvp3r17XHLJJa12Xm5RAQAAoBgEHIn49re/HZtvvnmr7OvLX/5yDBw4sFX21aNHjybXuUUFAACAQgk4ErDNNtvEqaee2qr7HDVqVMn30aVLl6iqqmpy/dKlSw0+AAAABRFwJOCII47IGQSUwqGHHlryfeS6PSUi4qWXXjL4AADwf+zdeXhMd+P//1f22GKJiF2C1tIWraq2WrUvtfZjj12LotRVRdHiptaitZYbdaulqpSb2vfW3hu1b7VUbRFBIiURSX5/+JmvMUtmkpmYw/NxXb0q5z1zzplzzsw553XeCwCHEHAYQEaEDY8rVaqUQkJC3LoMex2MStLBgwfZ+QAAAAAAhxBweLgXXnhBxYoVeyLLLlGihFvnby/gSElJ0eHDhzkAAAAAAAAOIeDwcOXLl39iy3Z3wGGvI9Pz588rNjaWAwAAAAAA4BACDg8XHh7+xJZdsmRJt86/VKlSNstongIAAAAAcAYBh4crWrToE1t2tmzZ3Dp/ewEKAQcAAAAAwBkEHB7O3R192hMXF+fW+ZcuXdpm2YEDB9j5AAAAAACHEXB4OHeHDPbcvn3bbfMOCAhQWFiY1bLo6Gjt27ePnQ8AAAAAcBgBh4d7kh1tujNcef755+Xj42O1bM2aNUpKSmLnAwAAAAAcRsDh4dxZiyI1x44dc9u87XUw+ssvv7DjAQAAAABOIeDwcIcPH34iy7179662bNnitvmXKVPG6vSbN29q586d7HgAAAAAgFMIODzctm3bnshyN2/erPj4eLfM29fXVw0aNLBatnbtWt2/f58dDwAAAABwCgGHhztz5owuXryY4ctdsWKF2+Zds2ZNm6PD0DwFAAAAAJAWBBwGsHnz5gxd3pEjR7Rq1Sq3zb9Vq1ZWp8fExGj79u3scAAAAACA0wg4DGDOnDlKSUnJsOUNHjxYycnJbpl33rx5VbVqVatla9euVWJiIjscAAAAAOA0Ag4DOHnypNasWZMhy1q5cqV2797ttvm3bNnS5vCw8+bNY2cDAAAAANLES1IKm8HzvfDCC9qwYYNbl3H+/HnVqVNHsbGxbpl/lixZtHXrVhUoUMCibN++fTY7HgUAAAAAIDXU4DCIo0ePujXgiIuLU4cOHdwWbnh5eembb76xGm5I0syZM9nJAAAAAIA0I+AwkM8//1xxcXEun298fLy6du2qU6dOuW3de/XqpXr16lktu3LlilavXs0OBgAAAACkGQGHgfz999/64osvXDrPmJgYtWjRQlu2bHHbeteoUUN9+/a1WT5p0iTdv3+fHQwAAAAASDP64DCg7777TnXq1En3fC5fvqyIiAi31twoVaqUli1bpqCgIKvlu3fvVpMmTTJ0lBgAAAAAwNOHgMOAgoODtXnzZoWEhKR5HidPnlRERISuXLnitvVs2rSpxowZo0yZMlktj4+PV7Vq1XT+/Hl2KgAAAAAgXWiiYkDR0dHq0KGD/vnnnzS9/8cff1TDhg3dFm74+/tr7NixmjRpks1wQ5LGjh1LuAEAAAAAcAlqcBjY22+/rfnz58vPz8/h92zbtk1t2rRRUlKSW9apRIkSmjx5sl588UW7r1u/fr06deqk5ORkdiQAAAAAIN0IOAyuXr16mj59unx8fBx+z549e/Thhx8qMjLSZeuRM2dOffrpp2rXrl2q67Jr1y5FREQoISGBHQgAAAAAcAkfSUPZDMZ1+vRpXb16VTVr1pSXl5dD7ylYsKCaNWums2fP6syZM+lafmBgoDp06KDZs2fr9ddfl7e3/VZPhw8fVkREhO7cucPOAwAAAAC4DDU4nhI1a9bUlClTlC1bNqfed/ToUU2ePFmrVq1yqtlKqVKl1Lp1azVt2tTmCCnWltWyZUtFR0ezwwAAAAAALkXA8RQpXry45s6dq/DwcKffe+HCBf3222/63//+p/379+uvv/5ScnKyqY+MokWLqkyZMnrppZdUsWJFlStXzqn5z5s3T4MHD6ZZCgAAAADALQg4njJBQUH69ttvVbVqVY9Yn3/++Ud9+/bV8uXL2TkAAAAAALehD46nTEJCgpYvX66YmBiVL19eAQEBT2xd1q9frw8++EC7d+9mxwAAAAAA3IoaHE+x4OBg9e/fXxEREal2/ulKu3bt0siRI7Vv3z52AgAAAAAgQxBwPANefPFFDRs2TK+//rrblpGYmKht27Zpzpw52rJlCxsdAAAAAJChCDieISVKlFDjxo3VuHFjFSlSJN3zS0pK0s6dO7V8+XKtXr1aMTExbGQAAAAAwBNBwPGMeuWVV9S4cWOVLVtWBQsWVGhoqN1mLCkpKTp37pwOHz6sw4cP69ChQzp8+DChBgAAAADAIxBwQJLk5+en/Pnzq2DBgsqePbtu376t27dvKzY2Vrdv31ZMTIzu3bvHhgIAAAAAeCQCDgAAAAAAYHjebAIAAAAAAGB0BBwAAAAAAMDwCDgAAAAAAIDhEXAAAAAAAADDI+AAAAAAAACGR8ABAAAAAAAMj4ADAAAAAAAYHgEHAAAAAAAwPAIOAAAAAABgeAQcAAAAAADA8Ag4AAAAAACA4RFwAAAAAAAAwyPgAAAAAAAAhkfAAQAAAAAADI+AAwAAAAAAGB4BBwAAAAAAMDwCDgAAAAAAYHgEHAAAAAAAwPAIOAAAAAAAgOERcAAAAAAAAMMj4AAAAAAAAIZHwAEAAAAAAAyPgAMAAAAAABgeAQcAAAAAADA8Ag4AAAAAAGB4BBwAAAAAAMDwCDgAAAAAAIDhEXAAAAAAAADDI+AAAAAAAACGR8ABAAAAAAAMj4ADAAAAAAAYHgEHAAAAAAAwPAIOAAAAAABgeAQcAAAAAADA8Ag4AAAAAACA4RFwAAAAAAAAwyPgAAAAAAAAhkfAAQAAAAAADI+AAwAAAAAAGB4BBwAAAAAAMDwCDgAAAAAAYHgEHAAAAAAAwPAIOAAAAAAAgOERcAAAAAAAAMMj4AAAAAAAAIZHwAEAAAAAAAyPgAMAAAAAABgeAQcAAAAAADA8Ag4AAAAAAGB4BBwAAAAAAMDwCDgAAAAAAIDhEXAAAAAAAADDI+AAAAAAAACGR8ABAAAAAAAMj4ADAAAAAAAYHgEHAAAAAAAwPAIOAAAAAABgeAQcAAAArg8QfAAAIABJREFUAADA8Ag4AAAAAACA4RFwAAAAAAAAwyPgAAAAAAAAhkfAAQAAAAAADM+XTQAAAJC6rFmzKjg4WL6+vrp+/bpiY2OVkpLChgEAwEMQcADwOH5+fmrevLleeeUV3b17V3v37tXKlSu5kYDHHadBQUHKli2bzf+CgoKUNWtWBQUFafjw4bpy5QobzkD79/XXX1e1atVUpUoVhYeHy9/f3+w1iYmJio6O1u7du7V27Vpt2bJFt2/fTnXezZo107vvvitJmjlzpnbu3OnUumXPnl0tW7ZU6dKldfHiRa1cuVInTpxwah4BAQHKli2bsmbNajpeH/13lixZzKZv3bpVy5Yt48AAAHg0L0ncMeCZFBoaqm3bthlmfYcNG6aFCxc+9fslJCRE8+bNU5kyZcymb9u2Te3bt9e9e/c4eJ8Cc+fOVcWKFQ2zvrdu3dLrr78uScqVK5f2799vcbObmipVqujUqVPsfAMEGxEREerdu7dCQ0Odem9iYqKWLl2qr776ymaYVaJECa1du1YBAQGSpN69e2vx4sUOL6N06dKaO3euChQoYJp27949DRw40KFzxOuvv64ff/xRfn5+Tn22yZMna9SoURwgAACPRg0OPLO8vb0VFBRkmPXNnTv3M7Ffxo4daxFuSNI777yjTz/9VCNHjuTgfQrky5fPUN+/TJkymf7t5eXldLgBY3jzzTc1btw4hYWFWZTdvHlTly9f1o0bN5SSkqKQkBDlyZNHuXLlkpeXl6QH4UjLli3VuHFjzZ49W5MmTTKr0eHv769p06aZwo2H5yJH+fv7a/r06WbhxsPpo0aN0uHDh3X48GG78/Dx8XE63AAAwCgIOPDMSkpK0sWLF82m+fn5KU+ePKaLVUckJyfr8uXLDr8+KCgoTTd2RroZTKvg4GDVrl3bZnmjRo0IOJ4SzhzPycnJ2rNnj86dO6fLly/Ly8tLxYoV07vvvutQ0BAXF6eff/5ZZ8+eVWJiovLly6dChQqpatWqDq+Hn5+f/Pz8lJiYqPv37+vYsWMPTqK+vipUqJBZAAJjatOmjUaMGGF28x8ZGanZs2dr06ZNOnHihNVmcqGhoapZs6Zq1aqlatWqydvbW4GBgerRo4fq1aunrl27mkKHgQMHqlSpUhaBg6OqVKmi4sWL2zxG27Rpo/79+9udxz///GM6fh/+7jp73gMAgIAD8DDXrl3Ta6+9ZjE9MDBQrVq10vDhw1N9sjZ06FAtX75c165dc2rZAQEBKliwoN555x3Vrl1bb7/9NgGHZPWp6aPy588vb29vJScncwA/AwHHnTt3NG3aNP3www9Wq/uHhYVpzZo1yp49u815xMTEqGrVqrp69arV73rdunXVt2/fVI896UEHkzdv3lRMTIxq1KhhVlaiRAkNHDhQNWvWZOca0MCBA/XRRx+Z/k5MTNSYMWM0a9asVJvFRUZGav78+Zo/f77FcRAWFqaVK1fqX//6l86ePavOnTtbvN+ZgMNWuPHQ888/n+o8/vjjD4vjN0uWLPrggw/08ccfKzAwkAMCAGBYDBMLPCY+Pl5z5sxJtU300aNH9e9//9vpcEOSEhISdObMGX333Xdq0aKFGjZsmGq14mch4Dhz5ozd8r///ptw4ymRLVs2u+WHDx9W7dq1NWHCBJt9GZw/f14//fST3fn88ssvVsONh9/1ZcuWqUaNGpo/f36q65wlSxabZSdPnlT79u21fft2dq7BtGzZ0izcuHr1qho2bKhp06Y53efPw+Ogffv2iouLk/Sg+ciIESP0/fffW60l4UwTldRqC9o61lPzzz//aOLEiRowYAAHBACAgAN4Gu3bt89u+YYNG1y2rP/973+qX7++VqxYYfM1z0LAcevWLbvbYOnSpRyYT4EsWbLYfWq9d+9eNWzYMNXAS5LOnj2brhtC6UFNkX79+mn8+PF2X5c1a9ZU5zVu3Dh2sIGUL19eo0ePNv0dGxurVq1a6eDBg+ma74YNG9SoUSNdunTJNM1WvxfOBBzbt2/XrVu3bJavXLkyXev9448/WjTdBADASAg4ABvi4+PtlsfGxrp0eYmJierRo4fNC9TUnng/LQYOHKj9+/dbTF+3bp0mTZrEgfkUsHcsnz59Wu3bt1dCQoJD80qtRo8zT+DHjx9vdxQKezU4HmKUFANdAHl7a8KECWb9uPTu3VsnT550yfyPHz+uRo0a6fr163Zf50wTlevXr+vjjz821Q551IwZM7R69ep0rzfHMADAyOiDA/AgSUlJ6tu3r1577TWL4Qnt9TPwNLlx44YaN26s//u//1PZsmV19+5d7dmzx6U1ZvBk2TqW79+/r65duyomJuaJrduAAQP05ptvWu2Tw5EaHLdu3VJCQoLZKBnwTE2aNNFzzz1n+nv79u1au3atS5dx+fJldenSRYsXL5avr/VLLmcCDulB7ZAqVaqoVatWev7553XlyhWtW7dOu3btcsk6WwtPAAAwCgIOwMPExsbqs88+05w5c8ymPwtNVB690V28eHGq/aDAmGzV4Jg7d65OnDjxRNctMTFRQ4YM0dy5cy3KHKnBIYl+YgzAx8dHn3zyidm07777zi3L2r17t7788ksNHTrUarkzTVQeunz5cqpNqgAAeBbRRAXwQOvWrbNoA/4sBRx4ulmrwXHr1i199dVXHrF+GzZs0I4dOyymO1KDA8ZQrlw5FSlSxPR3QkKCtm7d6rblzZo1y2xoVrMLMW8uxQAAcBXOqoCH+vbbb83+DgwMtNlJHWAk1mpwLFq0yOX92qTH7NmzLaY5WoMDnq9atWpmf1+6dCnVfpfSIzk5WUOGDLFa5mwTFQAAYBsBB+ChVq1aZTECBLU48DR4/DhOSUnRvHnzPGodN2zYoMjISLNpBBxPjypVqpj9nVpHoK6wY8cOrVu3zmI6AQcAAK5DwAF4qKSkJIse8Qk48DR4/DjesWOHzp0753Hfvx9++MFsGk1Unh7Fixc3+ztz5swZstzp06dbXojRRAUAAJfhrAp4sDVr1ti9MQSM6PHj2BVDW7rD40/bCTieDv7+/hbNpB4ftcpd9uzZY9GRLgEHAACuw1kVyEB58+bVxo0btXHjRkVERKT6+r179+rGjRs2bwwBI3r8ON68ebNHrufhw4d169Yt0980UXk6BAcHW0wLCQlReHh4hiz/8RF6aKICAIDrEHAAGShHjhwqXbq0SpcurZCQkFRfn5SUpN9//930t7XRJwCjeTTgOHPmjC5cuOCR65mcnKzt27eb/ibgeDpkypTJ6vQGDRpkyPKXLl2qxMRE098EHAAAuA4BB5CB0lLFfd++faZ/Wxt9AjCaRwOObdu2efS6PjpcLE1Ung5xcXFWp3fv3l25cuXKkOXv2rXr/12I0UQFAACX4awKZKBixYo5/Z79+/eb/k0NDjwNHg04Dh8+7NHreuzYMdO/CTieDraGIw4KCtLUqVMzZDjujRs3mv5NDQ4AAFyHgAPIQGXKlHH6PX/88YdmzZqlWbNmWXROBxjRozWRHg0QPNHJkydN/6aJytMhPj5eV65csVr2zjvvaM6cOcqdO7db1+HRgIMaHAAAuI4vmwDIOFWrVnX6PXfu3NHgwYMdeq2/v7+yZs1q9b8sWbIoa9asWrhwof75559U5xUUFKSCBQua/rt//76ioqJ0/vx5nThxQikpKS7ZJl5eXsqUKZMyZ85s+r+tf1+5ckVr1651yXLLlSunOnXqKDw8XHny5FFISIh8fX0VFRWl69ev69KlS9qyZYt+++033bt3j4PXhR7WREpKStKpU6c8el1jY2N1+fJl5c+f3+0BR0hIiOrVq6ewsDAVKlRIBQsW1L179xQdHa0zZ85o48aN2rt3r5KSktz+ubNkyaLq1avrjTfeUL58+RQaGqrcuXMrNjZWUVFRunbtmv744w+tW7dOly5dMtwxuG/fPtWvX99qWbVq1fTbb79p8uTJWrRokVlHz65y/vx5DR48WIGBgTp06FCqr/fz8zP9Htr7759//tGSJUsMsQ/8/f319ttv65133lH+/PkVGhqq0NBQ3blzR1FRUYqKitKxY8e0bt06nT59Ol3L8vPzs3o+fPjvbNmyaeXKlYqMjHTou/Hw+1mwYEFJ0vXr13XhwgUdOXJEycnJGbYNw8PDVadOHZUoUUJ58uRRaGiosmfPrpiYGN24cUPHjh3Tnj179Ouvv9psmpWebfrGG2+oSpUqKlSokPLmzas8efIoISFB165dU1RUlE6dOqV169Z5fJANgIADQBpUrFhRYWFhLp9vjx491KNHD2XJksWhqtV//PGHWceljwoICFDjxo3VsWNHu7VNoqKitHbtWn3zzTc2n4Ta89lnn6lNmzbKnDmzAgMDHX7f+vXr0xVwZMmSRT169FCzZs1UoEABq68pXLiw6d+dOnXSP//8ow0bNmj8+PE6c+aMU/ulffv26dq3DRs21NWrV62WjRgxQjVr1nR6nocPH9b777//RL8Lf//9t27cuKGLFy8qISHB47+7Gzdu1KuvvqqbN2+67behQ4cOevfdd+1+h7t166ZLly5p2LBhWrlypVvW5eWXX1bv3r31zjvvyN/f36K8QIECKlWqlCSpadOm+vLLL3X06FFNmzZNy5YtM8zv8Y4dO2wGHNKDEO7zzz9Xv379tGrVKq1atUpbt27VnTt3XLYOs2bNslt+4MABU7jr6+vY5drRo0c9PuAIDw/Xp59+qpo1a9ps9vX8889Lkho3bqyBAwfq3LlzmjNnjv7zn//o/v37Di2nadOmGjp0qLJly+bQuTEqKkr//e9/rV8s+/qqTp066tixo9544w2b84iJidHmzZs1YcIEp84XzggMDFTnzp3VpEkT03Z6XP78+SVJlSpVUufOnRUbG6sFCxZo2rRpio6OTtfyCxQooE8//VR169a1ObJb8eLFTf/u27ev/v77b82fP1/Tp08362AXAAg4AIPy8fHR559/7pZ5BwUFKUeOHA6/vkSJEhYBh5eXl3r06KFu3bopZ86cqc4jJCREbdu2VbNmzTR69Gj9+9//dmqds2fPniGd+T36+Zo0aaJBgwYpNDTUojwhIUGXL19WfHy8QkNDlTNnTnl5eZlCkcaNG6tevXqaO3euxo8fr5iYmFSXmSNHDtPTvTT/QNu5qQkODk7T/B15QulujRo1MtT397PPPnPbd3fMmDFObY8CBQpoxowZevfdd9WzZ0+Hb/ZSExwcrIEDB6ply5amY1+S7t+/r23btunEiROKjIxU9uzZ9dxzz6l69eqmGi0vvPCCpk6dqjZt2mjgwIFmzXo81fLlyzV06FAFBATYfZ2/v7/ee+89vffee0pISNBvv/2mX3/9VTt37tSJEyfc9rTey8vL6m+VkWXOnFkff/yxPvzwQ7PAISUlRXv27NEff/yhq1evKlOmTAoLC1OtWrVM56Pw8HANGzZMrVq10sCBA7Vnz55Ul5clSxanzjMlS5a0GnC0bt1affr0Ud68eR06t7333ntq0KCBZsyYoZEjR7q0tmPjxo01aNAgU4DxqOTkZFPNlxw5cig0NNS0nYOCgtStWzc1a9ZMffr00YYNG5xevr+/v7p3766ePXtajES0b98+7du3T1euXJG/v7+KFCmiGjVqKE+ePJKkQoUKacCAAWrZsqUGDRqkrVu3cmEIgIADMLK+ffuqfPnybpn3gQMHNG/ePAUEBKhw4cIqXbq0zacqDwOOR2XNmlVTpkxRrVq1nF52YGCghg4dqvz582vo0KEOv+/KlSumKqve3t6mUMEd/Pz8NHnyZDVs2NBselJSkpYsWaL58+ebjVQjSaGhoWrRooU6depkukDz8/PTBx98oDp16igiIkJ//vmn3eVevnxZsbGxdvfF45KSknTy5ElTgGKvdsOZM2f0559/KiQkxOHOZyMjI1Ndb2SMihUravLkyWkOwRo1aqTAwEC9//776b7JLlWqlBYtWmQxdPW8efM0fvx4Xbt2zeI9mTJlUrdu3dSrVy9TTY833nhDa9asUceOHT1+dJyYmBgtWbJErVu3dvg9AQEBqlGjhmrUqGGax+7du7Vr1y7t3LlTx44dc1ngkZKSYtY0zlptGiPJmzevfvzxRz333HNm0zds2KAhQ4bo/PnzVn+7H94QP/wdLVWqlJYuXaq+ffvqhx9+sLvMkydPat68efLz81PBggVVsmRJu32rPH5u9PPz06hRoxQREeH8xbWvr3r06KGCBQu6JIgMDAzU9OnTrZ6nN2zYoB9++EGbNm0yqx3h6+ur+vXrq1evXipZsqQkKXfu3Jo7d66+/PJLTZs2zeHl58qVSwsXLrSo2bl9+3Z9/vnnVpsa+vj46L333tOQIUMUHBxsCqoWLlyoYcOGafr06ZwIALiFl6QUNgNgqUmTJpo8ebLNckdO0H5+furXr5969OhhUTZmzBhNnDjR5eudLVs2ffbZZ+rYsaPV8u3bt6t58+aSpLCwMM2dO9fsovP27ds6deqULl++LF9fX+XJk0dlypRJtYpv//79NW/evDSvd1BQkNq2bauePXvaDAXWr1+vDh06OHVROGvWLFWrVs3iRr979+5mQzVaExwcrKlTp6py5cpm02/evKl27dpZBCPWlC1bVp988kmqzUnGjBmjmTNnpqkKfPny5dWjRw/VqVPHavmSJUs0ZcoUj+/vIi3atWun0aNH2ywfMWKEpk6dmqHrdObMGYsnnJJUpUoVnTp1So0aNdKUKVPMRs84dOiQdu3aZQoT8ubNq8qVK1vcdD1uyJAhmjlzZprX9eWXX9bChQvNQrLExER169ZNq1evdujY++GHH8yaGty7d09dunTR+vXrPfrYCQoK0rZt21xWUyI2NlZ79uzRb7/9pg0bNuivv/5y2bpmzpxZBQoUUMOGDdWlSxebQ4YfPXo0TU3XHjV9+nSLQFiSJk+erFGjRjk9v8KFC2vx4sVmzf8k6V//+pdmzJiR6vvDwsL0888/m9WgSElJ0RdffKHvvvvO4fV4WAOhb9++ZrWUHjp37pwqVapkCgK+++47vfrqq6by+Ph4HT9+XFeuXFFycrLp3JhaM8tJkybZ/Y1KTfbs2TVv3jyzdXl4vPXp00erVq1K9diZM2eO3n77bbPpX3zxhWbPnp3q8kNDQ/Xjjz9aNIf5+uuvNW7cuFRrqISGhmrZsmUWTXS/+uorff3111xsAiDgAIwQcISEhKh27drq3r27zX433BVwPPTTTz+ZLtasXcRlyZJFa9euNQ1de+TIEX399dfavHmzRc2BoKAgtWrVSp9++qnNjhbj4+NVrVo1q0/inFGlShUtWLDA6gWoMwGHt7e3Fi5caBFOxMbGqk6dOg6vp4+PjxYsWGAxn7t376pBgwYOdZ7m5eWl8ePHq2XLllbLr127pgoVKqSrbbK3t7fmzZtn0ZHtyJEjNWXKlKf2e2q0gCN//vyaO3euKTD89ddfNWTIEJvNOt58802NHj3arE3748dh5cqV09TRZ+nSpbV8+XKLfhB69+6txYsXOzyfSpUqadGiRWaBzf3799W4cWOzYa49UcWKFbVw4UKr+yu9Tp48qfXr12vZsmUuHQHr5Zdf1ooVK6wOL+tpAUeePHm0du1ai+Yd33zzjcaOHevwfIoVK6bVq1dbBDsffvihVqxY4dQ6TZw4Uc2aNbOYnpCQoPDwcPn6+mrJkiV67bXXJD3oEHbChAlas2aNRQfdmTNnVsOGDTVo0CBTLYXHJScnq3Hjxvrf//7n9L7Ili2bVqxYYRF03rlzRw0aNNDx48cdmk+FChUsmt8kJCSoZs2admv1BQUFae3atRbXMXPmzNGgQYMc/hz58+fXunXrLLbRZ599pu+//54LTgAuxdhkQBp17dpVGzduNPtv27ZtOnz4sP744w+NHTvWLZ2KOsrWk5mH1dDHjx+vYsWKKSUlRaNGjVLdunW1Zs0aq80iYmNjNWPGDNWqVctqdXXpQW2JLl26pHu9t27d6lD76tT06tXLIpSQpJ49ezoVwiQlJalr164WT2MzZcqkGTNmODSyRkpKigYPHmyz/wtfX990d7yWnJxs8cR9w4YNT3W4YTSvvPKKZs2aJT8/PyUnJ2vQoEFq2bKl3T4rdu7cqYYNG9oM0jJlyqS2bds6vS6BgYGaNm2aRbixdOlSp8IN6UGHnY8/ifX19dWkSZPcEhy40p49e9S+fXuH+tVxVokSJdSzZ09t3rxZq1evVtu2bZ3qVNmWAwcOuK2TWVfy8vLSN998YxFu7Nu3z6lwQ3oQGvbv399i+pgxY5yugWOrc9eAgAAFBQVpwIABpnBj1qxZqlq1qpYsWWJ19LE7d+5o0aJFqlatms1ORb29vdWzZ880bcORI0darcX18ccfOxxuSA/CTGuft1evXnbfZ+065tSpUw6P7PbQ5cuX1atXL4vaHkOGDFF4eDgnBwAEHIAnCA0NVenSpc3+e+655xQcHGy19kFGszWsXtasWdW9e3c1bNhQKSkp6tevnyZPnuzQ0JPnzp1T+/btbbYzb968uc1e8Z3hzIWbNRUqVFCfPn0spm/atClNnavFxMRo5MiRFtOLFSvm8BPNuLg4TZo0yWpZrly59NZbb6V7uz3azvv+/fv64osv+KJ6kDFjxihz5sxKSUlRz549NWfOHIfed+vWLdOIPta0aNHC6tN8ewYPHmxR5Tw+Pt7qce6IyZMnW4z4U7RoUbd1ruxK27dvV7Vq1bR9+3a3LaNcuXIaM2aMdu3apfbt2zs8Koothw8f9vjt2rlzZ1WpUsViujP9NT1q+fLlFs0Cs2fP7nQzhzNnzthsVtG2bVt169ZNkjRhwgQNHjzYoZGeoqKi1KpVK929e9dqefXq1S2a6KTm//7v/9SkSROL6Q9H9XFUgQIFbJ4L6tevb7N/l+bNm1utyTNs2LA0DVW9ZcsWbdq0yWxapkyZNGnSJHl7czsCgIADeOISEhIUGxtr9l9aTvruEhUVZbPsYdXSf//731qwYIFT8z148KDNJ7yZM2e2aCecFukZxs7Ly0tjx461esM3YcKENM/3l19+0dGjRy2mN23aVK+//rpD8/jhhx9048YNq2UfffRRurfbo09K16xZowsXLvBF9SAPm6VMnDjR6SFVL1y4YLNJW2hoqKkTQUeUL1/ealOvn3/+OU3DPksP+u2w1h9Cu3btbA7J7EmuXLmi5s2bq0OHDukOWO0JDQ3VqFGjtGTJElMHxmldX08WGhqqgQMHWkzftWuXQ30X2WKtz44qVarYHbr1cXfu3FFcXJzVsofr/Msvv2jcuHFOrdvFixdtdtzp7e3tVIidI0cOq+F5cnKy07VfmjRposyZM1stCwwMVL58+SymBwUFafjw4RbTjx8/rs2bN6d5/1kbca18+fKqXbs2JwgABBzAkzZmzBiVLFnS7L8iRYropZdeUtu2bbVgwQKHnvy4i72Ov7y8vHTu3Lk0d3w2d+5cuzdPT1L16tWtVuk9ceKEDhw4kK7tuXDhQqtlqVXzfSg+Pt5m06HKlSvrpZdeStdnf/Qi35HO45DxDhw44PSN00MLFiwwG1njUY+PbmBP165drU5funRpuj7b409npQd92DjTMfCTtn79etWoUUOtW7fW+vXr3RZav/baa1q3bp1LAmFP1KlTJ6s1A9J7jG3dutXqiCTvv/++S9bby8tLN27c0IABA9L0/vnz59us4ejMvm7fvr3VjmQ3bdpks3amLXXr1rVbbm2o5DZt2lhdfnr33+7du63WROvUqRMnBwAEHIAnSk5OVnR0tDZt2qS+ffuqcuXKbq32nB5TpkxJcwBz8OBBXbx40WrZ48MAZrTu3btbnb5lyxaX3PxYU6VKFYfDie+++85mUwNro+04Knv27KaA48iRI9q7dy9fSA/0zTffpHko0Zs3b9oM6V588UWH5lG4cGGrNzzR0dHavXt3uj7biRMnrD4Zj4iIsHoT5alSUlK0ZcsWdejQQRUqVNDAgQO1devWdPeT87jQ0FAtXbpUFSpUeKqO8cyZM6tdu3ZWyxwZmceeuLg4q33W1K5d22U1hebMmZPmWoSRkZH6/fffrZbZ6ijYWuBg64Y/LU0sHx/++VH379/XuXPnzKb5+vraDIycaRpja3l//PGHxfRKlSo5VQsNAAg4gCfk77//Vps2bdJVpdMdbt265XQV+ccdOnTI5o32k1KsWDGbzUW2bduW7vlfunTJZvX11q1bOzSPmJgYzZ8/32pZ/fr109wxbcuWLU1NIKi94ZnOnz+vjRs3uuV7Z2sEh8e1bdvWavOt48ePpzrcoyPBwPXr1y2m58yZ02qHv0Zw9epV/ec//1FERIReeOEFdenSRUuWLLHobySt/Pz8NGPGDIf3nxE0atTI6nng0qVLunXrVrrnb62jax8fH9WrVy/d875//77N3+f0fkdz5Mjh0PsbN25sM5RIy++HvdFbVq9ebRHc1apVy2qzlbi4OJcMfWyro/IGDRpwkgBAwAEYwb179/TRRx/p5s2bHrNO27dvV3x8fLrmYWvkB0cv4tzB2rC4j97AuYKt+TjTvnrGjBlWnwZ7e3ubOrhzhpeXl9q3by/pwZP45cuX88XzQNu2bUt3iGDrxjooKMih99s6Tl01jKmt2knlypUz/P6Li4vTL7/8ol69eumVV17RG2+8od69e2vRokUWT8GdkTdvXk2ZMsUjOqd2hbfffvuJHGMvv/xyuud9+PBhm6NdZdS50VrHrNKDgCgtwdro0aOtdn56/fp1qx2+2vqNsDfakyv23yuvvMJJAgABB2AUt27dcrqnd3dKTydvD9kKbGz1yJ4R3nzzTavTY2Nj7Xa66oxTp05ZnV60aFGHhyu8evWqzbbMLVq0cLrzwSpVqphqfjzpvl9gmyuGP7bVSa219vKPy5o1q82mLLaanDnL1rH7NN68/PXXX1q8eLE+xHB9AAAgAElEQVQ++eQTVapUSeXKlVPXrl01Z84cpwOPd955x+bvl9HYqkXn7mPMFQGHO8+ND2vYpaZixYpWp//5559pWp/z58+rbt262rJli+7evavbt29r3bp1qlmzptXAxN37z9Z5sly5ck9NyAeAgAN4Jvz0008ub8OdVseOHUv3PGwNh/ck2bowPHv2rMuWcebMGZtlzvTkP23aNKtP8/39/dW5c2en1ulhJ47379/Xf/7zH75sHsoVIZutTi8dGSa2QoUKNl9na1QJZ5QqVcpm1fqnoQZHaq5du6aVK1dq0KBBqlSpkipVqqQJEyY4XCOgRYsWht8GYWFhZqM5PcrWk3tn5MiRw2Z/R4ULF1bOnDkNfW4sXLiwze2X1oBDehDMt27dWs8//7xKliypjh07Wj0uc+bMabWTblf9RmTKlMlmZ6vZs2dXkSJFOFEAIOAAjCImJiZd/UBUrVpVnTt3VufOndNdS8IVzWU8Jax5yM/Pz+aTIVe0+350P9riTCd3f/75p9auXWu1rG3btg49kZekQoUKqXr16pIetKd2Vd8AcM9vwJNkrwPg9N685M+fX1999ZXN8uzZsytTpkwesR+mTp2q6dOnq1+/fm5dzrlz5zRu3Di99tprGj58eKo3+PXq1VPWrFkNfYy78xgLCgrS119/bfc4stZ3hJHOjfY6q3ZFDYqkpCS7zeSKFy9usxZFevdflixZNHbsWLshlBGGlAbg+XzZBEDGOXjwoGrUqJGm9/bu3dvU2/68efPStR6uuOFPb18CrmavffOdO3dcthx7T+ecfXo4ZcoUqyNaBAUFqV27dpo6dWqq82jXrp28vR9k1XQu6tlsDfHqCd+RoUOHqm/fvmmab2BgoEM3Jjly5PCIml8NGjSQr6+v7t69q6+//trtYW1iYqK+/fZbrVmzRvPmzVOxYsWsvu7h0+2tW7ca9hi3d4y9//77atKkSdouVn19VahQIdNvnat+g90RcKSHvc5mXVGDIj37r3nz5mm+fvHx8VGhQoVSrWn2JDspB0DAASANjh49mub3Pv/885IeDEWb3g5CPa32hbsvzFxRNfohe2GJsxfXBw4c0I4dO6x2jtq5c2fNnDnT7k2xv7+/WrVqJelB53i2hicEUvuO2KoW7+rlX7lyxWO2R6ZMmfTSSy9p//79GbK88+fPq379+lqxYoXNmg758+d/ao+x4OBgt48Wk94b5Cd9brR3Drl9+/YTXX7OnDnTHSC5e/8BgETAAWSotDYfCA0NNZ34XVkb4WlibxQJW/0WpIW9eTk6ksWjpkyZYjXgyJMnj5o3b253yMJGjRopV65ckqi9gfTdvCQmJrq9Vpajza4y0muvvZZhAYf0oJlS27ZttWnTJmXJksWiPL1NLJ40ewHH/fv3lZyc/MwdY854+HtuTUac++3tv6SkJJeeS60xehMtAJ6BgAPIQGm9QHm00y9X1kZ4VratK9v+Z86c2WZZWvbNtm3bdOTIEaujW3Tv3l0LFy60eVPwcGjY69evMzQsUmVvhILu3btr1apVz9w2eeuttzR9+vQMXeaFCxc0ffp09enTx6LM6AGHvSYkY8eO1ZQpU/gi2mEt9HrI0VFY3PUbMWPGDH355ZfsJACefy5iEwAZ58aNG1q3bp3WrVvn1MgelStXNv3bE0cv8ZRtm5ZQwln25mVvHeyxddEfFhamevXqWS0rU6aMaejN+fPnP/H+HeD57PUvEBAQ8Exuk3feeeeJhArz58+3WmPG6EM8c4ylT2xsrM2ytNQQdOX+CwwMZAcBMAQCDiADXb9+XR07dlTHjh21cuVKh99Xs2ZN079pomKdvY5TM6oGR3R0dJrmuWrVKp0/f95qWY8ePaxO79ixo6QHTQvmzp3LAYBU2QvgPGWEk4zm4+OjiIiIDF9uZGSkTp48afUcYWT2bpCf1WPMVdsvI5pvEHAAeBoQcAAeLiwszKxDOpqoWJeQkGDz6VeePHlcthx7T3uvXbuWpnkmJSXp22+/tVpWpkwZvf3222bTcuTIoUaNGkl6MDRsZGQkBwDSdfNia4jlZ0FERESqozu4w6VLlyymGT3gsBeiPcvHmCu+oxlR08je/nPleRQA3ImAA/BwjRs3NvubGhy27d271+r0sLCwVIcXdFR4eLjNsvSMYrJ48WKbAUnPnj3N/m7ZsqXpadqsWbPY8XDI4cOHbZY5Mszr0ypfvnxq3rx5hi/X2m/5X3/9xTH2DLt48aLNstKlS7t9+SdOnLA5kgz7D4BREHAAHiwwMFDvv/9+qhfFeGDXrl1Wp/v7+7ts+EVbAcfly5dtNjNxREJCgs2w4q233lKZMmUkPegErl27dpKkgwcPat++fex4OGT//v02fz8eDkP9rBo0aJDdESTc4fEn4vHx8dqzZ4+ht+O1a9esNr3hGHPM77//rvv371stK1WqlNuX/88//+jAgQNWy4oWLZohHZ0CQHoRcAAeLCIiQsHBwRYXILBu586dNstcdXH4MGh43Pbt29M97++//163b9+2WvbRRx9JkqpWraqwsDBJDA0L5yQmJmr37t02j2t39JGQI0cONW/e3OM7mMyVK5cGDhyYocssVKiQ2d87duwwfCej9n4Lc+XKZdbc0lX8/PzUunXrDOmEMyMChoMHD1otCw0NVfHixV22rDJlylj9Xv72229WXx8QEKCyZcu6/DN7eXkpIiLC7jDWAOAMAg7AQ2XPnt2iaYJEDQ57Dh06pNOnT1ste+edd9I9/xIlSthsB+2KYVpjY2P1/fffWy179913FR4erg4dOkiSoqKi9N///pedDqesWbPG5k1ilSpVXL684cOH65tvvtG+fftUoUIFj942rVu3tujvxl1KlixpUats3bp1T/UxJpl3mO0qPXv21FdffaX9+/eb+iYysl9//dVmmas+X9GiRbV69WodO3bMVCPQkf1Xq1Ytl3/ejh07aty4cdq/f7/atGnDjzSAdCPgADzU2LFjrXbKRsBhW0pKiqZPn2617NGhdtOqatWqVqcfOnRIW7dudclnmDlzptUhX729vfXll1+qWrVqkqR58+bZbCsN2PLTTz/Z7Ovl4cg8rlKjRg01adJEkhQXF2fzybSn8PLy0syZM91SyyC1G9VLly5p8eLFT8UxtnPnTpvNHNq1a+ey/pCkB0HRxx9/LElKTk622UzRSOz9tr/33nsu2X69e/eWt7e3MmXKpD/++MOs7NixYzbPZ61atZK/v7/LPmuhQoVMNae8vb1dUhMyc+bM8vLyyvgbqv9/ez4JmTJleiKfGSDgAOCwVq1aqUGDBlbLaKJi39KlS63ewBUvXlyvvPJKui5ebD1dmjRpksvW/9q1a/rxxx+tllWtWlXe3t5KTEzUvHnz2Nlw2r179/Tvf//batlbb73lsifs2bJl09ixY01/Dx8+3Gpw52mCgoI0b9485c6d223LyJs3rzp37mw2bdy4cYbYPo6aMmWK1emFCxfWBx984JJl+Pj4aMKECaZ+ISZNmpTmkaw8ydWrV22GXUWLFlWrVq3SNf/w8HC99957kqQjR47o0KFDDu+/4OBgU6DkCuPHjzcNvT5z5sw092Pl5eWlbt26adeuXTp9+rROnDih2bNnu/V7/FBYWJgWLlyokydP6s8//9TOnTvVrFkzty/Xy8tLnTt31s6dO/Xnn3/q5MmTmjNnjkJCQjjRgYCDTQB4lg4dOpjdGDzu7t27bKRUbuBGjhxptaxXr15pnm+DBg1UtGhRi+k7d+60W6U3Lb799lslJyfbLP/ll18YGtaTT6zenn1q/f77722O1jBu3DjlypUrXfPPkiWLZs+erbx580qSVq5cqVWrVhlm/xUuXFg//vijRR8ZrropGTlypOmmTnow8siSJUuequ/A2rVrbXaAPGDAgHTXknkYbpQrV06SdODAAc2YMcMl+8edN6SOmjp1qs3A67PPPktzh7i+vr4aPXq0aVjkcePGWX3dzp07bdbi6Nmzp15++eV0b4svv/xSb731liTp9OnTGj9+fJrnN23aNH3xxRcqUqSIvLy8lC1bNtWtW1dr1651a+fBL730ktavX68qVaooS5Ys8vLyUlhYmCZOnGjqN8tdJk2apH/9618KCwuTl5eXsmbNqtq1a2v9+vUWfbcBBBwAJCnVDstcfRMTEBCgIUOGaOTIkaaLD2scbaJir7dzV4xnb+sE6gkn1sWLF2vZsmUW02vWrKk33njD6fllzZpV/fv3t5h+7do1devWTSkpKS5d//Pnz+uXX36xWU7noo7fNPj6+mbo+mTPnt1mh5quuNC29f3Knj27w/OIi4tT165drVaDDwkJ0cSJE03DEDsrR44cWrx4senG5cKFC+rbt6/hjqtSpUppzZo1evPNN10638GDB6tOnTqmv6OiotSxY0clJSU5NR9bHTK64ni3FXDZOy89LiUlRR9++KFu3bpl9Vw3bdq0NAdp/v7+mjlzpukp+e3bt9W9e3enmuzZ2k7uPDdmy5bN4eYd58+f16BBg2zOf86cOWlqKvLVV1+Z+pnZs2eP1q9fb/O1PXv21NWrV61uuylTppgCzLSELBMnTlSnTp0kPRhB7MMPP0zzw5tmzZrZ7Jskf/78GjJkiFt+I/z8/DR58mRlzZrVannfvn2tPhRxhcaNG5ua/z0uNDRUQ4cO5eIABBwALKXW2Zyrhrzz9vZWs2bNtH37dnXt2jXV1zvaROXhky1r0vv0xdvbW9WrV7daFhIS4rIhWdOjf//+FtVdvby8NG3aNKerrY4aNco0cslDSUlJ6tatm6Kiotyy/raqCB84cED79+/nC/r/e+211+yWZ0R/Co+qXbu2zbKSJUumO8yx9b0rXLiw1T57bDlw4ICGDRtmtax69epatmyZU/N7+Ju4bNky0+/LzZs31bFjR8XGxhriWDp37pzZ9zlXrlxatGiRPv7443SPAuPn56cRI0aY/cbfu3dPnTp10uXLl52eX8WKFW3ug4IFC6Z5PbNly6YXX3zRalndunWdCvYvXbqkXr16WQ2AX3jhBa1evdrp70S+fPk0f/58U0h07949denSRX/99ZfD8yhRooTNvhLSe26UbHek6uXlpZdeesnh+SxYsECLFi2yuf9nzpzp8MgxPj4+GjBggFq0aCHpwYOSPn362H1PdHS0PvzwQ6vD1oaHh2vNmjVOb6+QkBDNnj1bTZs2NZ1HP/roIx0/fjzN2/thcxtbbP1mptcLL7xg9zrQz8/PJZ2bp+Uz16hRg4sDEHAAMD8BDxkyxOwpmzVNmjRRy5YtnR4X3svLSzlz5lStWrU0evRo7dmzRxMnTlSBAgUcen9qNTi8vLz01ltvafTo0TZf88knn6T5xFuyZElNnTpVlSpVsrn8sWPHOvx53CUuLk7NmzfXmTNnzKaHhobqp59+cujJir+/v8aOHWvxpOTu3bv64IMP3Nqh3ZEjR7Rt2zaL6dTeeMDX11eVK1fWu+++a/d1jRs3Vps2bZz+njrLx8dHLVq00PDhw22+pnfv3ipfvnya5p8/f35NmDDBVDPC2vK//fZbp5pVzJ4922a18LJly2rdunXq3r17qjVPihcvrmnTpmnz5s0qUaKEpAcjArVs2TJdNy4ZKSYmRq1bt1b16tW1ZcsWs+Osf//+2rlzp5o3b56mmntly5bVihUrzDpxjYmJUbt27Ww247B33Hfs2NFmH01eXl7q379/mp4cFypUSFOnTrW5v8PDwzVw4ECnAuyNGzfqk08+sVq7onDhwlq5cqX69+9vc3Sqh/LmzasRI0Zo165dpu9AYmKiOnfubPV30pZXXnlFU6dOtVn+/vvvq0GDBmnaz0WKFNGIESNsPlmXpGHDhjkVug4YMEAbNmywGaRs3LhR1atXt7u+b731ltavX282Kttnn32ms2fPprr8vXv36sMPP1R8fLxFWWhoqH7++WcNHjxYRYoUsTuf4OBgffHFF9q9e7cpAEpOTtbHH3+c7uZrjz98eFzu3LnNmoS5SmrLfXhMuEN4eLjd8uzZsz8VwyYDaeUlKYXNgGc1yPjhhx/MLgxz586t3LlzO9VW9u7du4qMjHQoeMiVK5eCg4PTVY24devWZhfgRYsWNXUaGBAQoPz58zvck/edO3cUGRlpqhrap08fi5EOWrRooc6dOysgIED58uVz+EIhJSVF0dHRioqKUkpKiu7du5fqzeijAcynn35qMX39+vWmYVIdlStXLs2fP9+iRktcXJymTZumRYsWWVTD9ff3V/369dWjRw+VKlXKrCwqKkrt27e36HneHSpVqqSffvrJ9Pe1a9dUoUKFZ2b0lFdffdVmUFegQAGnmmUkJCTo4sWLSkhIsCgbPHiwdu7c6fT6LVq0yHTxXKBAAYdDlJs3b+rq1aumJ9tfffWVxRChI0aMUMWKFeXt7a08efIoZ86cDv0upaSkKDIyUjdu3DD7DkdHR9t8T9OmTTV+/Hib6x8fH6+NGzfq/PnzunTpkmJiYlSoUCEVLVpURYsWVfny5c1usM6cOaOOHTvqzz//9Mjj6sKFC2a/wUlJSWrTpo3pRtnLy0tdunTRwIEDLbbJxYsXtWHDBq1fv147d+60+V3MnTu33nzzTUVERFiM4HT8+HF16tQp1VoHFSpU0KhRo8x+lwoXLuxUM4dHz0tz5841dU78+eefmw0LHBIS4nDnhCkpKfrzzz/NPnvDhg3tngPfeustzZo1y+ZNV1JSkrZs2aLTp0/r8uXLun79uvLnz6/w8HCFh4fr1VdfNatFExUVpc6dO2vv3r02l5k1a1bT8N1+fn7Kly+fzeYE1n4vrl69aqoxOWbMGIugoWrVqho0aJB8fX2VL18+ZcuWzeFj8NatW4qMjDQ1TWratKnV5jzSgxqTgwcPVpcuXWzO78qVK1q7dq3++usvRUZGKm/evHr++edVunRplS1b1iJksTXamL1g6D//+Y/N2o/Jycnavn27jh8/rsuXL+vatWsKDQ1VeHi46Tfi0WuHmJgYde/e3exaJq0WLVpkd5S0K1eupDlYtqd8+fJauXKl3df069dP8+fPd/my582bZ7dmSlRUlMV+B54lvmwCPLMHv6+vSpcune75ZMqUyaEk31Ueb6ISEBCQ5s+ROXNmsycB1i7+goOD0zT/RwMjSS65KU/LELk3btxQ06ZN1bt3b3Xp0sV0c5A1a1b169dPffr00dmzZ/X333/rzp07KliwoIoVK2b1YnX58uUaNmyY1XbJ7rBjxw4dOHDAVA34WRsaNlu2bC75jj78nhQrVszmctKiRIkSTjfjkB70n/BoHwrW+lMoXLhwmr93efPmNWsfn1qgumTJEp09e1b/+te/rN4IBAYGqn79+qkuOzk5WYsXL9aQIUN0+/ZtwxxnI0eONKsFkJKSohkzZmjlypXq0aOHIiIiTDfXBQsWVMeOHdWxY0fdu3dPV69e1bVr10y/Cblz51bevHmtnhPi4uI0Z84cTZw40aHfsvQe/4+vw6P9SxQsWDDN8/by8rKohZBa/xzbt29X3bp1NXToUKtNOHx8fFSjRg2HqtZv2LBB/fv3T/V32MfHJ82fMSAgwOzpu7VaLdmzZ0/z/HPkyGE2T3vf0eTkZA0dOlSHDh3SoEGDrNZ2yZcvX6rDPMfHx+uLL77QggULnF7f/fv3q27duho8eLDV2kPe3t6qXLmyQ8Oxb9++Xf369UvziCmP27Rpk93l2uvPKj2OHj2qq1ev2uyL5M6dO9q8ebNblr1582a7AYe7PjNgFDRRAQwmLTf5T4ubN2+meZuNHDlSlStX1ooVK8x6p/fx8dFzzz2natWqqX79+ipXrpzZDW9KSop27dqlBg0aqHv37hkWbjx05MgRU0D0/fff8wWAW+zfv18NGjRQ586dnW5WkpiYqLVr16pOnTr65JNPDBVu/Pzzz/r222+tll2+fFmDBg1SxYoVNXXqVIsbsoc1Kl599VXVr19f9evX1+uvv24RLERHR2vy5MmqWLGiRo0a9cz+hp87d07t27dXkyZNtGfPHqc6Z05JSdH27dvVokULtW/fPsN/hz3lWH3zzTc1bNgwp4bDTUlJ0aZNm1SrVq00hRsPXbp0SV27dlW9evX066+/2h3py5rff/9dHTp0UPPmzV0WbkjSnDlzbNaoPHPmjN1R6dIjPj5eAwYMsNpBcEpKioYPH56m/nUc8f3339ts3nb+/Hm7TZSBZwFNVAB4HFtNVMaPH5+uoeQeypo1q6pVq6batWuraNGiypMnj6lpUnR0tK5du6YLFy5o8+bN2rhxo9s6Ek1Nvnz5tGvXLvn7+2vp0qVmbagBdypSpIhq1qypypUrq0CBAgoJCVGuXLmUkpKi2NhYRUZG6uDBg/rf//6nNWvWmDWJ8XRTp06Vj4+Pbt++rc8//9xqsyVbChcurLfffluVKlVS/vz5TbXUgoKCFB8fr+joaEVHR+vq1avavXu3fvvtNx07dszlIy09DfLkyaMaNWqoWrVqKlSokPLkyaPg4GB5e3srLi5O169f16FDh7R//36tWbNGly5dYqM9vHj38lLZsmVVvXp1vfHGG6ZtlyNHDt2/f18xMTE6ffq0duzYoZUrV+r06dMuX4dcuXKZ9l9YWJhpHXx9fXX79m3duHFDhw8f1oEDB7R27VqXhhqP8/f3V8+ePdWgQQOFh4crMjJSmzdv1pdffqm4uDi37ouXXnpJn332mcqWLatMmTLp+PHjGj9+vEua39jj5+enHj16qFGjRipatKgiIyO1detWDR8+3FAhM0DAAeCZ0K9fP/Xu3dtiep8+fcz6TXH1BaMkj7oRGT16tNq1aydJqlOnjg4dOsTBgSfG29vb6ae2zwofHx+nh3qFMX6H+Y46t/+8vLye+Do8qePnSS37SX5mwBPRBwcAj2OrI7rff//dbcv0tIuDQoUKqVWrVpIetFkm3MCTRrhhG+HG0/k7zHfU+f33pPfhk1z+k1o23xvAHH1wAPA41gKO6Ohojx2VwR0++eQT0wgOkyZN4qAAAAAAUkHAAcDjWAs4fvvtt2fm84eHh6tp06aSpAMHDmj79u0cFAAAAEAqaKICwONYG3rTqCOI+Pn5qUSJEpKkU6dOmY3gYsugQYNMwy6OGDGCAwIAAABwAAEHgAyTP39+tWrVSgULFtTu3bu1bt063bp1y+w1AQEBKl26tNm048ePa/fu3Yb7vLVq1dL48eMVHBws6f8Ns7d//36b76latareffddSdKGDRu0c+dODhwAAADAAYyiAiBDvPLKK1qwYIGyZ89umnbkyBHVrVvXrIO+V199VStWrDB7b9euXbVy5UpDfd7Q0FDt2LFDmTNnNpt++fJlvfHGG0pMTLR4j7+/v7Zu3aqwsDAlJCSoRo0aOnPmDAcPAAAA4AD64ADgdj4+Pvr666/Nwg1JevHFF9WhQwezaW+++abZ3ytWrDBcuCFJ7777rkW4IT2oxVK8eHGr7+nXr5/CwsIkPRgilnADAAAAcBwBBwC3CwsL03PPPWe1rHHjxqZ/Z86cWe+//77p72vXrmnAgAGG/MyFChVy6vXNmzdX9+7dJUk7duzQzJkzOXAAAAAAJxBwAHC7fPny2SwrV66cSpcuLW9vb/Xp00chISGSpH/++Uft27fXzZs3DfmZ//rrL5tlV69e/X8/wt7e6t27tyZMmCBJunDhgrp27ark5GQOHAAAAMAJdDIKwO3sNbXw8fHRf//7X126dEnPP/+8JCkxMVEdO3bUwYMHDfuZ9+7dq5SUFHl5eVmU9ejRQ3v27FGJEiUUERFhapZy/fp1tW/fXjdu3OCgAQAAAJxEJ6MAMsSmTZtUqlSpVF936dIl9ejRQ3v37jX8Zx46dKi6dOni0GvPnDmjNm3a2K35AQAAAMA2H0lD2QwA3G3v3r1q3LixAgMDrZYnJiZqyZIl6tSpk86ePftUfOYdO3YoZ86ceumll+Ttbb1F4L179zRt2jT17NlTUVFRHCgAAABAGlGDA0CGCQoKUufOnVW2bFkVKlRId+7c0d9//61Dhw5p8eLFun79+lP5uUuVKqWmTZuqePHiCgsLU2xsrC5duqRt27Zp/fr1io6O5uAAAAAA0omAAwAAAAAAGB6jqAAAAAAAAMMj4AAAAAAAAIZHwAEAAAAAAAyPgAMAAAAAABgeAQcAAAAAADA8Ag4AAAAAAGB4BBwAAAAAAMDwCDgAAAAAAIDhEXAAAAAAAADDI+AAAAAAAACGR8ABAAAAAAAMj4ADAAAAAAAYHgEHAAAAAAAwPAIOAAAAAABgeAQcAAAAAADA8Ag4AAAAAACA4RFwAAAAAAAAwyPgAAAAAAAAhkfAAQAAAAAADI+AAwAAAAAAGB4BBwAAAAAAMDwCDgAAAAAAYHgEHAAAAAAAwPAIOAAAAAAAgOERcAAAAAAAAMMj4AAAAAAAAIZHwAEAAAAAAAyPgAMAAAAAABgeAQcAAAAAADA8Ag4AAAAAAGB4BBwAAAAAAMDwCDgAAAAAAIDhEXAAAAAAAADDI+AAAAAAAACGR8ABAAAAAAAMj4ADAAAAAAAYHgEHAAAAAAAwPAIOAAAAAABgeAQcAAAAAADA8Ag4AAAAAACA4RFwAAAAAAAAwyPgAAAAAAAAhkfAAQAAAAAADI+AAwAAAAAAGB4BBwAAAAAAMDwCDgAAAAAAYHgEHAAAAAAAwPAIOAAAAAAAgOERcAAAAAAAAMMj4AAAAAAAAIZHwAEAAAAAAAyPgAMAAAAAABgeAQcAAAAAADA8Ag4AAAAAAGB4BBwAAAAAAMDwCDgAAAAAAIDhEXAAAAAAAADDI+AAAAAAAACGR8ABAAAAAAAMj4ADwP/Xjh2QAAAAAAj6/7odgc4QAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgTx0fEZoAAAbRSURBVHAAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4A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/+MYxPkNE2IkGABNSVOQ7HM+7DuUt3Q7mjpUFmcjr1unl8NuVbD7m6plQSJtQIuLMFbkdTOVo4XNGpkZmZshRj5KVGyRR6oW/+MYxP8P82okOACTLDX0hZ/NMwIyV2MZOyleP56///LM+7JePftrs1g+k+jJlnog5CvNvjmcS3cDTZkDKhtl8r35yOV+jgtR/+MYxPoOQ2YYEABTSKmIjcsiPb5ZfXf7UH8zFxqUaDwmSPCizYFGwQGwyZIIX0pOLKIpjETlo1U/56E0qoAczJRAWM5G8HJA/+MYxPwK8148GABNSUZyKUXZ6Ik9o/PNrPO4Xd3k45s5ZbFOhlkKfJ2SMjFyc9KZLMjQ60Ps1iyQiQycScX711gnjk89MiiI/+MYxP8TC2oIAACTEM0f+Z/SNfy///f9lc5XLIHLMz46Yck2h2K0dtqT0bECVySOS9qTEGr9rfbPd2TQq7VMzuRDg3vYJJEn/+MYxO0ME2YcEABNSJ2RxzMIKcrhC0U0F3kImjyb03for+r/zq1OmMvJ/7vbWJlSA5zVyGFyjBs22U4ODIPh4hDbrVUbv/ln/+MYxPcNW2YcEABNSGWrMglL8cicpXM60b///+8h4bKpxqdMwhMvkpTs/hZPkDJUtJu2TccDTSJKRRGOl+v/1//9Omu/2pdE/+MYxPwPu2oQCABTLHWi9r07yp99tVRSsxysZJwFXKcDYBwxzjoPraIHIgUpiCmopmXHJwp268/L++7oMjOERqsPR/WT59fe/+MYxPgMU1ooGABTSLv/8+5at2WSQuEzX00HAFGyipKM5p5VFojkAmjknWmIKaimZccnBdUObf4ovk//MMX///X/yt/uOXlx/+MYxP8SW2IIAACTEKktqFqTxCJSJF/JNmSImOhln2AosFn0lTEFNRTMuOTguMlVVVVVVVVMQU1FMy45OC4yVVVVVVVVVVVV/+MYxPAMw2IgEABTSVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy45OC4yVVVVVVVVVVVV/+MYxPgK215IGACNTFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8MW2I4GABNSFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8Ks1oUGABTZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8AAANIAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEFHMTAgU2Vjb25kcyBvZiBTaWxlbmNlAAAAAAAAAAAAQW5hciBTb2Z0d2FyZSBMTEMAAAAAAAAAAAAAAAAAQmxhbmsgQXVkaW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8=\";\n","import type _algosdk from \"algosdk\";\nimport { PROVIDER_ID } from \"../../constants\";\nimport type {\n Asset,\n Wallet,\n AccountInfo,\n ConfirmedTxn,\n TxnType,\n TransactionsArray,\n TxnInfo,\n Metadata,\n} from \"../../types\";\nimport { audio } from \"../../media/audio\";\n\nconst getIsIOS = () => {\n if (typeof window !== \"undefined\") {\n return (\n /iPad|iPhone|iPod/.test(navigator?.userAgent) &&\n !(window as any)?.MSStream\n );\n } else {\n return false;\n }\n};\n\nconst isIOS = getIsIOS();\n\nabstract class BaseClient {\n algosdk: typeof _algosdk;\n algodClient: _algosdk.Algodv2;\n keepWCAlive: HTMLAudioElement;\n metadata: Metadata;\n\n static metadata: Metadata;\n\n abstract connect(onDisconnect: () => void): Promise<Wallet>;\n abstract disconnect(): Promise<void>;\n abstract reconnect(onDisconnect: () => void): Promise<Wallet | null>;\n abstract signTransactions(\n connectedAccounts: string[],\n transactions: Array<Uint8Array>,\n indexesToSign?: number[],\n returnGroup?: boolean\n ): Promise<Uint8Array[]>;\n\n protected constructor(\n metadata: Metadata,\n algosdk: typeof _algosdk,\n algodClient: _algosdk.Algodv2\n ) {\n this.algosdk = algosdk;\n this.algodClient = algodClient;\n this.keepWCAlive = new Audio();\n this.metadata = metadata;\n }\n\n async healthCheck() {\n return await this.algodClient.healthCheck().do();\n }\n\n async getAccountInfo(address: string) {\n const accountInfo = await this.algodClient.accountInformation(address).do();\n\n if (!accountInfo) {\n throw new Error(\"Unable to get account information\");\n }\n\n return accountInfo as AccountInfo;\n }\n\n async getAssets(address: string) {\n const accountInfo = await this.algodClient.accountInformation(address).do();\n\n if (!accountInfo || accountInfo.assets === undefined) {\n throw new Error(\"Unable to get account assets\");\n }\n\n return accountInfo.assets as Asset[];\n }\n\n async waitForConfirmation(txId: string, timeout = 4) {\n const confirmation = (await this.algosdk.waitForConfirmation(\n this.algodClient,\n txId,\n timeout\n )) as ConfirmedTxn;\n\n return { txId, ...confirmation };\n }\n\n decodeTransaction = (txn: string, isSigned: boolean) => {\n return isSigned\n ? this.algosdk.decodeSignedTransaction(\n new Uint8Array(Buffer.from(txn, \"base64\"))\n ).txn\n : this.algosdk.decodeUnsignedTransaction(\n new Uint8Array(Buffer.from(txn, \"base64\"))\n );\n };\n\n logEncodedTransaction(txn: string, isSigned: boolean) {\n const txnObj = this.decodeTransaction(txn, isSigned);\n\n console.log(\"TRANSACTION\", {\n isSigned,\n from: txnObj.from && this.algosdk.encodeAddress(txnObj.from.publicKey),\n to: txnObj.to && this.algosdk.encodeAddress(txnObj.to.publicKey),\n type: txnObj.type,\n txn: txnObj,\n });\n }\n\n groupTransactionsBySender(transactions: TransactionsArray) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function groupBy(objectArray: Record<string, any>[], property: string) {\n return objectArray.reduce(function (acc, obj) {\n const key = obj[property];\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(obj);\n return acc;\n }, {});\n }\n\n const decodedGroup = transactions.reduce(\n (acc: TxnInfo[], [type, txn], index) => {\n if (type === \"u\") {\n const decodedTxn = this.decodeTransaction(txn, false);\n const from = decodedTxn.from\n ? this.algosdk.encodeAddress(decodedTxn.from.publicKey)\n : \"\";\n const to = decodedTxn.to\n ? this.algosdk.encodeAddress(decodedTxn.to.publicKey)\n : \"\";\n const type = (decodedTxn.type as TxnType) || \"\";\n const amount = Number(decodedTxn.amount) || 0; // convert from bigint to number\n\n const txnObj = {\n groupIndex: index,\n amount,\n from,\n to,\n type,\n txn,\n };\n\n acc.push(txnObj);\n }\n\n return acc;\n },\n []\n );\n return groupBy(decodedGroup, \"from\");\n }\n\n async sendRawTransactions(\n transactions: Uint8Array[],\n waitRoundsToConfirm?: number\n ) {\n const sentTransaction = await this.algodClient\n .sendRawTransaction(transactions)\n .do();\n\n if (!sentTransaction) {\n throw new Error(\"Transaction failed.\");\n }\n\n const decodedTxn = this.algosdk.decodeSignedTransaction(transactions[0]);\n const waitRounds =\n waitRoundsToConfirm ||\n decodedTxn.txn.lastRound - decodedTxn.txn.firstRound;\n\n const confirmedTransaction = await this.waitForConfirmation(\n sentTransaction.txId,\n waitRounds\n );\n\n return {\n id: sentTransaction.txId,\n ...confirmedTransaction,\n };\n }\n\n keepWCAliveStart() {\n // Playing an audio file prevents Wallet Connect's\n // web socket connection from being dropped when\n // iOS goes into background mode\n\n if (!isIOS) {\n return;\n }\n\n this.keepWCAlive.src = audio;\n this.keepWCAlive.autoplay = true;\n this.keepWCAlive.volume = 0;\n this.keepWCAlive.loop = true;\n this.keepWCAlive.play();\n }\n\n keepWCAliveStop() {\n if (!isIOS) {\n return;\n }\n\n this.keepWCAlive.pause();\n }\n}\n\nexport default BaseClient;\n","export const ICON =\n \"data:image/svg+xml;base64,\" +\n \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNzcgMTg3Ij48cmVjdCB4PSItMTEuMzgiIHk9Ii0yNS45NyIgd2lkdGg9IjIwMC4wMiIgaGVpZ2h0PSIyMzEuNTMiIHN0eWxlPSJmaWxsOiNmZTU7Ii8+PHBhdGggZD0iTTk0LjA1LDU5LjYxYzIuMDUsOC40OCwxLjM2LDE1Ljk0LTEuNTUsMTYuNjYtMi45LC43Mi02LjkxLTUuNTctOC45Ni0xNC4wNS0yLjA1LTguNDgtMS4zNi0xNS45NCwxLjU1LTE2LjY2LDIuOS0uNzIsNi45MSw1LjU3LDguOTYsMTQuMDVaIiBzdHlsZT0iZmlsbDojMWMxYzFjOyIvPjxwYXRoIGQ9Ik0xMjcuODUsNjYuOWMtNC41My00LjgxLTEzLjU1LTMuNS0yMC4xNSwyLjkxLTYuNTksNi40MS04LjI2LDE1LjUtMy43MywyMC4zMSw0LjUzLDQuOCwxMy41NSwzLjUsMjAuMTUtMi45MXM4LjI2LTE1LjUsMy43My0yMC4zMVoiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTkxLjc5LDE0MC40N2MyLjktLjcyLDMuNDktOC42LDEuMzItMTcuNjEtMi4xNy05LTYuMjktMTUuNzEtOS4xOS0xNC45OS0yLjksLjcyLTMuNDksOC42LTEuMzIsMTcuNjEsMi4xNyw5LDYuMjksMTUuNzEsOS4xOSwxNC45OVoiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTYyLjIyLDcxLjNjOC4zNywyLjQ3LDE0LjQ4LDYuOCwxMy42Niw5LjY3LS44MywyLjg3LTguMjgsMy4yLTE2LjY1LC43My04LjM3LTIuNDctMTQuNDgtNi44LTEzLjY2LTkuNjcsLjgzLTIuODcsOC4yOC0zLjIsMTYuNjUtLjczWiIgc3R5bGU9ImZpbGw6IzFjMWMxYzsiLz48cGF0aCBkPSJNMTE2LjU0LDEwMy43NGM4Ljg4LDIuNjIsMTUuNDEsNy4wNywxNC41OSw5Ljk0LS44MywyLjg3LTguNywzLjA4LTE3LjU4LC40Ni04Ljg4LTIuNjItMTUuNDEtNy4wNy0xNC41OS05Ljk0LC44My0yLjg3LDguNy0zLjA4LDE3LjU4LS40NloiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTcxLjY0LDk3LjcxYy0yLjA4LTIuMTUtOC44OCwuOTgtMTUuMiw2Ljk5LTYuMzIsNi4wMS05Ljc2LDEyLjYzLTcuNjksMTQuNzgsMi4wOCwyLjE1LDguODgtLjk4LDE1LjItNi45OSw2LjMyLTYuMDEsOS43Ni0xMi42Myw3LjY5LTE0Ljc4WiIgc3R5bGU9ImZpbGw6IzFjMWMxYzsiLz48L3N2Zz4=\";\n","/**\n * Helpful resources:\n * https://github.com/perawallet/connect\n */\nimport type _algosdk from \"algosdk\";\nimport Algod, { getAlgodClient } from \"../../algod\";\nimport type { PeraWalletConnect } from \"@perawallet/connect\";\nimport type {\n Wallet,\n TransactionsArray,\n DecodedTransaction,\n DecodedSignedTransaction,\n Network,\n} from \"../../types\";\nimport { PROVIDER_ID, DEFAULT_NETWORK } from \"../../constants\";\nimport BaseWallet from \"../base\";\nimport { ICON } from \"./constants\";\nimport {\n PeraTransaction,\n PeraWalletClientConstructor,\n InitParams,\n} from \"./types\";\n\nclass PeraWalletClient extends BaseWallet {\n #client: PeraWalletConnect;\n network: Network;\n\n constructor({\n metadata,\n client,\n algosdk,\n algodClient,\n network,\n }: PeraWalletClientConstructor) {\n super(metadata, algosdk, algodClient);\n this.#client = client;\n this.network = network;\n this.metadata = PeraWalletClient.metadata;\n }\n\n static metadata = {\n id: PROVIDER_ID.PERA,\n name: \"Pera\",\n icon: ICON,\n isWalletConnect: true,\n };\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n algosdkStatic,\n network = DEFAULT_NETWORK,\n }: InitParams) {\n try {\n const PeraWalletConnect =\n clientStatic || (await import(\"@perawallet/connect\")).PeraWalletConnect;\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk;\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n\n const peraWallet = new PeraWalletConnect({\n ...(clientOptions ? clientOptions : { shouldShowSignTxnToast: false }),\n });\n\n return new PeraWalletClient({\n metadata: PeraWalletClient.metadata,\n client: peraWallet,\n algosdk,\n algodClient,\n network,\n });\n } catch (e) {\n console.error(\"Error initializing...\", e);\n return null;\n }\n }\n\n async connect(onDisconnect: () => void): Promise<Wallet> {\n const accounts = await this.#client.connect();\n\n this.#client.connector?.on(\"disconnect\", onDisconnect);\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${PeraWalletClient.metadata.id}`);\n }\n\n const mappedAccounts = accounts.map((address: string, index: number) => ({\n name: `Pera Wallet ${index + 1}`,\n address,\n providerId: PeraWalletClient.metadata.id,\n }));\n\n return {\n ...PeraWalletClient.metadata,\n accounts: mappedAccounts,\n };\n }\n\n async reconnect(onDisconnect: () => void) {\n const accounts = await this.#client.reconnectSession().catch(console.info);\n\n this.#client.connector?.on(\"disconnect\", onDisconnect);\n\n if (!accounts) {\n onDisconnect();\n return null;\n }\n\n return {\n ...PeraWalletClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Pera Wallet ${index + 1}`,\n address,\n providerId: PeraWalletClient.metadata.id,\n })),\n };\n }\n\n async disconnect() {\n await this.#client.disconnect();\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn);\n }) as Array<DecodedTransaction | DecodedSignedTransaction>;\n\n const signedIndexes: number[] = [];\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<PeraTransaction[]>((acc, txn, i) => {\n const isSigned = \"txn\" in txn;\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i);\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n });\n // If the indexes to be signed is specified, but it's not included in it,\n // designate that it should not be signed\n } else if (\n indexesToSign &&\n indexesToSign.length &&\n !indexesToSign.includes(i)\n ) {\n acc.push({\n txn: isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn\n : this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: [],\n });\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (\n !isSigned &&\n connectedAccounts.includes(this.algosdk.encodeAddress(txn[\"snd\"]))\n ) {\n signedIndexes.push(i);\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n });\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: this.algosdk.decodeSignedTransaction(transactions[i]).txn,\n signers: [],\n });\n } else if (!isSigned) {\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: [],\n });\n }\n\n return acc;\n }, []);\n\n // Sign them with the client.\n const result = await this.#client.signTransaction([txnsToSign]);\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift();\n signedByUser && acc.push(signedByUser);\n } else if (returnGroup) {\n acc.push(transactions[i]);\n }\n\n return acc;\n }, []);\n\n return signedTxns;\n }\n}\n\nexport default PeraWalletClient;\n","export const ICON =\n \"data:image/svg+xml;base64,\" +\n \"PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogIDxjaXJjbGUgZmlsbD0iIzI0NUVDNiIgY3g9IjE2IiBjeT0iMTYiIHI9IjE2Ii8+CiAgPHBvbHlnb24gZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIxMi40LDIxLjIgMTQuNSwyMS4yIDE1LjMsMTkuOSAxNi42LDE3LjYgMTguMSwxNC45IDE5LjksMTEuNyAyMC4yLDExLjIgMjAuMywxMS43IDIyLjksMjEuMiAyNSwyMS4yIDIxLjUsOC45IDIxLjQsOC42IDE5LjUsOC42IDE5LjUsOC43IDE3LjgsMTEuOCAxNiwxNC45IDE1LjgsMTQuMSAxNS4yLDExLjcgMTUuMSwxMS41IDE0LjQsOC45IDE0LjMsOC42IDEyLjQsOC42IDEyLjQsOC43IDEwLjcsMTEuOCA4LjksMTUgNy4xLDE4IDUuMywyMS4yIDcuNCwyMS4yIDkuMiwxOCAxMSwxNC44IDEyLjgsMTEuNiAxMy4xLDExLjEgMTMuMiwxMS42IDEzLjcsMTMuNyAxNC40LDE2LjMgMTQuNiwxNy4yIDE0LjIsMTgiLz4KPC9zdmc+\";\n","/**\n * Helpful resources:\n * https://github.com/randlabs/myalgo-connect\n */\nimport BaseWallet from \"../base\";\nimport type _MyAlgoConnect from \"@randlabs/myalgo-connect\";\nimport type _algosdk from \"algosdk\";\nimport Algod, { getAlgodClient } from \"../../algod\";\nimport { DEFAULT_NETWORK, PROVIDER_ID } from \"../../constants\";\nimport {\n TransactionsArray,\n DecodedTransaction,\n DecodedSignedTransaction,\n Network,\n} from \"../../types\";\nimport { MyAlgoWalletClientConstructor, InitParams } from \"./types\";\nimport { ICON } from \"./constants\";\n\nclass MyAlgoWalletClient extends BaseWallet {\n #client: _MyAlgoConnect;\n network: Network;\n\n constructor({\n metadata,\n client,\n algosdk,\n algodClient,\n network,\n }: MyAlgoWalletClientConstructor) {\n super(metadata, algosdk, algodClient);\n this.#client = client;\n this.network = network;\n this.metadata = MyAlgoWalletClient.metadata;\n }\n\n static metadata = {\n id: PROVIDER_ID.MYALGO,\n name: \"MyAlgo\",\n icon: ICON,\n isWalletConnect: false,\n };\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n algosdkStatic,\n network = DEFAULT_NETWORK,\n }: InitParams) {\n try {\n const MyAlgoConnect =\n clientStatic || (await import(\"@randlabs/myalgo-connect\")).default;\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk;\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n\n const myAlgo = new MyAlgoConnect({\n ...(clientOptions ? clientOptions : { disableLedgerNano: false }),\n });\n\n return new MyAlgoWalletClient({\n metadata: MyAlgoWalletClient.metadata,\n client: myAlgo,\n algosdk: algosdk,\n algodClient: algodClient,\n network,\n });\n } catch (e) {\n console.error(\"Error initializing...\", e);\n return null;\n }\n }\n\n async connect() {\n const accounts = await this.#client.connect();\n\n if (accounts.length === 0) {\n throw new Error(\n `No accounts found for ${MyAlgoWalletClient.metadata.id}`\n );\n }\n\n const mappedAccounts = accounts.map((account) => ({\n ...account,\n providerId: MyAlgoWalletClient.metadata.id,\n }));\n\n return {\n ...MyAlgoWalletClient.metadata,\n accounts: mappedAccounts,\n };\n }\n\n async reconnect() {\n return null;\n }\n\n async disconnect() {\n return;\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn);\n }) as Array<DecodedTransaction | DecodedSignedTransaction>;\n\n const signedIndexes: number[] = [];\n\n // Get the transactions to be signed\n const txnsToSign = decodedTxns.reduce<Uint8Array[]>((acc, txn, i) => {\n const isSigned = \"txn\" in txn;\n\n // If the indexes to be signed is specified, add it to the transactions to be signed,\n if (indexesToSign && indexesToSign.length && indexesToSign?.includes(i)) {\n signedIndexes.push(i);\n acc.push(transactions[i]);\n // Otherwise, if the transaction is unsigned and is to be sent from a connected account,\n // add it to the transactions to be signed\n } else if (\n !isSigned &&\n connectedAccounts.includes(this.algosdk.encodeAddress(txn[\"snd\"]))\n ) {\n signedIndexes.push(i);\n acc.push(transactions[i]);\n }\n\n return acc;\n }, []);\n\n // Sign them with the client.\n const result = await this.#client.signTransaction(txnsToSign);\n\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()?.blob;\n signedByUser && acc.push(signedByUser);\n } else if (returnGroup) {\n acc.push(txn);\n }\n\n return acc;\n }, []);\n\n return signedTxns;\n }\n}\n\nexport default MyAlgoWalletClient;\n","export const ICON =\n \"data:image/svg+xml;base64,\" +\n \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzZXJpZj0iaHR0cDovL3d3dy5zZXJpZi5jb20vIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjI7Ij4KICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjEwMjQiLz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEuNjgyMDksMCwwLDEuNjgyMDksMjI2LjM2OCwyMTIuODE4KSI+CiAgICAgICAgPHBhdGggZD0iTTMyNy4wNDksMjgwLjE5MkwxNjkuNTI0LDEzTDEyLDI4MC4xOTJMMTY5LjUyNCwxODkuMDg0TDMyNy4wNDksMjgwLjE5MloiIHN0eWxlPSJmaWxsOndoaXRlO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMS42ODIwOSwwLDAsMS42ODIwOSwyMjYuMzY4LDIxMi44MTgpIj4KICAgICAgICA8cGF0aCBkPSJNMjk5LjU0NiwzMDdMMTY5LjUyNSwyMzguNDczTDM5LjUwNCwzMDdMMTY5LjUyNSwyNjQuNjdMMjk5LjU0NiwzMDdaIiBzdHlsZT0iZmlsbDp3aGl0ZTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgIDwvZz4KPC9zdmc+Cg==\";\n","/**\n * Helpful resources:\n * https://github.com/blockshake-io/defly-connect\n */\nimport type _algosdk from \"algosdk\";\nimport Algod, { getAlgodClient } from \"../../algod\";\nimport type { Wallet } from \"../../types\";\nimport { DEFAULT_NETWORK, PROVIDER_ID } from \"../../constants\";\nimport BaseWallet from \"../base\";\nimport { TransactionsArray } from \"../../types\";\nimport type { DeflyWalletConnect } from \"@blockshake/defly-connect\";\nimport type {\n DecodedTransaction,\n DecodedSignedTransaction,\n Network,\n} from \"../../types\";\nimport { ICON } from \"./constants\";\nimport {\n DeflyTransaction,\n InitParams,\n DeflyWalletClientConstructor,\n} from \"./types\";\n\nclass DeflyWalletClient extends BaseWallet {\n #client: DeflyWalletConnect;\n network: Network;\n\n constructor({\n metadata,\n client,\n algosdk,\n algodClient,\n network,\n }: DeflyWalletClientConstructor) {\n super(metadata, algosdk, algodClient);\n this.#client = client;\n this.network = network;\n this.metadata = DeflyWalletClient.metadata;\n }\n\n static metadata = {\n id: PROVIDER_ID.DEFLY,\n name: \"Defly\",\n icon: ICON,\n isWalletConnect: true,\n };\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n algosdkStatic,\n network = DEFAULT_NETWORK,\n }: InitParams) {\n try {\n const DeflyWalletConnect =\n clientStatic ||\n (await import(\"@blockshake/defly-connect\")).DeflyWalletConnect;\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk;\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n\n const deflyWallet = new DeflyWalletConnect({\n ...(clientOptions ? clientOptions : { shouldShowSignTxnToast: false }),\n });\n\n return new DeflyWalletClient({\n metadata: DeflyWalletClient.metadata,\n client: deflyWallet,\n algosdk,\n algodClient,\n network,\n });\n } catch (e) {\n console.error(\"Error initializing...\", e);\n return null;\n }\n }\n\n async connect(onDisconnect: () => void): Promise<Wallet> {\n const accounts = await this.#client.connect().catch(console.info);\n\n this.#client.connector?.on(\"disconnect\", onDisconnect);\n\n if (!accounts || accounts.length === 0) {\n throw new Error(`No accounts found for ${DeflyWalletClient.metadata.id}`);\n }\n\n const mappedAccounts = accounts.map((address: string, index: number) => ({\n name: `Defly Wallet ${index + 1}`,\n address,\n providerId: DeflyWalletClient.metadata.id,\n }));\n\n return {\n ...DeflyWalletClient.metadata,\n accounts: mappedAccounts,\n };\n }\n\n async reconnect(onDisconnect: () => void) {\n const accounts = await this.#client.reconnectSession().catch(console.info);\n this.#client.connector?.on(\"disconnect\", onDisconnect);\n\n if (!accounts) {\n return null;\n }\n\n return {\n ...DeflyWalletClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Defly Wallet ${index + 1}`,\n address,\n providerId: DeflyWalletClient.metadata.id,\n })),\n };\n }\n\n async disconnect() {\n await this.#client.disconnect();\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn);\n }) as Array<DecodedTransaction | DecodedSignedTransaction>;\n\n const signedIndexes: number[] = [];\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<DeflyTransaction[]>((acc, txn, i) => {\n const isSigned = \"txn\" in txn;\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i);\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n });\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (\n !isSigned &&\n connectedAccounts.includes(this.algosdk.encodeAddress(txn[\"snd\"]))\n ) {\n signedIndexes.push(i);\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n });\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: this.algosdk.decodeSignedTransaction(transactions[i]).txn,\n signers: [],\n });\n } else if (!isSigned) {\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: [],\n });\n }\n\n return acc;\n }, []);\n\n // Sign them with the client.\n const result = await this.#client.signTransaction([txnsToSign]);\n\n // Join the newly signed transactions with the original group of transactions\n // if 'returnGroup' param is specified\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift();\n signedByUser && acc.push(signedByUser);\n } else if (returnGroup) {\n acc.push(transactions[i]);\n }\n\n return acc;\n }, []);\n\n return signedTxns;\n }\n}\n\nexport default DeflyWalletClient;\n","export const ICON =\n \"data:image/svg+xml;base64,\" +\n \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI2LjUuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMDAgMzAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMDAgMzAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6dXJsKCNTVkdJRF8xXyk7fQoJLnN0MXtmaWxsOnVybCgjU1ZHSURfMDAwMDAwNDM0MjYxNjcxNDAxMDY1ODIyNzAwMDAwMDIxMzA3Njg5MDYwNzMxMTM0ODRfKTt9Cgkuc3Qye2ZpbGw6dXJsKCNTVkdJRF8wMDAwMDEwMjUxOTMxNjAxNTI3NjU4MTY0MDAwMDAxNjI3NDExMjM4MzE3NTY0MTc1OV8pO2ZpbHRlcjp1cmwoI0Fkb2JlX09wYWNpdHlNYXNrRmlsdGVyKTt9Cgkuc3Qze2ZpbGw6dXJsKCNTVkdJRF8wMDAwMDEzODU2MzM4MjQ2MjA4NjAyMDM1MDAwMDAxNDg3ODQ5MDI3MDc4MjA3MTIwN18pO30KCS5zdDR7bWFzazp1cmwoI21hc2swXzE2NjFfMjk1XzAwMDAwMDg4MTMyMjUxNTk3NDQxNTczNDkwMDAwMDExNjkzNjEyMDE4NTA2NjgxNDgxXyk7fQoJLnN0NXtmaWxsOnVybCgjU1ZHSURfMDAwMDAxMDYxMjA2MzI0NjE3OTI4NzExNjAwMDAwMDc0MzM5MTMwMzgzMzc3NjY1NzZfKTt9Cjwvc3R5bGU+CjxnPgoJCgkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyNDYuNjAzIiB5MT0iOS4yMjEyIiB4Mj0iMTc0LjE1OCIgeTI9IjMwOC41NDI2IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQkZCRTAiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjc0LjcsOTMuOUwxNjYuNiwyM3YzOS42bDY5LjQsNDUuMWwtOC4yLDI1LjhoLTYxLjJ2MzIuOWg2MS4ybDguMiwyNS44bC02OS40LDQ1LjFWMjc3bDEwOC4yLTcwLjdMMjU3LDE1MC4xCgkJTDI3NC43LDkzLjl6Ii8+CgkKCQk8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzAwMDAwMDE4MjI4MjM3MTUxMjM5MTUxMzIwMDAwMDE3ODM4NjY0MjU5NzY2MjczOTI1XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMjkuMzUxNiIgeTE9Ii0xOS4xNTczIiB4Mj0iNTYuOTA2NiIgeTI9IjI4MC4xNjQxIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQkZCRTAiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMDE4MjI4MjM3MTUxMjM5MTUxMzIwMDAwMDE3ODM4NjY0MjU5NzY2MjczOTI1Xyk7IiBkPSJNNzIuNSwxNjYuNGg2MXYtMzIuOUg3Mi4ybC03LjktMjUuOAoJCWw2OS4yLTQ1LjFWMjNMMjUuMyw5My45TDQzLDE1MC4xbC0xNy43LDU2LjJMMTMzLjcsMjc3di0zOS42bC02OS40LTQ1LjFMNzIuNSwxNjYuNHoiLz4KCTxkZWZzPgoJCTxmaWx0ZXIgaWQ9IkFkb2JlX09wYWNpdHlNYXNrRmlsdGVyIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjI1LjQiIHk9IjIzIiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0Ij4KCQkJPGZlQ29sb3JNYXRyaXggIHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIxIDAgMCAwIDAgIDAgMSAwIDAgMCAgMCAwIDEgMCAwICAwIDAgMCAxIDAiLz4KCQk8L2ZpbHRlcj4KCTwvZGVmcz4KCQoJCTxtYXNrIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjI1LjQiIHk9IjIzIiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0IiBpZD0ibWFzazBfMTY2MV8yOTVfMDAwMDAwODgxMzIyNTE1OTc0NDE1NzM0OTAwMDAwMTE2OTM2MTIwMTg1MDY2ODE0ODFfIj4KCQkKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8wMDAwMDE2NTkyOTcyNDMwMzE2NDIwMzAwMDAwMDAwNzEwMTkwNDk4NDUxOTkxNTE2Ml8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMjQ2LjYwMzgiIHkxPSI5LjIyMTQiIHgyPSIxNzQuMTU4OCIgeTI9IjMwOC41NDI4IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMwQjQ2RjkiLz4KCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0JCRkJFMCIvPgoJCTwvbGluZWFyR3JhZGllbnQ+CgkJPHBhdGggc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF8wMDAwMDE2NTkyOTcyNDMwMzE2NDIwMzAwMDAwMDAwNzEwMTkwNDk4NDUxOTkxNTE2Ml8pO2ZpbHRlcjp1cmwoI0Fkb2JlX09wYWNpdHlNYXNrRmlsdGVyKTsiIGQ9IgoJCQlNMjc0LjcsOTMuOUwxNjYuNiwyM3YzOS42bDY5LjQsNDUuMWwtOC4yLDI1LjhoLTYxLjJ2MzIuOWg2MS4ybDguMiwyNS44bC02OS40LDQ1LjFWMjc3bDEwOC4yLTcwLjdMMjU3LDE1MC4xTDI3NC43LDkzLjl6Ii8+CgkJCgkJCTxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMDAwMDAxMTk4MTE3MDc2MjE0NzI4MTQyNzAwMDAwMTA4Mjk2NTkzODM4NTEyMDI0OTFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjEyOS4zNTIxIiB5MT0iLTE5LjE1NzEiIHgyPSI1Ni45MDcxIiB5Mj0iMjgwLjE2NDIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAzMDIpIj4KCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCQk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojQkJGQkUwIi8+CgkJPC9saW5lYXJHcmFkaWVudD4KCQk8cGF0aCBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTE5ODExNzA3NjIxNDcyODE0MjcwMDAwMDEwODI5NjU5MzgzODUxMjAyNDkxXyk7IiBkPSJNNzIuNSwxNjYuNGg2MXYtMzIuOUg3Mi4ybC03LjktMjUuOAoJCQlsNjkuMi00NS4xVjIzTDI1LjMsOTMuOUw0MywxNTAuMWwtMTcuNyw1Ni4yTDEzMy43LDI3N3YtMzkuNmwtNjkuNC00NS4xTDcyLjUsMTY2LjR6Ii8+Cgk8L21hc2s+Cgk8ZyBjbGFzcz0ic3Q0Ij4KCQkKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8wMDAwMDEwOTAxOTkxODU1Nzc3MzA1MzQyMDAwMDAxNzYwMjQwNTkwODA2NzEyMDMwMF8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNDYuNDY2MiIgeTE9IjIyOC43NTU0IiB4Mj0iMTcxLjg2MzgiIHkyPSIxMzUuMTAzOSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDMwMikiPgoJCQk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiM4OTUyRkY7c3RvcC1vcGFjaXR5OjAuODciLz4KCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0RBQkRGRjtzdG9wLW9wYWNpdHk6MCIvPgoJCTwvbGluZWFyR3JhZGllbnQ+CgkJCgkJCTxyZWN0IHg9IjI1LjQiIHk9IjIzIiBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTA5MDE5OTE4NTU3NzczMDUzNDIwMDAwMDE3NjAyNDA1OTA4MDY3MTIwMzAwXyk7IiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+Cg==\";\n","/**\n * Helpful resources:\n * https://docs.exodus.com/api-reference/algorand-provider-api/\n */\nimport type _algosdk from \"algosdk\";\nimport BaseWallet from \"../base\";\nimport Algod, { getAlgodClient } from \"../../algod\";\nimport { DEFAULT_NETWORK, PROVIDER_ID } from \"../../constants\";\nimport type {\n TransactionsArray,\n DecodedTransaction,\n DecodedSignedTransaction,\n Network,\n} from \"../../types\";\nimport { ICON } from \"./constants\";\nimport {\n InitParams,\n WindowExtended,\n Exodus,\n ExodusClientConstructor,\n} from \"./types\";\n\nclass ExodusClient extends BaseWallet {\n #client: Exodus;\n #onlyIfTrusted: boolean;\n network: Network;\n\n constructor({\n metadata,\n client,\n algosdk,\n algodClient,\n onlyIfTrusted,\n network,\n }: ExodusClientConstructor) {\n super(metadata, algosdk, algodClient);\n this.#client = client;\n this.#onlyIfTrusted = onlyIfTrusted;\n this.network = network;\n this.metadata = ExodusClient.metadata;\n }\n\n static metadata = {\n id: PROVIDER_ID.EXODUS,\n name: \"Exodus\",\n icon: ICON,\n isWalletConnect: false,\n };\n\n static async init({\n clientOptions,\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK,\n }: InitParams) {\n try {\n if (\n typeof window == \"undefined\" ||\n (window as WindowExtended).exodus === undefined\n ) {\n throw new Error(\"Exodus is not available.\");\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk;\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n const exodus = (window as WindowExtended).exodus.algorand as Exodus;\n\n return new ExodusClient({\n metadata: ExodusClient.metadata,\n id: PROVIDER_ID.EXODUS,\n client: exodus,\n algosdk: algosdk,\n algodClient: algodClient,\n onlyIfTrusted: clientOptions?.onlyIfTrusted || false,\n network,\n });\n } catch (e) {\n console.warn(e);\n console.warn(\n `Error initializing ${ExodusClient.metadata.name}.`,\n \"Do you have the extension installed?\",\n \"https://www.exodus.com/web3-wallet\"\n );\n return null;\n }\n }\n\n async connect() {\n const { address } = await this.#client.connect({\n onlyIfTrusted: this.#onlyIfTrusted,\n });\n\n if (!address) {\n throw new Error(`No accounts found for ${ExodusClient.metadata.id}`);\n }\n\n const accounts = [\n {\n name: `Exodus 1`,\n address,\n providerId: ExodusClient.metadata.id,\n },\n ];\n\n return {\n ...ExodusClient.metadata,\n accounts,\n };\n }\n\n async reconnect(onDisconnect: () => void) {\n if (\n window === undefined ||\n (window as WindowExtended).exodus === undefined ||\n (window as WindowExtended).exodus.algorand.isConnected !== true\n ) {\n onDisconnect();\n }\n\n return null;\n }\n\n async disconnect() {\n return;\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Array<Uint8Array>,\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn);\n }) as Array<DecodedTransaction | DecodedSignedTransaction>;\n\n const signedIndexes: number[] = [];\n\n // Get the unsigned transactions.\n const txnsToSign = decodedTxns.reduce<Uint8Array[]>((acc, txn, i) => {\n const isSigned = \"txn\" in txn;\n\n // If the indexes to be signed is specified\n // add it to the arrays of transactions to be signed.\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i);\n acc.push(transactions[i]);\n // If the transaction isn't already signed and is to be sent from a connected account,\n // add it to the arrays of transactions to be signed\n } else if (\n !isSigned &&\n connectedAccounts.includes(this.algosdk.encodeAddress(txn[\"snd\"]))\n ) {\n signedIndexes.push(i);\n acc.push(transactions[i]);\n }\n\n return acc;\n }, []);\n\n // Sign them with the client.\n const result = await this.#client.signTransaction(txnsToSign);\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift();\n signedByUser && acc.push(signedByUser);\n } else if (returnGroup) {\n acc.push(transactions[i]);\n }\n\n return acc;\n }, []);\n\n return signedTxns;\n }\n}\n\nexport default ExodusClient;\n","export const ICON =\n \"data:image/svg+xml;base64,\" +\n \"PHN2ZyB3aWR0aD0iMjM4IiBoZWlnaHQ9IjIzOCIgdmlld0JveD0iMCAwIDIzOCAyMzgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik01MS43MDUgMTQ1LjA0MkgxMTYuNzA1TDEwNy43MDUgMTU1LjA0Mkg1MS43MDVWMTQ1LjA0MloiIGZpbGw9IiNENjQ1MDAiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNDcuNTE5IDE5MS41NTdMMTI5LjU3NyAxNDQuMzk0TDE0Mi40MDQgMTI3LjExMkwxNjcuODc1IDE5MS41NTdIMTQ3LjUxOVpNMTEwLjkzNiA5NS4zOTMyTDEyMC42MTMgMTIwLjgzMUwxMzMuMzU5IDEwNC4yMjhMMTE3LjQ3NSA2NC4wNDIyQzExNS45MjggNjAuMTI4IDExMi4xNDYgNTcuNTU2NSAxMDcuOTM4IDU3LjU1NjVDMTAzLjcyOSA1Ny41NTY1IDk5Ljk0NzQgNjAuMTI4IDk4LjQwMDMgNjQuMDQyMkw2Ny45NjU5IDE0MS4wNDJIODcuNzgwN0M5NS40MTUzIDEyMS4wMTEgMTAyLjg5MyAxMDEuMzk5IDEwNS4xOTggOTUuMzU0MUMxMDUuNjQxIDk0LjE5MTIgMTA2Ljc0MyA5My40NTk5IDEwNy45ODcgOTMuNDU5OUgxMDguMTMyQzEwOS4zNzggOTMuNDU5OSAxMTAuNDkzIDk0LjIyOTMgMTEwLjkzNiA5NS4zOTMyWk04MC45MjEgMTU5LjA0MkM3NC45Mjg5IDE3NC43NjggNjkuODY2MSAxODguMDYzIDY4LjU0NDcgMTkxLjU1N0g0OEw2MC44NTE0IDE1OS4wNDJIODAuOTIxWiIgZmlsbD0iIzIyMkI2MCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE3Ni4wMjYgNTQuNzUwOUMxNzcuOTk3IDUyLjA4NzIgMTgxLjc1NCA1MS41MjU3IDE4NC40MTggNTMuNDk2N0MxODcuMDgyIDU1LjQ2NzggMTg3LjY0MyA1OS4yMjUxIDE4NS42NzIgNjEuODg4OEwxMzAuMDEzIDEzNy4xMDdDMTI5LjcxNCAxMzcuNTEyIDEyOS4zNDEgMTM3Ljg1NyAxMjguOTEzIDEzOC4xMjNMMTE3Ljg1NiAxNDUuMDEzQzExNy4wODcgMTQ1LjQ5MyAxMTYuMTI4IDE0NC43ODMgMTE2LjM2MSAxNDMuOTA3TDExOS43MTggMTMxLjMxOEMxMTkuODQ3IDEzMC44MzIgMTIwLjA2OCAxMzAuMzc0IDEyMC4zNjcgMTI5Ljk3TDE3MC42NyA2MS45ODlMMTY5LjkyOSA2MS40NDA1QzE2OS40ODUgNjEuMTEyIDE2OC44NTkgNjEuMjA1NiAxNjguNTMgNjEuNjQ5NkwxNTIuMzExIDgzLjU2ODhDMTUyLjU4NiA4NC4yMDIzIDE1Mi41MjQgODQuOTYxMiAxNTIuMDg0IDg1LjU1NjJMMTQ5LjExIDg5LjU3NTVDMTQ4LjQ1MyA5MC40NjM0IDE0Ny4yMDEgOTAuNjUwNiAxNDYuMzEzIDg5Ljk5MzZDMTQ1LjQyNSA4OS4zMzY2IDE0NS4yMzggODguMDg0MSAxNDUuODk1IDg3LjE5NjJMMTQ3LjY3OSA4NC43ODQ3TDE0OC44NjkgODMuMTc2OUwxNjcuMzA4IDU4LjI1NzRDMTY4LjYyMiA1Ni40ODE1IDE3MS4xMjcgNTYuMTA3MiAxNzIuOTAzIDU3LjQyMTJMMTczLjY0NCA1Ny45Njk3TDE3Ni4wMjYgNTQuNzUwOVoiIGZpbGw9IiNENjQ1MDAiLz4KPC9zdmc+Cg==\";\n\nexport const DEFAULT_NETWORK = \"MainNet\";\n","/**\n * Helpful resources:\n * https://github.com/PureStake/algosigner/blob/develop/docs/dApp-integration.md\n */\nimport type _algosdk from \"algosdk\";\nimport BaseWallet from \"../base\";\nimport Algod, { getAlgodClient } from \"../../algod\";\nimport { PROVIDER_ID, DEFAULT_NETWORK } from \"../../constants\";\nimport type {\n TransactionsArray,\n DecodedTransaction,\n DecodedSignedTransaction,\n Network,\n} from \"../../types\";\nimport { ICON } from \"./constants\";\nimport type {\n WindowExtended,\n AlgoSignerTransaction,\n SupportedLedgers,\n AlgoSigner,\n AlgoSignerClientConstructor,\n InitParams,\n} from \"./types\";\n\nconst getNetwork = (network: string): SupportedLedgers => {\n if (network === \"betanet\") {\n return \"BetaNet\";\n }\n\n if (network === \"testnet\") {\n return \"TestNet\";\n }\n\n if (network === \"mainnet\") {\n return \"MainNet\";\n }\n\n return network;\n};\n\nclass AlgoSignerClient extends BaseWallet {\n #client: AlgoSigner;\n network: Network;\n\n constructor({\n metadata,\n client,\n algosdk,\n algodClient,\n network,\n }: AlgoSignerClientConstructor) {\n super(metadata, algosdk, algodClient);\n this.#client = client;\n this.network = network;\n }\n\n static metadata = {\n id: PROVIDER_ID.ALGOSIGNER,\n name: \"AlgoSigner\",\n icon: ICON,\n isWalletConnect: false,\n };\n\n static async init({\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK,\n }: InitParams) {\n try {\n if (\n typeof window == \"undefined\" ||\n (window as WindowExtended).AlgoSigner === undefined\n ) {\n throw new Error(\"AlgoSigner is not available.\");\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk;\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n const algosigner = (window as WindowExtended).AlgoSigner as AlgoSigner;\n\n return new AlgoSignerClient({\n metadata: AlgoSignerClient.metadata,\n id: PROVIDER_ID.ALGOSIGNER,\n client: algosigner,\n algosdk: algosdk,\n algodClient: algodClient,\n network,\n });\n } catch (e) {\n console.warn(e);\n console.warn(\n `Error initializing ${AlgoSignerClient.metadata.name}.`,\n \"Do you have the extension installed?\",\n \"https://www.purestake.com/technology/algosigner\"\n );\n return null;\n }\n }\n\n async connect() {\n await this.#client.connect();\n\n const accounts = await this.#client.accounts({\n ledger: getNetwork(this.network),\n });\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${AlgoSignerClient.metadata.id}`);\n }\n\n const mappedAccounts = accounts.map(({ address }, index) => ({\n name: `AlgoSigner ${index + 1}`,\n address,\n providerId: AlgoSignerClient.metadata.id,\n }));\n\n return {\n ...AlgoSignerClient.metadata,\n accounts: mappedAccounts,\n };\n }\n\n async reconnect(onDisconnect: () => void) {\n if (\n window === undefined ||\n (window as WindowExtended).AlgoSigner === undefined\n ) {\n onDisconnect();\n }\n\n return null;\n }\n\n async disconnect() {\n return;\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn);\n }) as Array<DecodedTransaction | DecodedSignedTransaction>;\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<AlgoSignerTransaction[]>(\n (acc, txn, i) => {\n const isSigned = \"txn\" in txn;\n\n const txnObj: AlgoSignerTransaction = {\n txn: this.#client.encoding.msgpackToBase64(transactions[i]),\n };\n\n if (\n indexesToSign &&\n indexesToSign.length &&\n !indexesToSign.includes(i)\n ) {\n txnObj.txn = this.#client.encoding.msgpackToBase64(\n isSigned\n ? this.algosdk\n .decodeSignedTransaction(transactions[i])\n .txn.toByte()\n : this.algosdk.decodeUnsignedTransaction(transactions[i]).toByte()\n );\n txnObj.signers = [];\n } else if (\n !connectedAccounts.includes(\n this.algosdk.encodeAddress(isSigned ? txn.txn[\"snd\"] : txn[\"snd\"])\n )\n ) {\n txnObj.txn = this.#client.encoding.msgpackToBase64(\n isSigned\n ? this.algosdk\n .decodeSignedTransaction(transactions[i])\n .txn.toByte()\n : this.algosdk.decodeUnsignedTransaction(transactions[i]).toByte()\n );\n txnObj.signers = [];\n }\n\n acc.push(txnObj);\n\n return acc;\n },\n []\n );\n\n // Sign them with the client.\n const result = await this.#client.signTxn(txnsToSign);\n\n // Join the newly signed transactions with the original group of transactions\n // if 'returnGroup' param is specified\n const signedTxns = result.reduce<Uint8Array[]>((acc, txn, i) => {\n if (txn) {\n acc.push(new Uint8Array(Buffer.from(txn.blob, \"base64\")));\n } else if (returnGroup) {\n acc.push(transactions[i]);\n }\n\n return acc;\n }, []);\n\n return signedTxns;\n }\n}\n\nexport default AlgoSignerClient;\n","export const ICON =\n \"data:image/svg+xml;base64,\" +\n \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMzMzk2RkY7fQo8L3N0eWxlPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTI2LjYsMTY4YzYyLjYtNjEuMywxNjQuMi02MS4zLDIyNi44LDBsNy41LDcuNGMzLjEsMy4xLDMuMSw4LDAsMTEuMWwtMjUuOCwyNS4yYy0xLjYsMS41LTQuMSwxLjUtNS43LDAKCWwtMTAuNC0xMC4yYy00My43LTQyLjgtMTE0LjUtNDIuOC0xNTguMiwwbC0xMS4xLDEwLjljLTEuNiwxLjUtNC4xLDEuNS01LjcsMGwtMjUuOC0yNS4yYy0zLjEtMy4xLTMuMS04LDAtMTEuMUwxMjYuNiwxNjh6CgkgTTQwNi43LDIyMC4ybDIyLjksMjIuNWMzLjEsMy4xLDMuMSw4LDAsMTEuMUwzMjYuMiwzNTUuMWMtMy4xLDMuMS04LjIsMy4xLTExLjMsMGwtNzMuNC03MS45Yy0wLjgtMC44LTIuMS0wLjgtMi44LDBsLTczLjQsNzEuOQoJYy0zLjEsMy4xLTguMiwzLjEtMTEuMywwTDUwLjMsMjUzLjhjLTMuMS0zLjEtMy4xLTgsMC0xMS4xbDIyLjktMjIuNWMzLjEtMy4xLDguMi0zLjEsMTEuMywwbDczLjQsNzEuOWMwLjgsMC44LDIuMSwwLjgsMi44LDAKCWw3My40LTcxLjljMy4xLTMuMSw4LjItMy4xLDExLjMsMGw3My40LDcxLjljMC44LDAuOCwyLjEsMC44LDIuOCwwbDczLjQtNzEuOUMzOTguNSwyMTcuMSw0MDMuNiwyMTcuMSw0MDYuNywyMjAuMkw0MDYuNywyMjAuMnoiLz4KPC9zdmc+Cg==\";\n\nexport const DEFAULT_NETWORK = \"mainnet\";\n","/**\n * Helpful resources:\n * https://developer.algorand.org/docs/get-details/walletconnect/\n */\nimport type _algosdk from \"algosdk\";\nimport Algod, { getAlgodClient } from \"../../algod\";\nimport type WalletConnect from \"@walletconnect/client\";\nimport { PROVIDER_ID } from \"../../constants\";\nimport BaseWallet from \"../base\";\nimport { formatJsonRpcRequest } from \"@json-rpc-tools/utils\";\nimport {\n Wallet,\n TransactionsArray,\n DecodedTransaction,\n DecodedSignedTransaction,\n Network,\n} from \"../../types\";\nimport { DEFAULT_NETWORK, ICON } from \"./constants\";\nimport {\n WalletConnectClientConstructor,\n InitParams,\n WalletConnectTransaction,\n} from \"./types\";\n\nclass WalletConnectClient extends BaseWallet {\n #client: WalletConnect;\n network: Network;\n\n constructor({\n metadata,\n client,\n algosdk,\n algodClient,\n network,\n }: WalletConnectClientConstructor) {\n super(metadata, algosdk, algodClient);\n this.#client = client;\n this.network = network;\n this.metadata = WalletConnectClient.metadata;\n }\n\n static metadata = {\n id: PROVIDER_ID.WALLETCONNECT,\n name: \"WalletConnect\",\n icon: ICON,\n isWalletConnect: true,\n };\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n modalStatic,\n algosdkStatic,\n network = DEFAULT_NETWORK,\n }: InitParams) {\n try {\n const WalletConnect =\n clientStatic || (await import(\"@walletconnect/client\")).default;\n const QRCodeModal =\n modalStatic ||\n (await import(\"algorand-walletconnect-qrcode-modal\")).default;\n\n const walletConnect = new WalletConnect({\n bridge: \"https://bridge.walletconnect.org\",\n qrcodeModal: QRCodeModal,\n storageId: \"walletconnect-generic\",\n ...(clientOptions || {}),\n });\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk;\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n\n const initWallet: WalletConnectClientConstructor = {\n metadata: WalletConnectClient.metadata,\n client: walletConnect,\n algosdk: algosdk,\n algodClient: algodClient,\n network,\n };\n\n return new WalletConnectClient(initWallet);\n } catch (e) {\n console.error(\"Error initializing...\", e);\n return null;\n }\n }\n\n async connect(): Promise<Wallet> {\n let chainId = 416001;\n\n if (this.network === \"betanet\") {\n chainId = 416003;\n } else if (this.network === \"testnet\") {\n chainId = 416002;\n }\n\n if (!this.#client.connected) {\n await this.#client.createSession({ chainId });\n }\n\n return new Promise((resolve, reject) => {\n this.#client.on(\"connect\", (error, payload) => {\n if (error) {\n reject(error);\n }\n\n const { accounts } = payload.params[0];\n\n resolve({\n ...WalletConnectClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Wallet Connect ${index + 1}`,\n address,\n providerId: WalletConnectClient.metadata.id,\n })),\n });\n });\n\n this.#client.on(\"session_update\", (error, payload) => {\n if (error) {\n reject(error);\n }\n\n const { accounts } = payload.params[0];\n\n resolve({\n ...WalletConnectClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Wallet Connect ${index + 1}`,\n address,\n providerId: WalletConnectClient.metadata.id,\n })),\n });\n });\n });\n }\n\n async reconnect() {\n const accounts = this.#client.accounts;\n\n if (!accounts) {\n return null;\n }\n\n return {\n ...WalletConnectClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Wallet Connect ${index + 1}`,\n address,\n providerId: WalletConnectClient.metadata.id,\n })),\n };\n }\n\n check() {\n return this.#client.connected;\n }\n\n async disconnect() {\n try {\n await this.#client.killSession();\n } catch (e) {\n console.error(\"Error disconnecting\", e);\n }\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn);\n }) as Array<DecodedTransaction | DecodedSignedTransaction>;\n\n const signedIndexes: number[] = [];\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<WalletConnectTransaction[]>(\n (acc, txn, i) => {\n const isSigned = \"txn\" in txn;\n\n if (\n indexesToSign &&\n indexesToSign.length &&\n indexesToSign.includes(i)\n ) {\n signedIndexes.push(i);\n acc.push({\n txn: Buffer.from(transactions[i]).toString(\"base64\"),\n });\n } else if (\n !isSigned &&\n connectedAccounts.includes(this.algosdk.encodeAddress(txn[\"snd\"]))\n ) {\n signedIndexes.push(i);\n acc.push({\n txn: Buffer.from(transactions[i]).toString(\"base64\"),\n });\n } else {\n acc.push({\n txn: isSigned\n ? Buffer.from(\n this.algosdk.encodeUnsignedTransaction(\n this.algosdk.decodeSignedTransaction(transactions[i]).txn\n )\n ).toString(\"base64\")\n : Buffer.from(transactions[i]).toString(\"base64\"),\n signers: [],\n });\n }\n\n return acc;\n },\n []\n );\n\n const requestParams = [txnsToSign];\n const request = formatJsonRpcRequest(\"algo_signTxn\", requestParams);\n\n // Play an audio file to keep Wallet Connect's web socket open on iOS\n // when the user goes into background mode.\n this.keepWCAliveStart();\n\n // Sign them with the client.\n const result: Array<string | null> = await this.#client.sendCustomRequest(\n request\n );\n\n this.keepWCAliveStop();\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = result.reduce((signedTxns: Uint8Array[], txn, i) => {\n if (txn) {\n signedTxns.push(new Uint8Array(Buffer.from(txn, \"base64\")));\n }\n\n if (returnGroup) {\n signedTxns.push(transactions[i]);\n }\n\n return signedTxns;\n }, []);\n\n return signedTxns;\n }\n}\n\nexport default WalletConnectClient;\n","export const ICON =\n \"data:image/svg+xml;base64,\" +\n \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDkuODMgMjEwLjMzIj48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDE2MS4zMSkiIHN0eWxlPSJmb250LWZhbWlseTpJQk1QbGV4U2Fucy1NZWRtLCAmYXBvcztJQk0gUGxleCBTYW5zJmFwb3M7OyBmb250LXNpemU6MTkwcHg7Ij48dHNwYW4geD0iMCIgeT0iMCI+S01EPC90c3Bhbj48L3RleHQ+PC9zdmc+\";\n","import type _algosdk from \"algosdk\";\nimport Algod, { getAlgodClient } from \"../../algod\";\nimport BaseWallet from \"../base\";\nimport { DEFAULT_NETWORK, PROVIDER_ID } from \"../../constants\";\nimport type { Account, Wallet, TransactionsArray, Network } from \"../../types\";\nimport { ICON } from \"./constants\";\nimport {\n InitParams,\n ListWalletResponse,\n InitWalletHandle,\n KMDWalletClientConstructor,\n} from \"./types\";\n\nclass KMDWalletClient extends BaseWallet {\n #client: _algosdk.Kmd;\n #wallet: string;\n #password: string;\n walletId: string;\n id: PROVIDER_ID;\n network: Network;\n\n constructor({\n metadata,\n client,\n id,\n wallet,\n password,\n algosdk,\n algodClient,\n network,\n }: KMDWalletClientConstructor) {\n super(metadata, algosdk, algodClient);\n\n this.#client = client;\n this.#wallet = wallet;\n this.#password = password;\n this.id = id;\n this.walletId = \"\";\n this.network = network;\n this.metadata = KMDWalletClient.metadata;\n }\n\n static metadata = {\n id: PROVIDER_ID.KMD,\n name: \"KMD\",\n icon: ICON,\n isWalletConnect: false,\n };\n\n static async init({\n clientOptions,\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK,\n }: InitParams) {\n try {\n const {\n token = \"a\".repeat(64),\n host = \"http://localhost\",\n port = \"4002\",\n wallet = \"unencrypted-default-wallet\",\n password = \"\",\n } = clientOptions || {};\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk;\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n const kmdClient = new algosdk.Kmd(token, host, port);\n\n return new KMDWalletClient({\n metadata: KMDWalletClient.metadata,\n id: PROVIDER_ID.KMD,\n password,\n wallet,\n client: kmdClient,\n algosdk: algosdk,\n algodClient: algodClient,\n network,\n });\n } catch (e) {\n console.error(\"Error initializing...\", e);\n return null;\n }\n }\n\n async connect(): Promise<Wallet> {\n // TODO: prompt for wallet and password?\n return {\n ...KMDWalletClient.metadata,\n accounts: await this.listAccounts(\n this.#wallet,\n await this.requestPassword()\n ),\n };\n }\n\n async disconnect() {\n return;\n }\n\n async reconnect(): Promise<Wallet | null> {\n return null;\n }\n\n async requestPassword(): Promise<string> {\n // TODO: store it locally?\n const pw = prompt(\"KMD password\");\n return pw ? pw : \"\";\n }\n\n async getWalletToken(walletId: string, password: string): Promise<string> {\n const handleResp: InitWalletHandle = await this.#client.initWalletHandle(\n walletId,\n password\n );\n return handleResp.wallet_handle_token;\n }\n\n async releaseToken(token: string): Promise<void> {\n await this.#client.releaseWalletHandle(token);\n }\n\n async listWallets(): Promise<Record<string, string>> {\n const walletResponse = await this.#client.listWallets();\n const walletList: Array<ListWalletResponse> = walletResponse[\"wallets\"];\n const walletMap: Record<string, string> = {};\n for (const w of walletList) {\n walletMap[w.name] = w.id;\n }\n return walletMap;\n }\n\n async listAccounts(\n wallet: string,\n password: string\n ): Promise<Array<Account>> {\n // Get a handle token\n const walletId = await this.getWalletId();\n const token = await this.getWalletToken(walletId, password);\n\n // Fetch accounts and format them as lib expects\n const listResponse = await this.#client.listKeys(token);\n const addresses: Array<string> = listResponse[\"addresses\"];\n const mappedAccounts = addresses.map((address: string, index: number) => {\n return {\n name: `KMDWallet ${index + 1}`,\n address,\n providerId: KMDWalletClient.metadata.id,\n };\n });\n\n // Release handle token\n this.releaseToken(token);\n\n return mappedAccounts;\n }\n\n async getWalletId(): Promise<string> {\n // Use cached if available\n if(this.walletId !== \"\") return this.walletId\n\n const walletMap = await this.listWallets();\n if (!(this.#wallet in walletMap)) \n throw Error(\"No wallet named: \" + this.#wallet);\n this.walletId = walletMap[this.#wallet];\n\n return this.walletId\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn);\n }) as Array<\n _algosdk.EncodedTransaction | _algosdk.EncodedSignedTransaction\n >;\n\n // Get a handle token\n const walletId = await this.getWalletId()\n const pw = await this.requestPassword();\n const token = await this.getWalletToken(walletId, pw);\n\n const signedTxns: Array<Uint8Array> = [];\n // Sign them with the client.\n const signingPromises: Promise<Uint8Array>[] = [];\n\n for (const idx in decodedTxns) {\n const dtxn = decodedTxns[idx];\n const isSigned = \"txn\" in dtxn;\n\n // push the incoming txn into signed, we'll overwrite it later\n signedTxns.push(transactions[idx]);\n\n // Its already signed, skip it\n if (isSigned) {\n continue;\n // Not specified in indexes to sign, skip it\n } else if (\n indexesToSign &&\n indexesToSign.length &&\n !indexesToSign.includes(Number(idx))\n ) {\n continue;\n }\n // Not to be signed by our signer, skip it\n else if (\n !connectedAccounts.includes(this.algosdk.encodeAddress(dtxn.snd))\n ) {\n continue;\n }\n\n // overwrite with an empty blob\n signedTxns[idx] = new Uint8Array();\n\n const txn = this.algosdk.Transaction.from_obj_for_encoding(dtxn);\n signingPromises.push(this.#client.signTransaction(token, pw, txn));\n }\n\n const signingResults = await Promise.all(signingPromises);\n\n // Restore the newly signed txns in the correct order\n let signedIdx = 0;\n\n const formattedTxns = signedTxns.reduce<Uint8Array[]>((acc, txn, i) => {\n // If its an empty array, infer that it is one of the\n // ones we wanted to have signed and overwrite the empty buff\n if (txn.length === 0) {\n acc.push(signingResults[signedIdx]);\n\n signedIdx += 1;\n } else if (returnGroup) {\n acc.push(txn);\n }\n\n return acc;\n }, []);\n\n return formattedTxns;\n }\n}\n\nexport default KMDWalletClient;\n","export const ICON =\n \"data:image/svg+xml,%3c%3fxml version='1.0' encoding='UTF-8'%3f%3e %3c!-- Generated by Pixelmator Pro 3.2.2 --%3e %3csvg width='409' height='210' viewBox='0 0 409 210' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctext id='MNEMONIC' xml:space='preserve' x='0' y='129' font-family='Helvetica' font-size='72' fill='black'%3eMNEMONIC%3c/text%3e%3c/svg%3e\";\n","import type _algosdk from \"algosdk\";\nimport Algod, { getAlgodClient } from \"../../algod\";\nimport BaseWallet from \"../base\";\nimport { DEFAULT_NETWORK, PROVIDER_ID } from \"../../constants\";\nimport type { Wallet, TransactionsArray, Network } from \"../../types\";\nimport { ICON } from \"./constants\";\nimport { InitParams, MnemonicWalletClientConstructor } from \"./types\";\nimport algosdk from \"algosdk\";\n\nclass MnemonicWalletClient extends BaseWallet {\n #client?: _algosdk.Account;\n id: PROVIDER_ID;\n network: Network;\n\n constructor({\n metadata,\n id,\n algosdk,\n algodClient,\n network,\n }: MnemonicWalletClientConstructor) {\n super(metadata, algosdk, algodClient);\n\n this.id = id;\n this.network = network;\n this.metadata = MnemonicWalletClient.metadata;\n }\n\n static metadata = {\n id: PROVIDER_ID.MNEMONIC,\n name: \"MNEMONIC\",\n icon: ICON,\n isWalletConnect: false,\n };\n\n static async init({\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK,\n }: InitParams) {\n try {\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk;\n const algodClient = await getAlgodClient(algosdk, algodOptions);\n console.log(network, algodClient);\n return new MnemonicWalletClient({\n metadata: MnemonicWalletClient.metadata,\n id: PROVIDER_ID.MNEMONIC,\n algosdk: algosdk,\n algodClient: algodClient,\n network,\n });\n } catch (e) {\n console.error(\"Error initializing...\", e);\n return null;\n }\n }\n\n async connect(): Promise<Wallet> {\n const password = await this.requestPassword();\n\n if (!password) {\n this.#client = undefined;\n throw new Error(\"Mnemonic passphrase is required\");\n }\n\n this.#client = algosdk.mnemonicToSecretKey(password);\n\n return {\n ...MnemonicWalletClient.metadata,\n accounts: [\n {\n name: `MnemonicWallet 1`,\n address: this.#client.addr,\n providerId: MnemonicWalletClient.metadata.id,\n },\n ],\n };\n }\n\n async disconnect() {\n this.#client = undefined;\n return;\n }\n\n async reconnect(): Promise<Wallet | null> {\n return null;\n }\n\n async requestPassword(): Promise<string> {\n // TODO: store it locally?\n const pass = prompt(\"enter mnemonic passphrase, 25 words\");\n return pass ? pass : \"\";\n }\n\n signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ): Promise<Uint8Array[]> {\n if (!this.#client) {\n throw new Error(\"Client not connected\");\n }\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn);\n }) as Array<\n _algosdk.EncodedTransaction | _algosdk.EncodedSignedTransaction\n >;\n\n const signedTxns: Uint8Array[] = [];\n // Sign them with the client.\n const signingResults: Uint8Array[] = [];\n for (const idx in decodedTxns) {\n const dtxn = decodedTxns[idx];\n const isSigned = \"txn\" in dtxn;\n\n // push the incoming txn into signed, we'll overwrite it later\n signedTxns.push(transactions[idx]);\n\n // Its already signed, skip it\n if (isSigned) {\n continue;\n // Not specified in indexes to sign, skip it\n } else if (\n indexesToSign &&\n indexesToSign.length &&\n !indexesToSign.includes(Number(idx))\n ) {\n continue;\n }\n // Not to be signed by our signer, skip it\n else if (\n !connectedAccounts.includes(this.algosdk.encodeAddress(dtxn.snd))\n ) {\n continue;\n }\n\n // overwrite with an empty blob\n signedTxns[idx] = new Uint8Array();\n\n const txn = this.algosdk.Transaction.from_obj_for_encoding(dtxn);\n const signedTxn = txn.signTxn(this.#client.sk);\n signingResults.push(signedTxn);\n }\n\n // Restore the newly signed txns in the correct order\n let signedIdx = 0;\n const formattedTxns = signedTxns.reduce<Uint8Array[]>((acc, txn, i) => {\n // If its an empty array, infer that it is one of the\n // ones we wanted to have signed and overwrite the empty buff\n if (txn.length === 0) {\n acc.push(signingResults[signedIdx]);\n\n signedIdx += 1;\n } else if (returnGroup) {\n acc.push(txn);\n }\n\n return acc;\n }, []);\n\n return Promise.resolve(formattedTxns);\n }\n\n signEncodedTransactions(\n transactions: TransactionsArray\n ): Promise<Uint8Array[]> {\n throw new Error(\"Method not implemented.\");\n }\n}\n\nexport default MnemonicWalletClient;\n","import pera from \"./pera\";\nimport myalgo from \"./myalgo\";\nimport defly from \"./defly\";\nimport exodus from \"./exodus\";\nimport algosigner from \"./algosigner\";\nimport walletconnect from \"./walletconnect\";\nimport kmd from \"./kmd\";\nimport mnemonic from \"./mnemonic\";\n\nexport {\n pera,\n myalgo,\n defly,\n exodus,\n algosigner,\n walletconnect,\n kmd,\n mnemonic,\n};\n\nexport default {\n [pera.metadata.id]: pera,\n [myalgo.metadata.id]: myalgo,\n [defly.metadata.id]: defly,\n [exodus.metadata.id]: exodus,\n [algosigner.metadata.id]: algosigner,\n [walletconnect.metadata.id]: walletconnect,\n [kmd.metadata.id]: kmd,\n [mnemonic.metadata.id]: mnemonic,\n};\n","import { PROVIDER_ID } from \"../types\";\nimport { useWalletStore } from \"../store/index\";\n\nconst clearActiveAccount = useWalletStore.getState().clearActiveAccount;\nconst removeAccounts = useWalletStore.getState().removeAccounts;\n\nexport const clearAccounts = (id: PROVIDER_ID) => {\n clearActiveAccount(id);\n removeAccounts(id);\n};\n","function shallow(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\n\nexport { shallow as default };\n","import { useState, useMemo, useContext, useEffect } from \"react\";\nimport type algosdk from \"algosdk\";\nimport { getAlgosdk } from \"../algod\";\nimport { useHydratedWalletStore, walletStoreSelector } from \"../store/index\";\nimport {\n PROVIDER_ID,\n TransactionsArray,\n WalletClient,\n Provider,\n} from \"../types\";\nimport { ClientContext } from \"../store/state/clientStore\";\nimport allClients from \"../clients\";\nimport { clearAccounts } from \"../utils/clearAccounts\";\nimport shallow from \"zustand/shallow\";\n\nexport { PROVIDER_ID };\n\nexport default function useWallet() {\n const [providers, setProviders] = useState<Provider[] | null>(null);\n const clients = useContext(ClientContext);\n\n const {\n activeAccount,\n accounts: connectedAccounts,\n setActiveAccount: _setActiveAccount,\n addAccounts,\n } = useHydratedWalletStore(walletStoreSelector, shallow);\n\n const getAccountsByProvider = (id: PROVIDER_ID) => {\n return connectedAccounts.filter((account) => account.providerId === id);\n };\n\n const connectedActiveAccounts = useMemo(\n () =>\n connectedAccounts.filter(\n (account) => account.providerId === activeAccount?.providerId\n ),\n [connectedAccounts, activeAccount]\n );\n\n useEffect(() => {\n if (!clients) {\n setProviders(null);\n return;\n }\n\n const supportedClients = Object.keys(clients) as PROVIDER_ID[];\n\n setProviders(\n supportedClients.map((id) => {\n return {\n ...allClients[id],\n accounts: getAccountsByProvider(id),\n isActive: activeAccount?.providerId === id,\n isConnected: connectedAccounts.some(\n (accounts) => accounts.providerId === id\n ),\n connect: () => connect(id),\n disconnect: () => disconnect(id),\n reconnect: () => reconnect(id),\n setActiveProvider: () => setActive(id),\n setActiveAccount: (account: string) =>\n selectActiveAccount(id, account),\n };\n })\n );\n }, [clients, connectedAccounts, connectedActiveAccounts, activeAccount]);\n\n const getClient = async (id?: PROVIDER_ID): Promise<WalletClient> => {\n if (!id) throw new Error(\"Provier ID is missing.\");\n\n const client = await clients?.[id];\n\n if (!client) throw new Error(\"Client not found for ID\");\n\n return client;\n };\n\n const status = useMemo(() => {\n if (activeAccount === undefined) {\n return \"initializing\";\n }\n\n if (activeAccount === null && connectedAccounts.length) {\n return \"connected\";\n }\n\n if (activeAccount === null && !connectedAccounts.length) {\n return \"disconnected\";\n }\n\n if (activeAccount && activeAccount.address) {\n return \"active\";\n }\n\n return \"error\";\n }, [activeAccount]);\n\n const isActive = useMemo(() => {\n return status === \"active\";\n }, [status]);\n\n const isReady = useMemo(() => {\n return status !== \"initializing\";\n }, [status]);\n\n const selectActiveAccount = async (\n providerId: PROVIDER_ID,\n address: string\n ) => {\n try {\n const account = connectedActiveAccounts.find(\n (acct) => acct.address === address && acct.providerId === providerId\n );\n\n if (!account) {\n throw new Error(`No accounts with address ${address} found.`);\n }\n\n _setActiveAccount(account);\n } catch (e) {\n console.error(e);\n }\n };\n\n const connect = async (id: PROVIDER_ID) => {\n try {\n const walletClient = await getClient(id);\n const walletInfo = await walletClient?.connect(() => clearAccounts(id));\n\n if (!walletInfo || !walletInfo.accounts.length) {\n throw new Error(\"Failed to connect \" + id);\n }\n\n _setActiveAccount(walletInfo.accounts[0]);\n addAccounts(walletInfo.accounts);\n } catch (e) {\n console.error(e);\n }\n };\n\n const reconnect = async (id: PROVIDER_ID) => {\n try {\n const walletClient = await getClient(id);\n const walletInfo = await walletClient?.reconnect(() => clearAccounts(id));\n\n if (walletInfo && walletInfo.accounts.length) {\n addAccounts(walletInfo.accounts);\n }\n } catch (e) {\n console.error(e);\n disconnect(id);\n }\n };\n\n const disconnect = async (id: PROVIDER_ID) => {\n try {\n const walletClient = await getClient(id);\n\n walletClient?.disconnect();\n } catch (e) {\n console.error(e);\n } finally {\n clearAccounts(id);\n }\n };\n\n const setActive = async (id: PROVIDER_ID) => {\n try {\n const accounts = getAccountsByProvider(id);\n _setActiveAccount(accounts[0]);\n } catch (e) {\n console.error(e);\n }\n };\n\n const signTransactions = async (\n transactions: Array<Uint8Array>,\n indexesToSign?: number[],\n returnGroup = true\n ) => {\n const walletClient = await getClient(activeAccount?.providerId);\n\n if (!walletClient || !activeAccount?.address) {\n throw new Error(\"No wallet found.\");\n }\n\n const signedTransactions = await walletClient.signTransactions(\n connectedActiveAccounts.map((acct) => acct.address),\n transactions,\n indexesToSign,\n returnGroup\n );\n\n return signedTransactions;\n };\n\n const sendTransactions = async (\n transactions: Uint8Array[],\n waitRoundsToConfirm?: number\n ) => {\n const walletClient = await getClient(activeAccount?.providerId);\n\n const result = await walletClient?.sendRawTransactions(\n transactions,\n waitRoundsToConfirm\n );\n\n return result;\n };\n\n const signer: algosdk.TransactionSigner = async (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ) => {\n const algosdk = await getAlgosdk();\n const txnBlobs: Array<Uint8Array> = txnGroup.map(\n algosdk.encodeUnsignedTransaction\n );\n\n return await Promise.resolve(\n signTransactions(txnBlobs, indexesToSign, false)\n );\n };\n\n const getAccountInfo = async () => {\n if (!activeAccount) throw new Error(\"No selected account.\");\n\n const walletClient = await getClient(activeAccount.providerId);\n\n const accountInfo = await walletClient?.getAccountInfo(\n activeAccount.address\n );\n\n return accountInfo;\n };\n\n const getAddress = () => {\n return activeAccount?.address;\n };\n\n const getAssets = async () => {\n if (!activeAccount) throw new Error(\"No selected account.\");\n\n const walletClient = await getClient(activeAccount.providerId);\n\n return await walletClient?.getAssets(activeAccount.address);\n };\n\n const groupTransactionsBySender = async (transactions: TransactionsArray) => {\n const walletClient = await getClient(activeAccount?.providerId);\n\n return walletClient?.groupTransactionsBySender(transactions);\n };\n\n return {\n clients,\n providers,\n connectedAccounts,\n connectedActiveAccounts,\n activeAccount,\n activeAddress: activeAccount?.address,\n status,\n isActive,\n isReady,\n signer,\n signTransactions,\n sendTransactions,\n getAddress,\n groupTransactionsBySender,\n getAccountInfo,\n getAssets,\n };\n}\n","import type algosdk from \"algosdk\";\nimport { PROVIDER_ID, WalletClient, Network } from \"../types\";\nimport allClients from \"../clients\";\nimport {\n DEFAULT_NODE_BASEURL,\n DEFAULT_NODE_TOKEN,\n DEFAULT_NODE_PORT,\n DEFAULT_NETWORK,\n} from \"../constants\";\n\ntype SupportedProviders = { [x: string]: Promise<WalletClient | null> };\n\ntype NodeConfig = {\n network: Network;\n nodeServer: string;\n nodeToken?: string;\n nodePort?: string;\n};\n\nexport const initializeProviders = (\n providers?: PROVIDER_ID[],\n nodeConfig?: NodeConfig,\n algosdkStatic?: typeof algosdk\n) => {\n const initializedProviders: SupportedProviders = {};\n\n if (typeof window === \"undefined\") {\n console.warn(\"Window object is not available, skipping initialization.\");\n return initializedProviders;\n }\n\n const {\n network = DEFAULT_NETWORK,\n nodeServer = DEFAULT_NODE_BASEURL,\n nodePort = DEFAULT_NODE_PORT,\n nodeToken = DEFAULT_NODE_TOKEN,\n } = nodeConfig || {};\n\n if (!providers || providers.length === 0)\n for (const [id, client] of Object.entries(allClients)) {\n if (id === \"kmd\" || id === \"mnemonic\") {\n continue;\n }\n\n initializedProviders[id] = client.init({\n network,\n algodOptions: [nodeToken, nodeServer, nodePort],\n algosdkStatic: algosdkStatic,\n });\n }\n\n if (providers) {\n for (const id of providers) {\n initializedProviders[id] = allClients[id].init({\n network,\n algodOptions: [nodeToken, nodeServer, nodePort],\n algosdkStatic: algosdkStatic,\n });\n }\n }\n\n return initializedProviders;\n};\n","import { PROVIDER_ID } from \"src/constants\";\nimport { useWalletStore } from \"src/store\";\n\nexport const getActiveProviders = () => {\n const accounts = useWalletStore.getState().accounts;\n return [...new Set(accounts.map((acct) => acct.providerId))];\n}\n\nexport const isActiveProvider = (id: PROVIDER_ID) => {\n const activeProviders = getActiveProviders();\n return activeProviders.includes(id);\n}\n","import { WalletClient } from \"../types\";\nimport { clearAccounts } from \"./clearAccounts\";\nimport { isActiveProvider } from \"./providers\";\n\ntype SupportedProviders = { [x: string]: Promise<WalletClient | null> };\n\nexport const reconnectProviders = async (providers: SupportedProviders) => {\n try {\n const clients = Object.values(providers);\n\n for (const client of clients) {\n const c = await client;\n const id = c?.metadata.id;\n\n // Only reconnect to active providers\n if (id && isActiveProvider(id)) {\n c.reconnect(() => clearAccounts(id));\n }\n }\n } catch (e) {\n console.error(e);\n }\n};\n","export type NFDTransactionsArray = [\"u\" | \"s\", string][];\n\nexport function encodeNFDTransactionsArray(\n transactionsArray: NFDTransactionsArray\n) {\n return transactionsArray.map(([type, txn]) => {\n return new Uint8Array(Buffer.from(txn, \"base64\"));\n });\n}\n"],"names":["PROVIDER_ID","DEFAULT_NETWORK","produce","require$$0","require$$1","useDebugValue","createStore__default","useState","useEffect","createContext","ICON","BaseWallet","formatJsonRpcRequest","pera","myalgo","defly","exodus","algosigner","walletconnect","kmd","mnemonic","useContext","useMemo"],"mappings":"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AAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,C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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC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"}
|