@draggable/i18n 1.1.1 → 1.1.2
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/i18n.cjs.min.js +2 -2
- package/dist/i18n.cjs.min.js.gz +0 -0
- package/dist/i18n.es.min.js +3 -3
- package/dist/i18n.es.min.js.gz +0 -0
- package/dist/i18n.iife.min.js +2 -2
- package/dist/i18n.iife.min.js.gz +0 -0
- package/dist/i18n.umd.min.js +2 -2
- package/dist/i18n.umd.min.js.gz +0 -0
- package/package.json +2 -2
package/dist/i18n.cjs.min.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
2
|
/**
|
|
3
3
|
@draggable/i18n - https://github.com/Draggable/i18n
|
|
4
|
-
Version: 1.1.
|
|
4
|
+
Version: 1.1.1
|
|
5
5
|
Author: Draggable https://draggable.io
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),Object.freeze({method:"GET",body:""});var t={extension:".lang",location:"assets/lang/",langs:["en-US"],locale:"en-US",override:{}},e=null,n=new Proxy(class s{constructor(e=t){this.langs=Object.create(null),this.loaded=[],this.processConfig(e)}processConfig(e){const{location:n,...s}={...t,...e},a=n.endsWith("/")?n:`${n}/`;this.config={location:a,...s};const{preloaded:r={},override:i={}}=this.config,l=new Set([...Object.keys(r),...Object.keys(i)]);for(const t of l){const e={...r[t]||{},...i[t]||{}};this.applyLanguage(t,e)}this.locale=this.config.locale||this.config.langs[0]}init(t){return this.processConfig({...this.config,...t}),this.setCurrent(this.locale)}addLanguage(t,e={}){e="string"==typeof e?s.processFile(e):e,this.applyLanguage(t,e),this.loaded.push(t),this.config.langs.push(t)}getValue(t,e=this.locale){return this.langs[e]?.[t]||this.getFallbackValue(t)}getFallbackValue(t){return Object.values(this.langs).find(e=>e[t])?.[t]}makeSafe(t){const e={"{":String.raw`\{`,"}":String.raw`\}`,"|":String.raw`\|`},n=t.replaceAll(/[{}|]/g,t=>e[t]);return new RegExp(n,"g")}put(t,e){return this.current[t]=e,e}get(t,e){let n=this.getValue(t);if(!n)return;if(!e)return n;const s=n.match(/\{[^}]+?\}/g);if(!s)return n;if("object"==typeof e)for(const a of s){const t=a.slice(1,-1);n=n.replace(this.makeSafe(a),e[t]??"")}else n=n.replaceAll(/\{[^}]+?\}/g,e);return n}static processFile(t){return n.fromFile(t.replaceAll("\n\n","\n"))}static fromFile(t){const e=t.split("\n"),n={};for(let s,a=0;a<e.length;a++)s=/^(.+?) *?= *?([^\n]+)/.exec(e[a]),s&&(n[s[1]]=s[2].trim());return n}static getInstance(t){return e||(e=new s(t)),e}static resetInstance(){e=null}async loadLang(t,e=!0){if(this.loaded.includes(t)&&e)return this.langs[t];const n=`${this.config.location}${t}${this.config.extension}`;try{const e=await async function(t){try{const e=await fetch(t);if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return await e[t.endsWith(".lang")?"text":"json"]()}catch(e){throw e}}(n),a=s.processFile(e);return this.applyLanguage(t,a),this.langs[t]}catch(a){return this.applyLanguage(t)}}applyLanguage(t,e={}){const n=this.config.override[t]||{},s=this.langs[t]||{};return this.langs[t]={...s,...e,...n},this.loaded.push(t),this.langs[t]}get getLangs(){return this.config.langs}async setCurrent(t="en-US"){return this.loaded.includes(t)||await this.loadLang(t),this.locale=t,this.current=this.langs[t],this.current}},{apply:(t,e,n)=>t.getInstance(...n),construct:(t,e)=>new t(...e),get:(t,e)=>t[e]}),s=n.getInstance();exports.I18N=n,exports.default=s;
|
|
9
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5janMubWluLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9mZXRjaC5qcyIsIi4uL3NyYy9taTE4bi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBkZWZhdWx0T3B0aW9ucyA9IE9iamVjdC5mcmVlemUoeyBtZXRob2Q6ICdHRVQnLCBib2R5OiAnJyB9KVxuLyoqXG4gKiBGZXRjaGVzIGEgcmVzb3VyY2UgZnJvbSB0aGUgbmV0d29yay5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gVGhlIFVSTCB0byBmZXRjaC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbZmV0Y2hPcHRpb25zPXt9XSAtIFRoZSBvcHRpb25zIGZvciB0aGUgZmV0Y2ggcmVxdWVzdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbZmV0Y2hPcHRpb25zLmhlYWRlcnNdIC0gSGVhZGVycyB0byBpbmNsdWRlIGluIHRoZSByZXF1ZXN0LlxuICogQHBhcmFtIHtzdHJpbmd9IFtmZXRjaE9wdGlvbnMubWV0aG9kXSAtIFRoZSBIVFRQIG1ldGhvZCB0byB1c2UgKGUuZy4sICdHRVQnLCAnUE9TVCcpLlxuICogQHBhcmFtIHtzdHJpbmd8QnVmZmVyfSBbZmV0Y2hPcHRpb25zLmJvZHldIC0gVGhlIGJvZHkgb2YgdGhlIHJlcXVlc3QuXG4gKiBAcmV0dXJuIHtQcm9taXNlPE9iamVjdD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXNwb25zZSBvYmplY3QuXG4gKiBAcmV0dXJuIHtib29sZWFufSByZXR1cm4ub2sgLSBJbmRpY2F0ZXMgaWYgdGhlIHJlc3BvbnNlIHN0YXR1cyBpcyBpbiB0aGUgcmFuZ2UgMjAwLTI5OS5cbiAqIEByZXR1cm4ge251bWJlcn0gcmV0dXJuLnN0YXR1cyAtIFRoZSBIVFRQIHN0YXR1cyBjb2RlIG9mIHRoZSByZXNwb25zZS5cbiAqIEByZXR1cm4ge3N0cmluZ30gcmV0dXJuLnN0YXR1c1RleHQgLSBUaGUgSFRUUCBzdGF0dXMgbWVzc2FnZSBvZiB0aGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJuIHtNYXA8c3RyaW5nLCBzdHJpbmc+fSByZXR1cm4uaGVhZGVycyAtIFRoZSBoZWFkZXJzIG9mIHRoZSByZXNwb25zZS5cbiAqIEByZXR1cm4ge0J1ZmZlcn0gcmV0dXJuLmJvZHkgLSBUaGUgYm9keSBvZiB0aGUgcmVzcG9uc2UgYXMgYSBCdWZmZXIuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbigpOiBQcm9taXNlPEJ1ZmZlcj59IHJldHVybi5hcnJheUJ1ZmZlciAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGJvZHkgYXMgYW4gQXJyYXlCdWZmZXIuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbigpOiBQcm9taXNlPE9iamVjdD59IHJldHVybi5qc29uIC0gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBwcm9taXNlIHJlc29sdmluZyB0byB0aGUgYm9keSBwYXJzZWQgYXMgSlNPTi5cbiAqL1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHVybCkge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKVxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSFRUUCBlcnJvciEgc3RhdHVzOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxuICAgIH1cbiAgICBjb25zdCBoYW5kbGVyID0gdXJsLmVuZHNXaXRoKCcubGFuZycpID8gJ3RleHQnIDogJ2pzb24nXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlW2hhbmRsZXJdKClcbiAgICByZXR1cm4gZGF0YVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1RoZXJlIGhhcyBiZWVuIGEgcHJvYmxlbSB3aXRoIHlvdXIgZmV0Y2ggb3BlcmF0aW9uOicsIGVycm9yKVxuICAgIHRocm93IGVycm9yXG4gIH1cbn1cbiIsImltcG9ydCB7IGZldGNoRGF0YSB9IGZyb20gJy4vZmV0Y2guanMnXG5cbmNvbnN0IERFRkFVTFRfQ09ORklHID0ge1xuICBleHRlbnNpb246ICcubGFuZycsXG4gIC8vIGxvY2FsIG9yIHJlbW90ZSBkaXJlY3RvcnkgY29udGFpbmluZyBsYW5ndWFnZSBmaWxlc1xuICBsb2NhdGlvbjogJ2Fzc2V0cy9sYW5nLycsXG4gIC8vIGxpc3Qgb2YgYXZhaWxhYmxlIGxvY2FsZXMsIGhhbmR5IGZvciBwb3B1bGF0aW5nIHNlbGVjdG9yLlxuICBsYW5nczogWydlbi1VUyddLFxuICBsb2NhbGU6ICdlbi1VUycsIC8vIGluaXQgd2l0aCB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlXG4gIG92ZXJyaWRlOiB7fSxcbn1cblxuLy8gU2luZ2xldG9uIGluc3RhbmNlIGhvbGRlclxubGV0IGluc3RhbmNlID0gbnVsbFxuXG4vKipcbiAqIE1haW4gaTE4biBjbGFzc1xuICogQGNsYXNzIEkxOE5CYXNlXG4gKiBAY2xhc3NkZXNjIG1ldGhvZHMgYW5kIGRhdGEgc3RvcmUgZm9yIGkxOG5cbiAqL1xuY2xhc3MgSTE4TkJhc2Uge1xuICAvKipcbiAgICogUHJvY2VzcyBvcHRpb25zIGFuZCBzdGFydCB0aGUgbW9kdWxlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zID0gREVGQVVMVF9DT05GSUcpIHtcbiAgICB0aGlzLmxhbmdzID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuICAgIHRoaXMubG9hZGVkID0gW11cbiAgICB0aGlzLnByb2Nlc3NDb25maWcob3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBwYXJzZSBhbmQgZm9ybWF0IGNvbmZpZ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgKi9cbiAgcHJvY2Vzc0NvbmZpZyhvcHRpb25zKSB7XG4gICAgY29uc3QgeyBsb2NhdGlvbiwgLi4ucmVzdE9wdGlvbnMgfSA9IHsgLi4uREVGQVVMVF9DT05GSUcsIC4uLm9wdGlvbnMgfVxuICAgIC8vIEVuc3VyZSBsb2NhdGlvbiBlbmRzIHdpdGggYSBzbGFzaFxuICAgIGNvbnN0IHBhcnNlZExvY2F0aW9uID0gbG9jYXRpb24uZW5kc1dpdGgoJy8nKSA/IGxvY2F0aW9uIDogYCR7bG9jYXRpb259L2BcbiAgICB0aGlzLmNvbmZpZyA9IHsgbG9jYXRpb246IHBhcnNlZExvY2F0aW9uLCAuLi5yZXN0T3B0aW9ucyB9XG5cbiAgICBjb25zdCB7IHByZWxvYWRlZCA9IHt9LCBvdmVycmlkZSA9IHt9IH0gPSB0aGlzLmNvbmZpZ1xuXG4gICAgLy8gTWVyZ2UgbG9jYWxlcyBmcm9tIGJvdGggcHJlbG9hZGVkIGFuZCBvdmVycmlkZVxuICAgIC8vIFRoaXMgc3VwcG9ydHMgbGVnYWN5IHVzYWdlIHdoZXJlIG92ZXJyaWRlIGRlZmluZWQgZW50aXJlIGxhbmd1YWdlc1xuICAgIGNvbnN0IGFsbExvY2FsZXMgPSBuZXcgU2V0KFsuLi5PYmplY3Qua2V5cyhwcmVsb2FkZWQpLCAuLi5PYmplY3Qua2V5cyhvdmVycmlkZSldKVxuXG4gICAgLy8gQXBwbHkgbGFuZ3VhZ2VzIGZyb20gYm90aCBwcmVsb2FkZWQgYW5kIG92ZXJyaWRlXG4gICAgLy8gYXBwbHlMYW5ndWFnZSB3aWxsIG1lcmdlIHRoZW0gcHJvcGVybHkgKGV4aXN0aW5nICsgcHJlbG9hZGVkICsgb3ZlcnJpZGUpXG4gICAgZm9yIChjb25zdCBsb2NhbGUgb2YgYWxsTG9jYWxlcykge1xuICAgICAgY29uc3QgcHJlbG9hZGVkTGFuZyA9IHByZWxvYWRlZFtsb2NhbGVdIHx8IHt9XG4gICAgICBjb25zdCBvdmVycmlkZUxhbmcgPSBvdmVycmlkZVtsb2NhbGVdIHx8IHt9XG4gICAgICAvLyBNZXJnZSBwcmVsb2FkZWQgYW5kIG92ZXJyaWRlIGZvciB0aGlzIGxvY2FsZVxuICAgICAgY29uc3QgbWVyZ2VkTGFuZyA9IHsgLi4ucHJlbG9hZGVkTGFuZywgLi4ub3ZlcnJpZGVMYW5nIH1cbiAgICAgIHRoaXMuYXBwbHlMYW5ndWFnZShsb2NhbGUsIG1lcmdlZExhbmcpXG4gICAgfVxuXG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLmNvbmZpZy5sb2NhbGUgfHwgdGhpcy5jb25maWcubGFuZ3NbMF1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGxhbmd1YWdlIGFuZCBzZXQgZGVmYXVsdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IG9wdGlvbnNcbiAgICogQHJldHVybiB7UHJvbWlzZX0gICAgICAgIHJlc29sdmVzIGxhbmd1YWdlXG4gICAqL1xuICBpbml0KG9wdGlvbnMpIHtcbiAgICB0aGlzLnByb2Nlc3NDb25maWcoeyAuLi50aGlzLmNvbmZpZywgLi4ub3B0aW9ucyB9KVxuICAgIHJldHVybiB0aGlzLnNldEN1cnJlbnQodGhpcy5sb2NhbGUpXG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGxhbmd1YWdlIHRvIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXNcbiAgICogQHBhcmFtIHtTdHJpbmd9IGxvY2FsZVxuICAgKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IGxhbmdcbiAgICovXG4gIGFkZExhbmd1YWdlKGxvY2FsZSwgbGFuZyA9IHt9KSB7XG4gICAgbGFuZyA9IHR5cGVvZiBsYW5nID09PSAnc3RyaW5nJyA/IEkxOE5CYXNlLnByb2Nlc3NGaWxlKGxhbmcpIDogbGFuZ1xuICAgIHRoaXMuYXBwbHlMYW5ndWFnZShsb2NhbGUsIGxhbmcpXG4gICAgdGhpcy5sb2FkZWQucHVzaChsb2NhbGUpXG4gICAgdGhpcy5jb25maWcubGFuZ3MucHVzaChsb2NhbGUpXG4gIH1cblxuICAvKipcbiAgICogZ2V0IGEgc3RyaW5nIGZyb20gYSBsb2FkZWQgbGFuZ3VhZ2UgZmlsZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGtleSAgLSB0aGUga2V5IGZvciB0aGUgc3RyaW5nIHdlIGFyZSB0cnlpbmcgdG8gcmV0cmlldmVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBsb2NhbGUgLSBsb2NhbGUgdG8gY2hlY2sgZm9yIHZhbHVlXG4gICAqIEByZXR1cm4ge1N0cmluZ30gbGFuZ3VhZ2Ugc3RyaW5nIG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgZ2V0VmFsdWUoa2V5LCBsb2NhbGUgPSB0aGlzLmxvY2FsZSkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5sYW5nc1tsb2NhbGVdPy5ba2V5XVxuICAgIHJldHVybiB2YWx1ZSB8fCB0aGlzLmdldEZhbGxiYWNrVmFsdWUoa2V5KVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYSBsYW5ndWFnZSB0aGF0IGhhcyBkZXNpcmVkIGtleVxuICAgKiBAcGFyYW0ge1N0cmluZ30ga2V5IHZhbHVlIGtleVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IGZvdW5kIHZhbHVlIG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgZ2V0RmFsbGJhY2tWYWx1ZShrZXkpIHtcbiAgICBjb25zdCBmYWxsYmFja0xhbmcgPSBPYmplY3QudmFsdWVzKHRoaXMubGFuZ3MpLmZpbmQobGFuZyA9PiBsYW5nW2tleV0pXG4gICAgcmV0dXJuIGZhbGxiYWNrTGFuZz8uW2tleV1cbiAgfVxuXG4gIC8qKlxuICAgKiBFc2NhcGUgdmFyaWFibGUgc3ludGF4XG4gICAqIEBwYXJhbSAge1N0cmluZ30gc3RyXG4gICAqIEByZXR1cm4ge1N0cmluZ30gICAgIGVzY2FwZWQgc3RyXG4gICAqL1xuICBtYWtlU2FmZShzdHIpIHtcbiAgICBjb25zdCBtYXBPYmogPSB7XG4gICAgICAneyc6IFN0cmluZy5yYXdgXFx7YCxcbiAgICAgICd9JzogU3RyaW5nLnJhd2BcXH1gLFxuICAgICAgJ3wnOiBTdHJpbmcucmF3YFxcfGAsXG4gICAgfVxuXG4gICAgY29uc3QgZXNjYXBlZFN0ciA9IHN0ci5yZXBsYWNlQWxsKC9be318XS9nLCBtYXRjaGVkID0+IG1hcE9ialttYXRjaGVkXSlcblxuICAgIHJldHVybiBuZXcgUmVnRXhwKGVzY2FwZWRTdHIsICdnJylcbiAgfVxuXG4gIC8qKlxuICAgKiBUZW1wb3JhcmlseSBwdXQgYSBzdHJpbmcgaW50byB0aGUgY3VycmVudGx5IGxvYWRlZCBsYW5ndWFnZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGtleVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IHN0cmluZ1xuICAgKiBAcmV0dXJuIHtTdHJpbmd9IHN0cmluZyBpbiBjdXJyZW50IGxhbmd1YWdlXG4gICAqL1xuICBwdXQoa2V5LCBzdHJpbmcpIHtcbiAgICB0aGlzLmN1cnJlbnRba2V5XSA9IHN0cmluZ1xuXG4gICAgcmV0dXJuIHN0cmluZ1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGFyZ3VtZW50cyBmb3IgdGhlIHJlcXVlc3RlZCBzdHJpbmdcbiAgICogQHBhcmFtICB7U3RyaW5nfSBrZXkgIHRoZSBrZXkgd2UgdXNlIHRvIGxvb2t1cCBvdXIgdHJhbnNsYXRpb25cbiAgICogQHBhcmFtICB7bXVsdGl9ICBhcmdzICBzdHJpbmcsIG51bWJlciBvciBvYmplY3QgY29udGFpbmluZyBvdXIgYXJndW1lbnRzXG4gICAqIEByZXR1cm4ge1N0cmluZ30gICAgICB1cGRhdGVkIHN0cmluZyB0cmFuc2xhdGlvblxuICAgKi9cbiAgZ2V0KGtleSwgYXJncykge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoa2V5KVxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIE5vIHJlcGxhY2VtZW50IG5lZWRlZCBpZiBubyBhcmdzIHByb3ZpZGVkXG4gICAgaWYgKCFhcmdzKSB7XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbnMgPSB2YWx1ZS5tYXRjaCgvXFx7W159XSs/XFx9L2cpXG5cbiAgICAvLyBObyB0b2tlbnMgdG8gcmVwbGFjZVxuICAgIGlmICghdG9rZW5zKSB7XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG5cbiAgICAvLyBPYmplY3QgYXJnczogcmVwbGFjZSBlYWNoIHRva2VuIHdpdGggY29ycmVzcG9uZGluZyBrZXlcbiAgICBpZiAodHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnKSB7XG4gICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2Vucykge1xuICAgICAgICBjb25zdCB0b2tlbktleSA9IHRva2VuLnNsaWNlKDEsIC0xKVxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UodGhpcy5tYWtlU2FmZSh0b2tlbiksIGFyZ3NbdG9rZW5LZXldID8/ICcnKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQcmltaXRpdmUgYXJnczogcmVwbGFjZSBhbGwgdG9rZW5zIHdpdGggc2FtZSB2YWx1ZVxuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlQWxsKC9cXHtbXn1dKz9cXH0vZywgYXJncylcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0aWMgbWV0aG9kOiBQcm9jZXNzIGEgbGFuZ3VhZ2UgZmlsZSBmcm9tIHJhdyB0ZXh0XG4gICAqIEBwYXJhbSAge1N0cmluZ30gcmVzcG9uc2VcbiAgICogQHJldHVybiB7T2JqZWN0fSBwcm9jZXNzZWQgbGFuZ3VhZ2VcbiAgICovXG4gIHN0YXRpYyBwcm9jZXNzRmlsZShyZXNwb25zZSkge1xuICAgIHJldHVybiBJMThOLmZyb21GaWxlKHJlc3BvbnNlLnJlcGxhY2VBbGwoJ1xcblxcbicsICdcXG4nKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0aWMgbWV0aG9kOiBUdXJuIHJhdyB0ZXh0IGZyb20gdGhlIGxhbmd1YWdlIGZpbGVzIGludG8gZmFuY3kgSlNPTlxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IHJhd1RleHRcbiAgICogQHJldHVybiB7T2JqZWN0fSBjb252ZXJ0ZWQgbGFuZ3VhZ2UgZmlsZVxuICAgKi9cbiAgc3RhdGljIGZyb21GaWxlKHJhd1RleHQpIHtcbiAgICBjb25zdCBsaW5lcyA9IHJhd1RleHQuc3BsaXQoJ1xcbicpXG4gICAgY29uc3QgbGFuZyA9IHt9XG5cbiAgICBmb3IgKGxldCBtYXRjaGVzLCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCByZWdleCA9IC9eKC4rPykgKj89ICo/KFteXFxuXSspL1xuICAgICAgbWF0Y2hlcyA9IHJlZ2V4LmV4ZWMobGluZXNbaV0pXG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICBsYW5nW21hdGNoZXNbMV1dID0gbWF0Y2hlc1syXS50cmltKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGFuZ1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2luZ2xldG9uIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAqIEByZXR1cm4ge0kxOE5CYXNlfSBzaW5nbGV0b24gaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBnZXRJbnN0YW5jZShvcHRpb25zKSB7XG4gICAgaWYgKCFpbnN0YW5jZSkge1xuICAgICAgaW5zdGFuY2UgPSBuZXcgSTE4TkJhc2Uob3B0aW9ucylcbiAgICB9XG4gICAgcmV0dXJuIGluc3RhbmNlXG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSAodXNlZnVsIGZvciB0ZXN0aW5nKVxuICAgKi9cbiAgc3RhdGljIHJlc2V0SW5zdGFuY2UoKSB7XG4gICAgaW5zdGFuY2UgPSBudWxsXG4gIH1cblxuICAvKipcbiAgICogTG9hZCBhIHJlbW90ZWx5IHN0b3JlZCBsYW5ndWFnZSBmaWxlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gbG9jYWxlXG4gICAqIEBwYXJhbSAge0Jvb2xlYW59IHVzZUNhY2hlXG4gICAqIEByZXR1cm4ge1Byb21pc2V9ICAgICAgIHJlc29sdmVzIHJlc3BvbnNlXG4gICAqL1xuICBhc3luYyBsb2FkTGFuZyhsb2NhbGUsIHVzZUNhY2hlID0gdHJ1ZSkge1xuICAgIC8vIFJldHVybiBjYWNoZWQgbGFuZ3VhZ2UgaWYgYWxyZWFkeSBsb2FkZWRcbiAgICBpZiAodGhpcy5sb2FkZWQuaW5jbHVkZXMobG9jYWxlKSAmJiB1c2VDYWNoZSkge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ3NbbG9jYWxlXVxuICAgIH1cbiAgICAvLyBGZXRjaCBhbmQgcHJvY2VzcyBsYW5ndWFnZSBmaWxlXG4gICAgY29uc3QgbGFuZ0ZpbGUgPSBgJHt0aGlzLmNvbmZpZy5sb2NhdGlvbn0ke2xvY2FsZX0ke3RoaXMuY29uZmlnLmV4dGVuc2lvbn1gXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbGFuZyA9IGF3YWl0IGZldGNoRGF0YShsYW5nRmlsZSlcbiAgICAgIGNvbnN0IHByb2Nlc3NlZEZpbGUgPSBJMThOQmFzZS5wcm9jZXNzRmlsZShsYW5nKVxuICAgICAgdGhpcy5hcHBseUxhbmd1YWdlKGxvY2FsZSwgcHJvY2Vzc2VkRmlsZSlcbiAgICAgIHJldHVybiB0aGlzLmxhbmdzW2xvY2FsZV1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgICAgcmV0dXJuIHRoaXMuYXBwbHlMYW5ndWFnZShsb2NhbGUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGFwcGxpZXMgb3ZlcnJpZGVzIGZyb20gY29uZmlnXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBsb2NhbGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGxhbmdcbiAgICogQHJldHVybiB7T2JqZWN0fSBvdmVycmlkZW4gbGFuZ3VhZ2VcbiAgICovXG4gIGFwcGx5TGFuZ3VhZ2UobG9jYWxlLCBsYW5nID0ge30pIHtcbiAgICBjb25zdCBvdmVycmlkZSA9IHRoaXMuY29uZmlnLm92ZXJyaWRlW2xvY2FsZV0gfHwge31cbiAgICBjb25zdCBleGlzdGluZ0xhbmcgPSB0aGlzLmxhbmdzW2xvY2FsZV0gfHwge31cbiAgICB0aGlzLmxhbmdzW2xvY2FsZV0gPSB7IC4uLmV4aXN0aW5nTGFuZywgLi4ubGFuZywgLi4ub3ZlcnJpZGUgfVxuICAgIHRoaXMubG9hZGVkLnB1c2gobG9jYWxlKVxuICAgIHJldHVybiB0aGlzLmxhbmdzW2xvY2FsZV1cbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm4gY3VycmVudGx5IGF2YWlsYWJsZSBsYW5ndWFnZXNcbiAgICogQHJldHVybiB7T2JqZWN0fSBhbGwgY29uZmlndXJlZCBsYW5ndWFnZXNcbiAgICovXG4gIGdldCBnZXRMYW5ncygpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcubGFuZ3NcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0IHRvIHNldCB0aGUgY3VycmVudCBsYW5ndWFnZSB0byB0aGUgbG9jYWwgcHJvdmlkZWRcbiAgICogQHBhcmFtIHtTdHJpbmd9ICAgbG9jYWxlXG4gICAqIEByZXR1cm4ge1Byb21pc2V9IGxhbmd1YWdlXG4gICAqL1xuICBhc3luYyBzZXRDdXJyZW50KGxvY2FsZSA9ICdlbi1VUycpIHtcbiAgICBpZiAoIXRoaXMubG9hZGVkLmluY2x1ZGVzKGxvY2FsZSkpIHtcbiAgICAgIGF3YWl0IHRoaXMubG9hZExhbmcobG9jYWxlKVxuICAgIH1cblxuICAgIHRoaXMubG9jYWxlID0gbG9jYWxlXG4gICAgdGhpcy5jdXJyZW50ID0gdGhpcy5sYW5nc1tsb2NhbGVdXG5cbiAgICByZXR1cm4gdGhpcy5jdXJyZW50XG4gIH1cbn1cblxuLyoqXG4gKiBQcm94eSB3cmFwcGVyIHRoYXQgZW5hYmxlcyBzaW5nbGV0b24gcGF0dGVybjpcbiAqIC0gSTE4TigpIHJldHVybnMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZVxuICogLSBuZXcgSTE4TigpIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2VcbiAqL1xuZXhwb3J0IGNvbnN0IEkxOE4gPSBuZXcgUHJveHkoSTE4TkJhc2UsIHtcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIEkxOE4oKSBpcyBpbnZva2VkIGFzIGEgZnVuY3Rpb24gKHdpdGhvdXQgbmV3KVxuICAgKiBSZXR1cm5zIHRoZSBzaW5nbGV0b24gaW5zdGFuY2VcbiAgICovXG4gIGFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncykge1xuICAgIHJldHVybiB0YXJnZXQuZ2V0SW5zdGFuY2UoLi4uYXJncylcbiAgfSxcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gbmV3IEkxOE4oKSBpcyBpbnZva2VkXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2VcbiAgICovXG4gIGNvbnN0cnVjdCh0YXJnZXQsIGFyZ3MpIHtcbiAgICByZXR1cm4gbmV3IHRhcmdldCguLi5hcmdzKVxuICB9LFxuXG4gIC8qKlxuICAgKiBQcm94eSBwcm9wZXJ0eSBhY2Nlc3MgdG8gdGhlIGJhc2UgY2xhc3NcbiAgICovXG4gIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICByZXR1cm4gdGFyZ2V0W3Byb3BdXG4gIH0sXG59KVxuXG5leHBvcnQgZGVmYXVsdCBJMThOLmdldEluc3RhbmNlKClcbiJdLCJtYXBwaW5ncyI6IitGQUF1QixPQUFPLE9BQU8sQ0FBRSxPQUFRLE1BQU8sS0FBTSxLQ0U1RCxJQUFNLEVBQWlCLENBQ3JCLFVBQVcsUUFFWCxTQUFVLGVBRVYsTUFBTyxDQUFDLFNBQ1IsT0FBUSxRQUNSLFNBQVUsQ0FBQSxHQUlSLEVBQVcsS0FrUkYsRUFBTyxJQUFJLE1BM1F4QixNQUFNLEVBS0osV0FBQSxDQUFZLEVBQVUsR0FDcEIsS0FBSyxNQUFRLE9BQU8sT0FBTyxNQUMzQixLQUFLLE9BQVMsR0FDZCxLQUFLLGNBQWMsR0FPckIsYUFBQSxDQUFjLEdBQ1osTUFBTSxTQUFFLEtBQWEsR0FBZ0IsSUFBSyxLQUFtQixHQUV2RCxFQUFpQixFQUFTLFNBQVMsS0FBTyxFQUFXLEdBQUcsS0FDOUQsS0FBSyxPQUFTLENBQUUsU0FBVSxLQUFtQixHQUU3QyxNQUFNLFVBQUUsRUFBWSxDQUFBLEVBQUUsU0FBRSxFQUFXLENBQUEsR0FBTyxLQUFLLE9BSXpDLEVBQWEsSUFBSSxJQUFJLElBQUksT0FBTyxLQUFLLE1BQWUsT0FBTyxLQUFLLEtBSXRFLElBQUssTUFBTSxLQUFVLEVBQVksQ0FDL0IsTUFHTSxFQUFhLElBSEcsRUFBVSxJQUFXLENBQUEsS0FDdEIsRUFBUyxJQUFXLENBQUEsR0FHekMsS0FBSyxjQUFjLEVBQVEsR0FHN0IsS0FBSyxPQUFTLEtBQUssT0FBTyxRQUFVLEtBQUssT0FBTyxNQUFNLEdBUXhELElBQUEsQ0FBSyxHQUVILE9BREEsS0FBSyxjQUFjLElBQUssS0FBSyxVQUFXLElBQ2pDLEtBQUssV0FBVyxLQUFLLFFBUTlCLFdBQUEsQ0FBWSxFQUFRLEVBQU8sQ0FBQSxHQUN6QixFQUF1QixpQkFBVCxFQUFvQixFQUFTLFlBQVksR0FBUSxFQUMvRCxLQUFLLGNBQWMsRUFBUSxHQUMzQixLQUFLLE9BQU8sS0FBSyxHQUNqQixLQUFLLE9BQU8sTUFBTSxLQUFLLEdBU3pCLFFBQUEsQ0FBUyxFQUFLLEVBQVMsS0FBSyxRQUUxQixPQURjLEtBQUssTUFBTSxLQUFVLElBQ25CLEtBQUssaUJBQWlCLEdBUXhDLGdCQUFBLENBQWlCLEdBRWYsT0FEcUIsT0FBTyxPQUFPLEtBQUssT0FBTyxLQUFLLEdBQVEsRUFBSyxNQUMzQyxHQVF4QixRQUFBLENBQVMsR0FDUCxNQUFNLEVBQVMsQ0FDYixJQUFLLE9BQU8sR0FBRyxLQUNmLElBQUssT0FBTyxHQUFHLEtBQ2YsSUFBSyxPQUFPLEdBQUcsTUFHWCxFQUFhLEVBQUksV0FBVyxTQUFVLEdBQVcsRUFBTyxJQUU5RCxPQUFPLElBQUksT0FBTyxFQUFZLEtBU2hDLEdBQUEsQ0FBSSxFQUFLLEdBR1AsT0FGQSxLQUFLLFFBQVEsR0FBTyxFQUViLEVBU1QsR0FBQSxDQUFJLEVBQUssR0FDUCxJQUFJLEVBQVEsS0FBSyxTQUFTLEdBQzFCLElBQUssRUFDSCxPQUlGLElBQUssRUFDSCxPQUFPLEVBR1QsTUFBTSxFQUFTLEVBQU0sTUFBTSxlQUczQixJQUFLLEVBQ0gsT0FBTyxFQUlULEdBQW9CLGlCQUFULEVBQ1QsSUFBSyxNQUFNLEtBQVMsRUFBUSxDQUMxQixNQUFNLEVBQVcsRUFBTSxNQUFNLEdBQUcsR0FDaEMsRUFBUSxFQUFNLFFBQVEsS0FBSyxTQUFTLEdBQVEsRUFBSyxJQUFhLFNBSWhFLEVBQVEsRUFBTSxXQUFXLGNBQWUsR0FHMUMsT0FBTyxFQVFULGtCQUFPLENBQVksR0FDakIsT0FBTyxFQUFLLFNBQVMsRUFBUyxXQUFXLE9BQVEsT0FRbkQsZUFBTyxDQUFTLEdBQ2QsTUFBTSxFQUFRLEVBQVEsTUFBTSxNQUN0QixFQUFPLENBQUEsRUFFYixJQUFLLElBQUksRUFBUyxFQUFJLEVBQUcsRUFBSSxFQUFNLE9BQVEsSUFFekMsRUFBVSx3QkFBTSxLQUFLLEVBQU0sSUFDdkIsSUFDRixFQUFLLEVBQVEsSUFBTSxFQUFRLEdBQUcsUUFJbEMsT0FBTyxFQVFULGtCQUFPLENBQVksR0FJakIsT0FISyxJQUNILEVBQVcsSUFBSSxFQUFTLElBRW5CLEVBTVQsb0JBQU8sR0FDTCxFQUFXLEtBU2IsY0FBTSxDQUFTLEVBQVEsR0FBVyxHQUVoQyxHQUFJLEtBQUssT0FBTyxTQUFTLElBQVcsRUFDbEMsT0FBTyxLQUFLLE1BQU0sR0FHcEIsTUFBTSxFQUFXLEdBQUcsS0FBSyxPQUFPLFdBQVcsSUFBUyxLQUFLLE9BQU8sWUFFaEUsSUFDRSxNQUFNLFFEdE5aLGVBQWdDLEdBQzlCLElBQ0UsTUFBTSxRQUFpQixNQUFNLEdBQzdCLElBQUssRUFBUyxHQUNaLE1BQU0sSUFBSSxNQUFNLHVCQUF1QixFQUFTLFVBSWxELGFBRG1CLEVBREgsRUFBSSxTQUFTLFNBQVcsT0FBUyxnQkFHMUMsR0FFUCxNQUFNLEdDMk1lLENBQVUsR0FDdkIsRUFBZ0IsRUFBUyxZQUFZLEdBRTNDLE9BREEsS0FBSyxjQUFjLEVBQVEsR0FDcEIsS0FBSyxNQUFNLFNBQ1gsR0FFUCxPQUFPLEtBQUssY0FBYyxJQVU5QixhQUFBLENBQWMsRUFBUSxFQUFPLENBQUEsR0FDM0IsTUFBTSxFQUFXLEtBQUssT0FBTyxTQUFTLElBQVcsQ0FBQSxFQUMzQyxFQUFlLEtBQUssTUFBTSxJQUFXLENBQUEsRUFHM0MsT0FGQSxLQUFLLE1BQU0sR0FBVSxJQUFLLEtBQWlCLEtBQVMsR0FDcEQsS0FBSyxPQUFPLEtBQUssR0FDVixLQUFLLE1BQU0sR0FPcEIsWUFBSSxHQUNGLE9BQU8sS0FBSyxPQUFPLE1BUXJCLGdCQUFNLENBQVcsRUFBUyxTQVF4QixPQVBLLEtBQUssT0FBTyxTQUFTLFVBQ2xCLEtBQUssU0FBUyxHQUd0QixLQUFLLE9BQVMsRUFDZCxLQUFLLFFBQVUsS0FBSyxNQUFNLEdBRW5CLEtBQUssVUFTd0IsQ0FLdEMsTUFBQSxDQUFNLEVBQVEsRUFBUyxJQUNkLEVBQU8sZUFBZSxHQU8vQixVQUFBLENBQVUsRUFBUSxJQUNULElBQUksS0FBVSxHQU12QixJQUFBLENBQUksRUFBUSxJQUNILEVBQU8sS0FJbEIsRUFBZSxFQUFLIn0=
|
|
9
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5janMubWluLmpzIiwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydGllcyIsImV4cG9ydHMiLCJfX2VzTW9kdWxlIiwidmFsdWUiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsImZyZWV6ZSIsIm1ldGhvZCIsImJvZHkiLCJERUZBVUxUX0NPTkZJRyIsImV4dGVuc2lvbiIsImxvY2F0aW9uIiwibGFuZ3MiLCJsb2NhbGUiLCJvdmVycmlkZSIsImluc3RhbmNlIiwiSTE4TiIsIlByb3h5IiwiSTE4TkJhc2UiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJ0aGlzIiwiY3JlYXRlIiwibG9hZGVkIiwicHJvY2Vzc0NvbmZpZyIsInJlc3RPcHRpb25zIiwicGFyc2VkTG9jYXRpb24iLCJlbmRzV2l0aCIsImNvbmZpZyIsInByZWxvYWRlZCIsImFsbExvY2FsZXMiLCJTZXQiLCJrZXlzIiwibWVyZ2VkTGFuZyIsImFwcGx5TGFuZ3VhZ2UiLCJpbml0Iiwic2V0Q3VycmVudCIsImFkZExhbmd1YWdlIiwibGFuZyIsInByb2Nlc3NGaWxlIiwicHVzaCIsImdldFZhbHVlIiwia2V5IiwiZ2V0RmFsbGJhY2tWYWx1ZSIsInZhbHVlcyIsImZpbmQiLCJtYWtlU2FmZSIsInN0ciIsIm1hcE9iaiIsIlN0cmluZyIsInJhdyIsImVzY2FwZWRTdHIiLCJyZXBsYWNlQWxsIiwibWF0Y2hlZCIsIlJlZ0V4cCIsInB1dCIsInN0cmluZyIsImN1cnJlbnQiLCJnZXQiLCJhcmdzIiwidG9rZW5zIiwibWF0Y2giLCJ0b2tlbiIsInRva2VuS2V5Iiwic2xpY2UiLCJyZXBsYWNlIiwicmVzcG9uc2UiLCJmcm9tRmlsZSIsInJhd1RleHQiLCJsaW5lcyIsInNwbGl0IiwibWF0Y2hlcyIsImkiLCJsZW5ndGgiLCJleGVjIiwidHJpbSIsImdldEluc3RhbmNlIiwicmVzZXRJbnN0YW5jZSIsImxvYWRMYW5nIiwidXNlQ2FjaGUiLCJpbmNsdWRlcyIsImxhbmdGaWxlIiwiYXN5bmMiLCJ1cmwiLCJmZXRjaCIsIm9rIiwiRXJyb3IiLCJzdGF0dXMiLCJlcnJvciIsImZldGNoRGF0YSIsInByb2Nlc3NlZEZpbGUiLCJlcnIiLCJleGlzdGluZ0xhbmciLCJnZXRMYW5ncyIsImFwcGx5IiwidGFyZ2V0IiwidGhpc0FyZyIsImNvbnN0cnVjdCIsInByb3AiLCJtaTE4bl9kZWZhdWx0IiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9mZXRjaC5qcyIsIi4uL3NyYy9taTE4bi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBkZWZhdWx0T3B0aW9ucyA9IE9iamVjdC5mcmVlemUoeyBtZXRob2Q6ICdHRVQnLCBib2R5OiAnJyB9KVxuLyoqXG4gKiBGZXRjaGVzIGEgcmVzb3VyY2UgZnJvbSB0aGUgbmV0d29yay5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gVGhlIFVSTCB0byBmZXRjaC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbZmV0Y2hPcHRpb25zPXt9XSAtIFRoZSBvcHRpb25zIGZvciB0aGUgZmV0Y2ggcmVxdWVzdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbZmV0Y2hPcHRpb25zLmhlYWRlcnNdIC0gSGVhZGVycyB0byBpbmNsdWRlIGluIHRoZSByZXF1ZXN0LlxuICogQHBhcmFtIHtzdHJpbmd9IFtmZXRjaE9wdGlvbnMubWV0aG9kXSAtIFRoZSBIVFRQIG1ldGhvZCB0byB1c2UgKGUuZy4sICdHRVQnLCAnUE9TVCcpLlxuICogQHBhcmFtIHtzdHJpbmd8QnVmZmVyfSBbZmV0Y2hPcHRpb25zLmJvZHldIC0gVGhlIGJvZHkgb2YgdGhlIHJlcXVlc3QuXG4gKiBAcmV0dXJuIHtQcm9taXNlPE9iamVjdD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXNwb25zZSBvYmplY3QuXG4gKiBAcmV0dXJuIHtib29sZWFufSByZXR1cm4ub2sgLSBJbmRpY2F0ZXMgaWYgdGhlIHJlc3BvbnNlIHN0YXR1cyBpcyBpbiB0aGUgcmFuZ2UgMjAwLTI5OS5cbiAqIEByZXR1cm4ge251bWJlcn0gcmV0dXJuLnN0YXR1cyAtIFRoZSBIVFRQIHN0YXR1cyBjb2RlIG9mIHRoZSByZXNwb25zZS5cbiAqIEByZXR1cm4ge3N0cmluZ30gcmV0dXJuLnN0YXR1c1RleHQgLSBUaGUgSFRUUCBzdGF0dXMgbWVzc2FnZSBvZiB0aGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJuIHtNYXA8c3RyaW5nLCBzdHJpbmc+fSByZXR1cm4uaGVhZGVycyAtIFRoZSBoZWFkZXJzIG9mIHRoZSByZXNwb25zZS5cbiAqIEByZXR1cm4ge0J1ZmZlcn0gcmV0dXJuLmJvZHkgLSBUaGUgYm9keSBvZiB0aGUgcmVzcG9uc2UgYXMgYSBCdWZmZXIuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbigpOiBQcm9taXNlPEJ1ZmZlcj59IHJldHVybi5hcnJheUJ1ZmZlciAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGJvZHkgYXMgYW4gQXJyYXlCdWZmZXIuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbigpOiBQcm9taXNlPE9iamVjdD59IHJldHVybi5qc29uIC0gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBwcm9taXNlIHJlc29sdmluZyB0byB0aGUgYm9keSBwYXJzZWQgYXMgSlNPTi5cbiAqL1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHVybCkge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKVxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSFRUUCBlcnJvciEgc3RhdHVzOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxuICAgIH1cbiAgICBjb25zdCBoYW5kbGVyID0gdXJsLmVuZHNXaXRoKCcubGFuZycpID8gJ3RleHQnIDogJ2pzb24nXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlW2hhbmRsZXJdKClcbiAgICByZXR1cm4gZGF0YVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1RoZXJlIGhhcyBiZWVuIGEgcHJvYmxlbSB3aXRoIHlvdXIgZmV0Y2ggb3BlcmF0aW9uOicsIGVycm9yKVxuICAgIHRocm93IGVycm9yXG4gIH1cbn1cbiIsImltcG9ydCB7IGZldGNoRGF0YSB9IGZyb20gJy4vZmV0Y2guanMnXG5cbmNvbnN0IERFRkFVTFRfQ09ORklHID0ge1xuICBleHRlbnNpb246ICcubGFuZycsXG4gIC8vIGxvY2FsIG9yIHJlbW90ZSBkaXJlY3RvcnkgY29udGFpbmluZyBsYW5ndWFnZSBmaWxlc1xuICBsb2NhdGlvbjogJ2Fzc2V0cy9sYW5nLycsXG4gIC8vIGxpc3Qgb2YgYXZhaWxhYmxlIGxvY2FsZXMsIGhhbmR5IGZvciBwb3B1bGF0aW5nIHNlbGVjdG9yLlxuICBsYW5nczogWydlbi1VUyddLFxuICBsb2NhbGU6ICdlbi1VUycsIC8vIGluaXQgd2l0aCB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlXG4gIG92ZXJyaWRlOiB7fSxcbn1cblxuLy8gU2luZ2xldG9uIGluc3RhbmNlIGhvbGRlclxubGV0IGluc3RhbmNlID0gbnVsbFxuXG4vKipcbiAqIE1haW4gaTE4biBjbGFzc1xuICogQGNsYXNzIEkxOE5CYXNlXG4gKiBAY2xhc3NkZXNjIG1ldGhvZHMgYW5kIGRhdGEgc3RvcmUgZm9yIGkxOG5cbiAqL1xuY2xhc3MgSTE4TkJhc2Uge1xuICAvKipcbiAgICogUHJvY2VzcyBvcHRpb25zIGFuZCBzdGFydCB0aGUgbW9kdWxlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zID0gREVGQVVMVF9DT05GSUcpIHtcbiAgICB0aGlzLmxhbmdzID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuICAgIHRoaXMubG9hZGVkID0gW11cbiAgICB0aGlzLnByb2Nlc3NDb25maWcob3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBwYXJzZSBhbmQgZm9ybWF0IGNvbmZpZ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgKi9cbiAgcHJvY2Vzc0NvbmZpZyhvcHRpb25zKSB7XG4gICAgY29uc3QgeyBsb2NhdGlvbiwgLi4ucmVzdE9wdGlvbnMgfSA9IHsgLi4uREVGQVVMVF9DT05GSUcsIC4uLm9wdGlvbnMgfVxuICAgIC8vIEVuc3VyZSBsb2NhdGlvbiBlbmRzIHdpdGggYSBzbGFzaFxuICAgIGNvbnN0IHBhcnNlZExvY2F0aW9uID0gbG9jYXRpb24uZW5kc1dpdGgoJy8nKSA/IGxvY2F0aW9uIDogYCR7bG9jYXRpb259L2BcbiAgICB0aGlzLmNvbmZpZyA9IHsgbG9jYXRpb246IHBhcnNlZExvY2F0aW9uLCAuLi5yZXN0T3B0aW9ucyB9XG5cbiAgICBjb25zdCB7IHByZWxvYWRlZCA9IHt9LCBvdmVycmlkZSA9IHt9IH0gPSB0aGlzLmNvbmZpZ1xuXG4gICAgLy8gTWVyZ2UgbG9jYWxlcyBmcm9tIGJvdGggcHJlbG9hZGVkIGFuZCBvdmVycmlkZVxuICAgIC8vIFRoaXMgc3VwcG9ydHMgbGVnYWN5IHVzYWdlIHdoZXJlIG92ZXJyaWRlIGRlZmluZWQgZW50aXJlIGxhbmd1YWdlc1xuICAgIGNvbnN0IGFsbExvY2FsZXMgPSBuZXcgU2V0KFsuLi5PYmplY3Qua2V5cyhwcmVsb2FkZWQpLCAuLi5PYmplY3Qua2V5cyhvdmVycmlkZSldKVxuXG4gICAgLy8gQXBwbHkgbGFuZ3VhZ2VzIGZyb20gYm90aCBwcmVsb2FkZWQgYW5kIG92ZXJyaWRlXG4gICAgLy8gYXBwbHlMYW5ndWFnZSB3aWxsIG1lcmdlIHRoZW0gcHJvcGVybHkgKGV4aXN0aW5nICsgcHJlbG9hZGVkICsgb3ZlcnJpZGUpXG4gICAgZm9yIChjb25zdCBsb2NhbGUgb2YgYWxsTG9jYWxlcykge1xuICAgICAgY29uc3QgcHJlbG9hZGVkTGFuZyA9IHByZWxvYWRlZFtsb2NhbGVdIHx8IHt9XG4gICAgICBjb25zdCBvdmVycmlkZUxhbmcgPSBvdmVycmlkZVtsb2NhbGVdIHx8IHt9XG4gICAgICAvLyBNZXJnZSBwcmVsb2FkZWQgYW5kIG92ZXJyaWRlIGZvciB0aGlzIGxvY2FsZVxuICAgICAgY29uc3QgbWVyZ2VkTGFuZyA9IHsgLi4ucHJlbG9hZGVkTGFuZywgLi4ub3ZlcnJpZGVMYW5nIH1cbiAgICAgIHRoaXMuYXBwbHlMYW5ndWFnZShsb2NhbGUsIG1lcmdlZExhbmcpXG4gICAgfVxuXG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLmNvbmZpZy5sb2NhbGUgfHwgdGhpcy5jb25maWcubGFuZ3NbMF1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGxhbmd1YWdlIGFuZCBzZXQgZGVmYXVsdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IG9wdGlvbnNcbiAgICogQHJldHVybiB7UHJvbWlzZX0gICAgICAgIHJlc29sdmVzIGxhbmd1YWdlXG4gICAqL1xuICBpbml0KG9wdGlvbnMpIHtcbiAgICB0aGlzLnByb2Nlc3NDb25maWcoeyAuLi50aGlzLmNvbmZpZywgLi4ub3B0aW9ucyB9KVxuICAgIHJldHVybiB0aGlzLnNldEN1cnJlbnQodGhpcy5sb2NhbGUpXG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGxhbmd1YWdlIHRvIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXNcbiAgICogQHBhcmFtIHtTdHJpbmd9IGxvY2FsZVxuICAgKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IGxhbmdcbiAgICovXG4gIGFkZExhbmd1YWdlKGxvY2FsZSwgbGFuZyA9IHt9KSB7XG4gICAgbGFuZyA9IHR5cGVvZiBsYW5nID09PSAnc3RyaW5nJyA/IEkxOE5CYXNlLnByb2Nlc3NGaWxlKGxhbmcpIDogbGFuZ1xuICAgIHRoaXMuYXBwbHlMYW5ndWFnZShsb2NhbGUsIGxhbmcpXG4gICAgdGhpcy5sb2FkZWQucHVzaChsb2NhbGUpXG4gICAgdGhpcy5jb25maWcubGFuZ3MucHVzaChsb2NhbGUpXG4gIH1cblxuICAvKipcbiAgICogZ2V0IGEgc3RyaW5nIGZyb20gYSBsb2FkZWQgbGFuZ3VhZ2UgZmlsZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGtleSAgLSB0aGUga2V5IGZvciB0aGUgc3RyaW5nIHdlIGFyZSB0cnlpbmcgdG8gcmV0cmlldmVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBsb2NhbGUgLSBsb2NhbGUgdG8gY2hlY2sgZm9yIHZhbHVlXG4gICAqIEByZXR1cm4ge1N0cmluZ30gbGFuZ3VhZ2Ugc3RyaW5nIG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgZ2V0VmFsdWUoa2V5LCBsb2NhbGUgPSB0aGlzLmxvY2FsZSkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5sYW5nc1tsb2NhbGVdPy5ba2V5XVxuICAgIHJldHVybiB2YWx1ZSB8fCB0aGlzLmdldEZhbGxiYWNrVmFsdWUoa2V5KVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYSBsYW5ndWFnZSB0aGF0IGhhcyBkZXNpcmVkIGtleVxuICAgKiBAcGFyYW0ge1N0cmluZ30ga2V5IHZhbHVlIGtleVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IGZvdW5kIHZhbHVlIG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgZ2V0RmFsbGJhY2tWYWx1ZShrZXkpIHtcbiAgICBjb25zdCBmYWxsYmFja0xhbmcgPSBPYmplY3QudmFsdWVzKHRoaXMubGFuZ3MpLmZpbmQobGFuZyA9PiBsYW5nW2tleV0pXG4gICAgcmV0dXJuIGZhbGxiYWNrTGFuZz8uW2tleV1cbiAgfVxuXG4gIC8qKlxuICAgKiBFc2NhcGUgdmFyaWFibGUgc3ludGF4XG4gICAqIEBwYXJhbSAge1N0cmluZ30gc3RyXG4gICAqIEByZXR1cm4ge1N0cmluZ30gICAgIGVzY2FwZWQgc3RyXG4gICAqL1xuICBtYWtlU2FmZShzdHIpIHtcbiAgICBjb25zdCBtYXBPYmogPSB7XG4gICAgICAneyc6IFN0cmluZy5yYXdgXFx7YCxcbiAgICAgICd9JzogU3RyaW5nLnJhd2BcXH1gLFxuICAgICAgJ3wnOiBTdHJpbmcucmF3YFxcfGAsXG4gICAgfVxuXG4gICAgY29uc3QgZXNjYXBlZFN0ciA9IHN0ci5yZXBsYWNlQWxsKC9be318XS9nLCBtYXRjaGVkID0+IG1hcE9ialttYXRjaGVkXSlcblxuICAgIHJldHVybiBuZXcgUmVnRXhwKGVzY2FwZWRTdHIsICdnJylcbiAgfVxuXG4gIC8qKlxuICAgKiBUZW1wb3JhcmlseSBwdXQgYSBzdHJpbmcgaW50byB0aGUgY3VycmVudGx5IGxvYWRlZCBsYW5ndWFnZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGtleVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IHN0cmluZ1xuICAgKiBAcmV0dXJuIHtTdHJpbmd9IHN0cmluZyBpbiBjdXJyZW50IGxhbmd1YWdlXG4gICAqL1xuICBwdXQoa2V5LCBzdHJpbmcpIHtcbiAgICB0aGlzLmN1cnJlbnRba2V5XSA9IHN0cmluZ1xuXG4gICAgcmV0dXJuIHN0cmluZ1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGFyZ3VtZW50cyBmb3IgdGhlIHJlcXVlc3RlZCBzdHJpbmdcbiAgICogQHBhcmFtICB7U3RyaW5nfSBrZXkgIHRoZSBrZXkgd2UgdXNlIHRvIGxvb2t1cCBvdXIgdHJhbnNsYXRpb25cbiAgICogQHBhcmFtICB7bXVsdGl9ICBhcmdzICBzdHJpbmcsIG51bWJlciBvciBvYmplY3QgY29udGFpbmluZyBvdXIgYXJndW1lbnRzXG4gICAqIEByZXR1cm4ge1N0cmluZ30gICAgICB1cGRhdGVkIHN0cmluZyB0cmFuc2xhdGlvblxuICAgKi9cbiAgZ2V0KGtleSwgYXJncykge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoa2V5KVxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIE5vIHJlcGxhY2VtZW50IG5lZWRlZCBpZiBubyBhcmdzIHByb3ZpZGVkXG4gICAgaWYgKCFhcmdzKSB7XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbnMgPSB2YWx1ZS5tYXRjaCgvXFx7W159XSs/XFx9L2cpXG5cbiAgICAvLyBObyB0b2tlbnMgdG8gcmVwbGFjZVxuICAgIGlmICghdG9rZW5zKSB7XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG5cbiAgICAvLyBPYmplY3QgYXJnczogcmVwbGFjZSBlYWNoIHRva2VuIHdpdGggY29ycmVzcG9uZGluZyBrZXlcbiAgICBpZiAodHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnKSB7XG4gICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2Vucykge1xuICAgICAgICBjb25zdCB0b2tlbktleSA9IHRva2VuLnNsaWNlKDEsIC0xKVxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UodGhpcy5tYWtlU2FmZSh0b2tlbiksIGFyZ3NbdG9rZW5LZXldID8/ICcnKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQcmltaXRpdmUgYXJnczogcmVwbGFjZSBhbGwgdG9rZW5zIHdpdGggc2FtZSB2YWx1ZVxuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlQWxsKC9cXHtbXn1dKz9cXH0vZywgYXJncylcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0aWMgbWV0aG9kOiBQcm9jZXNzIGEgbGFuZ3VhZ2UgZmlsZSBmcm9tIHJhdyB0ZXh0XG4gICAqIEBwYXJhbSAge1N0cmluZ30gcmVzcG9uc2VcbiAgICogQHJldHVybiB7T2JqZWN0fSBwcm9jZXNzZWQgbGFuZ3VhZ2VcbiAgICovXG4gIHN0YXRpYyBwcm9jZXNzRmlsZShyZXNwb25zZSkge1xuICAgIHJldHVybiBJMThOLmZyb21GaWxlKHJlc3BvbnNlLnJlcGxhY2VBbGwoJ1xcblxcbicsICdcXG4nKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0aWMgbWV0aG9kOiBUdXJuIHJhdyB0ZXh0IGZyb20gdGhlIGxhbmd1YWdlIGZpbGVzIGludG8gZmFuY3kgSlNPTlxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IHJhd1RleHRcbiAgICogQHJldHVybiB7T2JqZWN0fSBjb252ZXJ0ZWQgbGFuZ3VhZ2UgZmlsZVxuICAgKi9cbiAgc3RhdGljIGZyb21GaWxlKHJhd1RleHQpIHtcbiAgICBjb25zdCBsaW5lcyA9IHJhd1RleHQuc3BsaXQoJ1xcbicpXG4gICAgY29uc3QgbGFuZyA9IHt9XG5cbiAgICBmb3IgKGxldCBtYXRjaGVzLCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCByZWdleCA9IC9eKC4rPykgKj89ICo/KFteXFxuXSspL1xuICAgICAgbWF0Y2hlcyA9IHJlZ2V4LmV4ZWMobGluZXNbaV0pXG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICBsYW5nW21hdGNoZXNbMV1dID0gbWF0Y2hlc1syXS50cmltKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGFuZ1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2luZ2xldG9uIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAqIEByZXR1cm4ge0kxOE5CYXNlfSBzaW5nbGV0b24gaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBnZXRJbnN0YW5jZShvcHRpb25zKSB7XG4gICAgaWYgKCFpbnN0YW5jZSkge1xuICAgICAgaW5zdGFuY2UgPSBuZXcgSTE4TkJhc2Uob3B0aW9ucylcbiAgICB9XG4gICAgcmV0dXJuIGluc3RhbmNlXG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSAodXNlZnVsIGZvciB0ZXN0aW5nKVxuICAgKi9cbiAgc3RhdGljIHJlc2V0SW5zdGFuY2UoKSB7XG4gICAgaW5zdGFuY2UgPSBudWxsXG4gIH1cblxuICAvKipcbiAgICogTG9hZCBhIHJlbW90ZWx5IHN0b3JlZCBsYW5ndWFnZSBmaWxlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gbG9jYWxlXG4gICAqIEBwYXJhbSAge0Jvb2xlYW59IHVzZUNhY2hlXG4gICAqIEByZXR1cm4ge1Byb21pc2V9ICAgICAgIHJlc29sdmVzIHJlc3BvbnNlXG4gICAqL1xuICBhc3luYyBsb2FkTGFuZyhsb2NhbGUsIHVzZUNhY2hlID0gdHJ1ZSkge1xuICAgIC8vIFJldHVybiBjYWNoZWQgbGFuZ3VhZ2UgaWYgYWxyZWFkeSBsb2FkZWRcbiAgICBpZiAodGhpcy5sb2FkZWQuaW5jbHVkZXMobG9jYWxlKSAmJiB1c2VDYWNoZSkge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ3NbbG9jYWxlXVxuICAgIH1cbiAgICAvLyBGZXRjaCBhbmQgcHJvY2VzcyBsYW5ndWFnZSBmaWxlXG4gICAgY29uc3QgbGFuZ0ZpbGUgPSBgJHt0aGlzLmNvbmZpZy5sb2NhdGlvbn0ke2xvY2FsZX0ke3RoaXMuY29uZmlnLmV4dGVuc2lvbn1gXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbGFuZyA9IGF3YWl0IGZldGNoRGF0YShsYW5nRmlsZSlcbiAgICAgIGNvbnN0IHByb2Nlc3NlZEZpbGUgPSBJMThOQmFzZS5wcm9jZXNzRmlsZShsYW5nKVxuICAgICAgdGhpcy5hcHBseUxhbmd1YWdlKGxvY2FsZSwgcHJvY2Vzc2VkRmlsZSlcbiAgICAgIHJldHVybiB0aGlzLmxhbmdzW2xvY2FsZV1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgICAgcmV0dXJuIHRoaXMuYXBwbHlMYW5ndWFnZShsb2NhbGUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGFwcGxpZXMgb3ZlcnJpZGVzIGZyb20gY29uZmlnXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBsb2NhbGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGxhbmdcbiAgICogQHJldHVybiB7T2JqZWN0fSBvdmVycmlkZW4gbGFuZ3VhZ2VcbiAgICovXG4gIGFwcGx5TGFuZ3VhZ2UobG9jYWxlLCBsYW5nID0ge30pIHtcbiAgICBjb25zdCBvdmVycmlkZSA9IHRoaXMuY29uZmlnLm92ZXJyaWRlW2xvY2FsZV0gfHwge31cbiAgICBjb25zdCBleGlzdGluZ0xhbmcgPSB0aGlzLmxhbmdzW2xvY2FsZV0gfHwge31cbiAgICB0aGlzLmxhbmdzW2xvY2FsZV0gPSB7IC4uLmV4aXN0aW5nTGFuZywgLi4ubGFuZywgLi4ub3ZlcnJpZGUgfVxuICAgIHRoaXMubG9hZGVkLnB1c2gobG9jYWxlKVxuICAgIHJldHVybiB0aGlzLmxhbmdzW2xvY2FsZV1cbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm4gY3VycmVudGx5IGF2YWlsYWJsZSBsYW5ndWFnZXNcbiAgICogQHJldHVybiB7T2JqZWN0fSBhbGwgY29uZmlndXJlZCBsYW5ndWFnZXNcbiAgICovXG4gIGdldCBnZXRMYW5ncygpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcubGFuZ3NcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0IHRvIHNldCB0aGUgY3VycmVudCBsYW5ndWFnZSB0byB0aGUgbG9jYWwgcHJvdmlkZWRcbiAgICogQHBhcmFtIHtTdHJpbmd9ICAgbG9jYWxlXG4gICAqIEByZXR1cm4ge1Byb21pc2V9IGxhbmd1YWdlXG4gICAqL1xuICBhc3luYyBzZXRDdXJyZW50KGxvY2FsZSA9ICdlbi1VUycpIHtcbiAgICBpZiAoIXRoaXMubG9hZGVkLmluY2x1ZGVzKGxvY2FsZSkpIHtcbiAgICAgIGF3YWl0IHRoaXMubG9hZExhbmcobG9jYWxlKVxuICAgIH1cblxuICAgIHRoaXMubG9jYWxlID0gbG9jYWxlXG4gICAgdGhpcy5jdXJyZW50ID0gdGhpcy5sYW5nc1tsb2NhbGVdXG5cbiAgICByZXR1cm4gdGhpcy5jdXJyZW50XG4gIH1cbn1cblxuLyoqXG4gKiBQcm94eSB3cmFwcGVyIHRoYXQgZW5hYmxlcyBzaW5nbGV0b24gcGF0dGVybjpcbiAqIC0gSTE4TigpIHJldHVybnMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZVxuICogLSBuZXcgSTE4TigpIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2VcbiAqL1xuZXhwb3J0IGNvbnN0IEkxOE4gPSBuZXcgUHJveHkoSTE4TkJhc2UsIHtcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIEkxOE4oKSBpcyBpbnZva2VkIGFzIGEgZnVuY3Rpb24gKHdpdGhvdXQgbmV3KVxuICAgKiBSZXR1cm5zIHRoZSBzaW5nbGV0b24gaW5zdGFuY2VcbiAgICovXG4gIGFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncykge1xuICAgIHJldHVybiB0YXJnZXQuZ2V0SW5zdGFuY2UoLi4uYXJncylcbiAgfSxcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gbmV3IEkxOE4oKSBpcyBpbnZva2VkXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2VcbiAgICovXG4gIGNvbnN0cnVjdCh0YXJnZXQsIGFyZ3MpIHtcbiAgICByZXR1cm4gbmV3IHRhcmdldCguLi5hcmdzKVxuICB9LFxuXG4gIC8qKlxuICAgKiBQcm94eSBwcm9wZXJ0eSBhY2Nlc3MgdG8gdGhlIGJhc2UgY2xhc3NcbiAgICovXG4gIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICByZXR1cm4gdGFyZ2V0W3Byb3BdXG4gIH0sXG59KVxuXG5leHBvcnQgZGVmYXVsdCBJMThOLmdldEluc3RhbmNlKClcbiJdLCJtYXBwaW5ncyI6IkEsK0ZBQXVCQSxPQUFPTyxPQUFPLENBQUVDLE9BQVEsTUFBT0MsS0FBTSxLQ0U1RCxJQUFNQyxFQUFpQixDQUNyQkMsVUFBVyxRQUVYQyxTQUFVLGVBRVZDLE1BQU8sQ0FBQyxTQUNSQyxPQUFRLFFBQ1JDLFNBQVUsQ0FBQyxHQUlUQyxFQUFXLEtBa1JGQyxFQUFPLElBQUlDLE1BM1F4QixNQUFNQyxFQUtKLFdBQUFDLENBQVlDLEVBQVVYLEdBQ3BCWSxLQUFLVCxNQUFRYixPQUFPdUIsT0FBTyxNQUMzQkQsS0FBS0UsT0FBUyxHQUNkRixLQUFLRyxjQUFjSixFQUNyQixDQU1BLGFBQUFJLENBQWNKLEdBQ1osTUFBTVQsU0FBRUEsS0FBYWMsR0FBZ0IsSUFBS2hCLEtBQW1CVyxHQUV2RE0sRUFBaUJmLEVBQVNnQixTQUFTLEtBQU9oQixFQUFXLEdBQUdBLEtBQzlEVSxLQUFLTyxPQUFTLENBQUVqQixTQUFVZSxLQUFtQkQsR0FFN0MsTUFBTUksVUFBRUEsRUFBWSxDQUFDLEVBQUFmLFNBQUdBLEVBQVcs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
|
package/dist/i18n.cjs.min.js.gz
CHANGED
|
Binary file
|
package/dist/i18n.es.min.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
2
|
/**
|
|
3
3
|
@draggable/i18n - https://github.com/Draggable/i18n
|
|
4
|
-
Version: 1.1.
|
|
4
|
+
Version: 1.1.1
|
|
5
5
|
Author: Draggable https://draggable.io
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
Object.freeze({method:"GET",body:""});var t={extension:".lang",location:"assets/lang/",langs:["en-US"],locale:"en-US",override:{}},e=null,n=new Proxy(class s{constructor(e=t){this.langs=Object.create(null),this.loaded=[],this.processConfig(e)}processConfig(e){const{location:n,...s}={...t,...e},a=n.endsWith("/")?n:`${n}/`;this.config={location:a,...s};const{preloaded:i={},override:r={}}=this.config,l
|
|
9
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5lcy5taW4uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2ZldGNoLmpzIiwiLi4vc3JjL21pMThuLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGRlZmF1bHRPcHRpb25zID0gT2JqZWN0LmZyZWV6ZSh7IG1ldGhvZDogJ0dFVCcsIGJvZHk6ICcnIH0pXG4vKipcbiAqIEZldGNoZXMgYSByZXNvdXJjZSBmcm9tIHRoZSBuZXR3b3JrLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSBUaGUgVVJMIHRvIGZldGNoLlxuICogQHBhcmFtIHtPYmplY3R9IFtmZXRjaE9wdGlvbnM9e31dIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmZXRjaCByZXF1ZXN0LlxuICogQHBhcmFtIHtPYmplY3R9IFtmZXRjaE9wdGlvbnMuaGVhZGVyc10gLSBIZWFkZXJzIHRvIGluY2x1ZGUgaW4gdGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2ZldGNoT3B0aW9ucy5tZXRob2RdIC0gVGhlIEhUVFAgbWV0aG9kIHRvIHVzZSAoZS5nLiwgJ0dFVCcsICdQT1NUJykuXG4gKiBAcGFyYW0ge3N0cmluZ3xCdWZmZXJ9IFtmZXRjaE9wdGlvbnMuYm9keV0gLSBUaGUgYm9keSBvZiB0aGUgcmVxdWVzdC5cbiAqIEByZXR1cm4ge1Byb21pc2U8T2JqZWN0Pn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IHJldHVybi5vayAtIEluZGljYXRlcyBpZiB0aGUgcmVzcG9uc2Ugc3RhdHVzIGlzIGluIHRoZSByYW5nZSAyMDAtMjk5LlxuICogQHJldHVybiB7bnVtYmVyfSByZXR1cm4uc3RhdHVzIC0gVGhlIEhUVFAgc3RhdHVzIGNvZGUgb2YgdGhlIHJlc3BvbnNlLlxuICogQHJldHVybiB7c3RyaW5nfSByZXR1cm4uc3RhdHVzVGV4dCAtIFRoZSBIVFRQIHN0YXR1cyBtZXNzYWdlIG9mIHRoZSByZXNwb25zZS5cbiAqIEByZXR1cm4ge01hcDxzdHJpbmcsIHN0cmluZz59IHJldHVybi5oZWFkZXJzIC0gVGhlIGhlYWRlcnMgb2YgdGhlIHJlc3BvbnNlLlxuICogQHJldHVybiB7QnVmZmVyfSByZXR1cm4uYm9keSAtIFRoZSBib2R5IG9mIHRoZSByZXNwb25zZSBhcyBhIEJ1ZmZlci5cbiAqIEByZXR1cm4ge2Z1bmN0aW9uKCk6IFByb21pc2U8QnVmZmVyPn0gcmV0dXJuLmFycmF5QnVmZmVyIC0gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBwcm9taXNlIHJlc29sdmluZyB0byB0aGUgYm9keSBhcyBhbiBBcnJheUJ1ZmZlci5cbiAqIEByZXR1cm4ge2Z1bmN0aW9uKCk6IFByb21pc2U8T2JqZWN0Pn0gcmV0dXJuLmpzb24gLSBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBib2R5IHBhcnNlZCBhcyBKU09OLlxuICovXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaERhdGEodXJsKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBIVFRQIGVycm9yISBzdGF0dXM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApXG4gICAgfVxuICAgIGNvbnN0IGhhbmRsZXIgPSB1cmwuZW5kc1dpdGgoJy5sYW5nJykgPyAndGV4dCcgOiAnanNvbidcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2VbaGFuZGxlcl0oKVxuICAgIHJldHVybiBkYXRhXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignVGhlcmUgaGFzIGJlZW4gYSBwcm9ibGVtIHdpdGggeW91ciBmZXRjaCBvcGVyYXRpb246JywgZXJyb3IpXG4gICAgdGhyb3cgZXJyb3JcbiAgfVxufVxuIiwiaW1wb3J0IHsgZmV0Y2hEYXRhIH0gZnJvbSAnLi9mZXRjaC5qcydcblxuY29uc3QgREVGQVVMVF9DT05GSUcgPSB7XG4gIGV4dGVuc2lvbjogJy5sYW5nJyxcbiAgLy8gbG9jYWwgb3IgcmVtb3RlIGRpcmVjdG9yeSBjb250YWluaW5nIGxhbmd1YWdlIGZpbGVzXG4gIGxvY2F0aW9uOiAnYXNzZXRzL2xhbmcvJyxcbiAgLy8gbGlzdCBvZiBhdmFpbGFibGUgbG9jYWxlcywgaGFuZHkgZm9yIHBvcHVsYXRpbmcgc2VsZWN0b3IuXG4gIGxhbmdzOiBbJ2VuLVVTJ10sXG4gIGxvY2FsZTogJ2VuLVVTJywgLy8gaW5pdCB3aXRoIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2VcbiAgb3ZlcnJpZGU6IHt9LFxufVxuXG4vLyBTaW5nbGV0b24gaW5zdGFuY2UgaG9sZGVyXG5sZXQgaW5zdGFuY2UgPSBudWxsXG5cbi8qKlxuICogTWFpbiBpMThuIGNsYXNzXG4gKiBAY2xhc3MgSTE4TkJhc2VcbiAqIEBjbGFzc2Rlc2MgbWV0aG9kcyBhbmQgZGF0YSBzdG9yZSBmb3IgaTE4blxuICovXG5jbGFzcyBJMThOQmFzZSB7XG4gIC8qKlxuICAgKiBQcm9jZXNzIG9wdGlvbnMgYW5kIHN0YXJ0IHRoZSBtb2R1bGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSBERUZBVUxUX0NPTkZJRykge1xuICAgIHRoaXMubGFuZ3MgPSBPYmplY3QuY3JlYXRlKG51bGwpXG4gICAgdGhpcy5sb2FkZWQgPSBbXVxuICAgIHRoaXMucHJvY2Vzc0NvbmZpZyhvcHRpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIHBhcnNlIGFuZCBmb3JtYXQgY29uZmlnXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAqL1xuICBwcm9jZXNzQ29uZmlnKG9wdGlvbnMpIHtcbiAgICBjb25zdCB7IGxvY2F0aW9uLCAuLi5yZXN0T3B0aW9ucyB9ID0geyAuLi5ERUZBVUxUX0NPTkZJRywgLi4ub3B0aW9ucyB9XG4gICAgLy8gRW5zdXJlIGxvY2F0aW9uIGVuZHMgd2l0aCBhIHNsYXNoXG4gICAgY29uc3QgcGFyc2VkTG9jYXRpb24gPSBsb2NhdGlvbi5lbmRzV2l0aCgnLycpID8gbG9jYXRpb24gOiBgJHtsb2NhdGlvbn0vYFxuICAgIHRoaXMuY29uZmlnID0geyBsb2NhdGlvbjogcGFyc2VkTG9jYXRpb24sIC4uLnJlc3RPcHRpb25zIH1cblxuICAgIGNvbnN0IHsgcHJlbG9hZGVkID0ge30sIG92ZXJyaWRlID0ge30gfSA9IHRoaXMuY29uZmlnXG5cbiAgICAvLyBNZXJnZSBsb2NhbGVzIGZyb20gYm90aCBwcmVsb2FkZWQgYW5kIG92ZXJyaWRlXG4gICAgLy8gVGhpcyBzdXBwb3J0cyBsZWdhY3kgdXNhZ2Ugd2hlcmUgb3ZlcnJpZGUgZGVmaW5lZCBlbnRpcmUgbGFuZ3VhZ2VzXG4gICAgY29uc3QgYWxsTG9jYWxlcyA9IG5ldyBTZXQoWy4uLk9iamVjdC5rZXlzKHByZWxvYWRlZCksIC4uLk9iamVjdC5rZXlzKG92ZXJyaWRlKV0pXG5cbiAgICAvLyBBcHBseSBsYW5ndWFnZXMgZnJvbSBib3RoIHByZWxvYWRlZCBhbmQgb3ZlcnJpZGVcbiAgICAvLyBhcHBseUxhbmd1YWdlIHdpbGwgbWVyZ2UgdGhlbSBwcm9wZXJseSAoZXhpc3RpbmcgKyBwcmVsb2FkZWQgKyBvdmVycmlkZSlcbiAgICBmb3IgKGNvbnN0IGxvY2FsZSBvZiBhbGxMb2NhbGVzKSB7XG4gICAgICBjb25zdCBwcmVsb2FkZWRMYW5nID0gcHJlbG9hZGVkW2xvY2FsZV0gfHwge31cbiAgICAgIGNvbnN0IG92ZXJyaWRlTGFuZyA9IG92ZXJyaWRlW2xvY2FsZV0gfHwge31cbiAgICAgIC8vIE1lcmdlIHByZWxvYWRlZCBhbmQgb3ZlcnJpZGUgZm9yIHRoaXMgbG9jYWxlXG4gICAgICBjb25zdCBtZXJnZWRMYW5nID0geyAuLi5wcmVsb2FkZWRMYW5nLCAuLi5vdmVycmlkZUxhbmcgfVxuICAgICAgdGhpcy5hcHBseUxhbmd1YWdlKGxvY2FsZSwgbWVyZ2VkTGFuZylcbiAgICB9XG5cbiAgICB0aGlzLmxvY2FsZSA9IHRoaXMuY29uZmlnLmxvY2FsZSB8fCB0aGlzLmNvbmZpZy5sYW5nc1swXVxuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgbGFuZ3VhZ2UgYW5kIHNldCBkZWZhdWx0XG4gICAqIEBwYXJhbSAge09iamVjdH0gb3B0aW9uc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlfSAgICAgICAgcmVzb2x2ZXMgbGFuZ3VhZ2VcbiAgICovXG4gIGluaXQob3B0aW9ucykge1xuICAgIHRoaXMucHJvY2Vzc0NvbmZpZyh7IC4uLnRoaXMuY29uZmlnLCAuLi5vcHRpb25zIH0pXG4gICAgcmV0dXJuIHRoaXMuc2V0Q3VycmVudCh0aGlzLmxvY2FsZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbGFuZ3VhZ2UgdG8gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGxhbmd1YWdlc1xuICAgKiBAcGFyYW0ge1N0cmluZ30gbG9jYWxlXG4gICAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gbGFuZ1xuICAgKi9cbiAgYWRkTGFuZ3VhZ2UobG9jYWxlLCBsYW5nID0ge30pIHtcbiAgICBsYW5nID0gdHlwZW9mIGxhbmcgPT09ICdzdHJpbmcnID8gSTE4TkJhc2UucHJvY2Vzc0ZpbGUobGFuZykgOiBsYW5nXG4gICAgdGhpcy5hcHBseUxhbmd1YWdlKGxvY2FsZSwgbGFuZylcbiAgICB0aGlzLmxvYWRlZC5wdXNoKGxvY2FsZSlcbiAgICB0aGlzLmNvbmZpZy5sYW5ncy5wdXNoKGxvY2FsZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgYSBzdHJpbmcgZnJvbSBhIGxvYWRlZCBsYW5ndWFnZSBmaWxlXG4gICAqIEBwYXJhbSAge1N0cmluZ30ga2V5ICAtIHRoZSBrZXkgZm9yIHRoZSBzdHJpbmcgd2UgYXJlIHRyeWluZyB0byByZXRyaWV2ZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGxvY2FsZSAtIGxvY2FsZSB0byBjaGVjayBmb3IgdmFsdWVcbiAgICogQHJldHVybiB7U3RyaW5nfSBsYW5ndWFnZSBzdHJpbmcgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBnZXRWYWx1ZShrZXksIGxvY2FsZSA9IHRoaXMubG9jYWxlKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmxhbmdzW2xvY2FsZV0/LltrZXldXG4gICAgcmV0dXJuIHZhbHVlIHx8IHRoaXMuZ2V0RmFsbGJhY2tWYWx1ZShrZXkpXG4gIH1cblxuICAvKipcbiAgICogRmluZCBhIGxhbmd1YWdlIHRoYXQgaGFzIGRlc2lyZWQga2V5XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBrZXkgdmFsdWUga2V5XG4gICAqIEByZXR1cm4ge1N0cmluZ30gZm91bmQgdmFsdWUgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBnZXRGYWxsYmFja1ZhbHVlKGtleSkge1xuICAgIGNvbnN0IGZhbGxiYWNrTGFuZyA9IE9iamVjdC52YWx1ZXModGhpcy5sYW5ncykuZmluZChsYW5nID0+IGxhbmdba2V5XSlcbiAgICByZXR1cm4gZmFsbGJhY2tMYW5nPy5ba2V5XVxuICB9XG5cbiAgLyoqXG4gICAqIEVzY2FwZSB2YXJpYWJsZSBzeW50YXhcbiAgICogQHBhcmFtICB7U3RyaW5nfSBzdHJcbiAgICogQHJldHVybiB7U3RyaW5nfSAgICAgZXNjYXBlZCBzdHJcbiAgICovXG4gIG1ha2VTYWZlKHN0cikge1xuICAgIGNvbnN0IG1hcE9iaiA9IHtcbiAgICAgICd7JzogU3RyaW5nLnJhd2BcXHtgLFxuICAgICAgJ30nOiBTdHJpbmcucmF3YFxcfWAsXG4gICAgICAnfCc6IFN0cmluZy5yYXdgXFx8YCxcbiAgICB9XG5cbiAgICBjb25zdCBlc2NhcGVkU3RyID0gc3RyLnJlcGxhY2VBbGwoL1t7fXxdL2csIG1hdGNoZWQgPT4gbWFwT2JqW21hdGNoZWRdKVxuXG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoZXNjYXBlZFN0ciwgJ2cnKVxuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBvcmFyaWx5IHB1dCBhIHN0cmluZyBpbnRvIHRoZSBjdXJyZW50bHkgbG9hZGVkIGxhbmd1YWdlXG4gICAqIEBwYXJhbSAge1N0cmluZ30ga2V5XG4gICAqIEBwYXJhbSAge1N0cmluZ30gc3RyaW5nXG4gICAqIEByZXR1cm4ge1N0cmluZ30gc3RyaW5nIGluIGN1cnJlbnQgbGFuZ3VhZ2VcbiAgICovXG4gIHB1dChrZXksIHN0cmluZykge1xuICAgIHRoaXMuY3VycmVudFtrZXldID0gc3RyaW5nXG5cbiAgICByZXR1cm4gc3RyaW5nXG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgYXJndW1lbnRzIGZvciB0aGUgcmVxdWVzdGVkIHN0cmluZ1xuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGtleSAgdGhlIGtleSB3ZSB1c2UgdG8gbG9va3VwIG91ciB0cmFuc2xhdGlvblxuICAgKiBAcGFyYW0gIHttdWx0aX0gIGFyZ3MgIHN0cmluZywgbnVtYmVyIG9yIG9iamVjdCBjb250YWluaW5nIG91ciBhcmd1bWVudHNcbiAgICogQHJldHVybiB7U3RyaW5nfSAgICAgIHVwZGF0ZWQgc3RyaW5nIHRyYW5zbGF0aW9uXG4gICAqL1xuICBnZXQoa2V5LCBhcmdzKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZShrZXkpXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gTm8gcmVwbGFjZW1lbnQgbmVlZGVkIGlmIG5vIGFyZ3MgcHJvdmlkZWRcbiAgICBpZiAoIWFyZ3MpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuICAgIGNvbnN0IHRva2VucyA9IHZhbHVlLm1hdGNoKC9cXHtbXn1dKz9cXH0vZylcblxuICAgIC8vIE5vIHRva2VucyB0byByZXBsYWNlXG4gICAgaWYgKCF0b2tlbnMpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuICAgIC8vIE9iamVjdCBhcmdzOiByZXBsYWNlIGVhY2ggdG9rZW4gd2l0aCBjb3JyZXNwb25kaW5nIGtleVxuICAgIGlmICh0eXBlb2YgYXJncyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zKSB7XG4gICAgICAgIGNvbnN0IHRva2VuS2V5ID0gdG9rZW4uc2xpY2UoMSwgLTEpXG4gICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSh0aGlzLm1ha2VTYWZlKHRva2VuKSwgYXJnc1t0b2tlbktleV0gPz8gJycpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFByaW1pdGl2ZSBhcmdzOiByZXBsYWNlIGFsbCB0b2tlbnMgd2l0aCBzYW1lIHZhbHVlXG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2VBbGwoL1xce1tefV0rP1xcfS9nLCBhcmdzKVxuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBtZXRob2Q6IFByb2Nlc3MgYSBsYW5ndWFnZSBmaWxlIGZyb20gcmF3IHRleHRcbiAgICogQHBhcmFtICB7U3RyaW5nfSByZXNwb25zZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IHByb2Nlc3NlZCBsYW5ndWFnZVxuICAgKi9cbiAgc3RhdGljIHByb2Nlc3NGaWxlKHJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIEkxOE4uZnJvbUZpbGUocmVzcG9uc2UucmVwbGFjZUFsbCgnXFxuXFxuJywgJ1xcbicpKVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBtZXRob2Q6IFR1cm4gcmF3IHRleHQgZnJvbSB0aGUgbGFuZ3VhZ2UgZmlsZXMgaW50byBmYW5jeSBKU09OXG4gICAqIEBwYXJhbSAge1N0cmluZ30gcmF3VGV4dFxuICAgKiBAcmV0dXJuIHtPYmplY3R9IGNvbnZlcnRlZCBsYW5ndWFnZSBmaWxlXG4gICAqL1xuICBzdGF0aWMgZnJvbUZpbGUocmF3VGV4dCkge1xuICAgIGNvbnN0IGxpbmVzID0gcmF3VGV4dC5zcGxpdCgnXFxuJylcbiAgICBjb25zdCBsYW5nID0ge31cblxuICAgIGZvciAobGV0IG1hdGNoZXMsIGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gL14oLis/KSAqPz0gKj8oW15cXG5dKykvXG4gICAgICBtYXRjaGVzID0gcmVnZXguZXhlYyhsaW5lc1tpXSlcbiAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgIGxhbmdbbWF0Y2hlc1sxXV0gPSBtYXRjaGVzWzJdLnRyaW0oKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsYW5nXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzaW5nbGV0b24gaW5zdGFuY2VcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICogQHJldHVybiB7STE4TkJhc2V9IHNpbmdsZXRvbiBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIGdldEluc3RhbmNlKG9wdGlvbnMpIHtcbiAgICBpZiAoIWluc3RhbmNlKSB7XG4gICAgICBpbnN0YW5jZSA9IG5ldyBJMThOQmFzZShvcHRpb25zKVxuICAgIH1cbiAgICByZXR1cm4gaW5zdGFuY2VcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgc2luZ2xldG9uIGluc3RhbmNlICh1c2VmdWwgZm9yIHRlc3RpbmcpXG4gICAqL1xuICBzdGF0aWMgcmVzZXRJbnN0YW5jZSgpIHtcbiAgICBpbnN0YW5jZSA9IG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGEgcmVtb3RlbHkgc3RvcmVkIGxhbmd1YWdlIGZpbGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBsb2NhbGVcbiAgICogQHBhcmFtICB7Qm9vbGVhbn0gdXNlQ2FjaGVcbiAgICogQHJldHVybiB7UHJvbWlzZX0gICAgICAgcmVzb2x2ZXMgcmVzcG9uc2VcbiAgICovXG4gIGFzeW5jIGxvYWRMYW5nKGxvY2FsZSwgdXNlQ2FjaGUgPSB0cnVlKSB7XG4gICAgLy8gUmV0dXJuIGNhY2hlZCBsYW5ndWFnZSBpZiBhbHJlYWR5IGxvYWRlZFxuICAgIGlmICh0aGlzLmxvYWRlZC5pbmNsdWRlcyhsb2NhbGUpICYmIHVzZUNhY2hlKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5nc1tsb2NhbGVdXG4gICAgfVxuICAgIC8vIEZldGNoIGFuZCBwcm9jZXNzIGxhbmd1YWdlIGZpbGVcbiAgICBjb25zdCBsYW5nRmlsZSA9IGAke3RoaXMuY29uZmlnLmxvY2F0aW9ufSR7bG9jYWxlfSR7dGhpcy5jb25maWcuZXh0ZW5zaW9ufWBcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBsYW5nID0gYXdhaXQgZmV0Y2hEYXRhKGxhbmdGaWxlKVxuICAgICAgY29uc3QgcHJvY2Vzc2VkRmlsZSA9IEkxOE5CYXNlLnByb2Nlc3NGaWxlKGxhbmcpXG4gICAgICB0aGlzLmFwcGx5TGFuZ3VhZ2UobG9jYWxlLCBwcm9jZXNzZWRGaWxlKVxuICAgICAgcmV0dXJuIHRoaXMubGFuZ3NbbG9jYWxlXVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpXG4gICAgICByZXR1cm4gdGhpcy5hcHBseUxhbmd1YWdlKGxvY2FsZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogYXBwbGllcyBvdmVycmlkZXMgZnJvbSBjb25maWdcbiAgICogQHBhcmFtIHtTdHJpbmd9IGxvY2FsZVxuICAgKiBAcGFyYW0ge09iamVjdH0gbGFuZ1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IG92ZXJyaWRlbiBsYW5ndWFnZVxuICAgKi9cbiAgYXBwbHlMYW5ndWFnZShsb2NhbGUsIGxhbmcgPSB7fSkge1xuICAgIGNvbnN0IG92ZXJyaWRlID0gdGhpcy5jb25maWcub3ZlcnJpZGVbbG9jYWxlXSB8fCB7fVxuICAgIGNvbnN0IGV4aXN0aW5nTGFuZyA9IHRoaXMubGFuZ3NbbG9jYWxlXSB8fCB7fVxuICAgIHRoaXMubGFuZ3NbbG9jYWxlXSA9IHsgLi4uZXhpc3RpbmdMYW5nLCAuLi5sYW5nLCAuLi5vdmVycmlkZSB9XG4gICAgdGhpcy5sb2FkZWQucHVzaChsb2NhbGUpXG4gICAgcmV0dXJuIHRoaXMubGFuZ3NbbG9jYWxlXVxuICB9XG5cbiAgLyoqXG4gICAqIHJldHVybiBjdXJyZW50bHkgYXZhaWxhYmxlIGxhbmd1YWdlc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IGFsbCBjb25maWd1cmVkIGxhbmd1YWdlc1xuICAgKi9cbiAgZ2V0IGdldExhbmdzKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5sYW5nc1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHQgdG8gc2V0IHRoZSBjdXJyZW50IGxhbmd1YWdlIHRvIHRoZSBsb2NhbCBwcm92aWRlZFxuICAgKiBAcGFyYW0ge1N0cmluZ30gICBsb2NhbGVcbiAgICogQHJldHVybiB7UHJvbWlzZX0gbGFuZ3VhZ2VcbiAgICovXG4gIGFzeW5jIHNldEN1cnJlbnQobG9jYWxlID0gJ2VuLVVTJykge1xuICAgIGlmICghdGhpcy5sb2FkZWQuaW5jbHVkZXMobG9jYWxlKSkge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkTGFuZyhsb2NhbGUpXG4gICAgfVxuXG4gICAgdGhpcy5sb2NhbGUgPSBsb2NhbGVcbiAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLmxhbmdzW2xvY2FsZV1cblxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRcbiAgfVxufVxuXG4vKipcbiAqIFByb3h5IHdyYXBwZXIgdGhhdCBlbmFibGVzIHNpbmdsZXRvbiBwYXR0ZXJuOlxuICogLSBJMThOKCkgcmV0dXJucyB0aGUgc2luZ2xldG9uIGluc3RhbmNlXG4gKiAtIG5ldyBJMThOKCkgY3JlYXRlcyBhIG5ldyBpbnN0YW5jZVxuICovXG5leHBvcnQgY29uc3QgSTE4TiA9IG5ldyBQcm94eShJMThOQmFzZSwge1xuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gSTE4TigpIGlzIGludm9rZWQgYXMgYSBmdW5jdGlvbiAod2l0aG91dCBuZXcpXG4gICAqIFJldHVybnMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZVxuICAgKi9cbiAgYXBwbHkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7XG4gICAgcmV0dXJuIHRhcmdldC5nZXRJbnN0YW5jZSguLi5hcmdzKVxuICB9LFxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBuZXcgSTE4TigpIGlzIGludm9rZWRcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZVxuICAgKi9cbiAgY29uc3RydWN0KHRhcmdldCwgYXJncykge1xuICAgIHJldHVybiBuZXcgdGFyZ2V0KC4uLmFyZ3MpXG4gIH0sXG5cbiAgLyoqXG4gICAqIFByb3h5IHByb3BlcnR5IGFjY2VzcyB0byB0aGUgYmFzZSBjbGFzc1xuICAgKi9cbiAgZ2V0KHRhcmdldCwgcHJvcCkge1xuICAgIHJldHVybiB0YXJnZXRbcHJvcF1cbiAgfSxcbn0pXG5cbmV4cG9ydCBkZWZhdWx0IEkxOE4uZ2V0SW5zdGFuY2UoKVxuIl0sIm1hcHBpbmdzIjoiQUFBdUIsT0FBTyxPQUFPLENBQUUsT0FBUSxNQUFPLEtBQU0sS0NFNUQsSUFBTSxFQUFpQixDQUNyQixVQUFXLFFBRVgsU0FBVSxlQUVWLE1BQU8sQ0FBQyxTQUNSLE9BQVEsUUFDUixTQUFVLENBQUEsR0FJUixFQUFXLEtBa1JGLEVBQU8sSUFBSSxNQTNReEIsTUFBTSxFQUtKLFdBQUEsQ0FBWSxFQUFVLEdBQ3BCLEtBQUssTUFBUSxPQUFPLE9BQU8sTUFDM0IsS0FBSyxPQUFTLEdBQ2QsS0FBSyxjQUFjLEdBT3JCLGFBQUEsQ0FBYyxHQUNaLE1BQU0sU0FBRSxLQUFhLEdBQWdCLElBQUssS0FBbUIsR0FFdkQsRUFBaUIsRUFBUyxTQUFTLEtBQU8sRUFBVyxHQUFHLEtBQzlELEtBQUssT0FBUyxDQUFFLFNBQVUsS0FBbUIsR0FFN0MsTUFBTSxVQUFFLEVBQVksQ0FBQSxFQUFFLFNBQUUsRUFBVyxDQUFBLEdBQU8sS0FBSyxPQUl6QyxFQUFhLElBQUksSUFBSSxJQUFJLE9BQU8sS0FBSyxNQUFlLE9BQU8sS0FBSyxLQUl0RSxJQUFLLE1BQU0sS0FBVSxFQUFZLENBQy9CLE1BR00sRUFBYSxJQUhHLEVBQVUsSUFBVyxDQUFBLEtBQ3RCLEVBQVMsSUFBVyxDQUFBLEdBR3pDLEtBQUssY0FBYyxFQUFRLEdBRzdCLEtBQUssT0FBUyxLQUFL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
|
|
8
|
+
Object.freeze({method:"GET",body:""});var t={extension:".lang",location:"assets/lang/",langs:["en-US"],locale:"en-US",override:{}},e=null,n=new Proxy(class s{constructor(e=t){this.langs=Object.create(null),this.loaded=[],this.processConfig(e)}processConfig(e){const{location:n,...s}={...t,...e},a=n.endsWith("/")?n:`${n}/`;this.config={location:a,...s};const{preloaded:i={},override:r={}}=this.config,l=/* @__PURE__ */new Set([...Object.keys(i),...Object.keys(r)]);for(const t of l){const e={...i[t]||{},...r[t]||{}};this.applyLanguage(t,e)}this.locale=this.config.locale||this.config.langs[0]}init(t){return this.processConfig({...this.config,...t}),this.setCurrent(this.locale)}addLanguage(t,e={}){e="string"==typeof e?s.processFile(e):e,this.applyLanguage(t,e),this.loaded.push(t),this.config.langs.push(t)}getValue(t,e=this.locale){return this.langs[e]?.[t]||this.getFallbackValue(t)}getFallbackValue(t){return Object.values(this.langs).find(e=>e[t])?.[t]}makeSafe(t){const e={"{":String.raw`\{`,"}":String.raw`\}`,"|":String.raw`\|`},n=t.replaceAll(/[{}|]/g,t=>e[t]);return new RegExp(n,"g")}put(t,e){return this.current[t]=e,e}get(t,e){let n=this.getValue(t);if(!n)return;if(!e)return n;const s=n.match(/\{[^}]+?\}/g);if(!s)return n;if("object"==typeof e)for(const a of s){const t=a.slice(1,-1);n=n.replace(this.makeSafe(a),e[t]??"")}else n=n.replaceAll(/\{[^}]+?\}/g,e);return n}static processFile(t){return n.fromFile(t.replaceAll("\n\n","\n"))}static fromFile(t){const e=t.split("\n"),n={};for(let s,a=0;a<e.length;a++)s=/^(.+?) *?= *?([^\n]+)/.exec(e[a]),s&&(n[s[1]]=s[2].trim());return n}static getInstance(t){return e||(e=new s(t)),e}static resetInstance(){e=null}async loadLang(t,e=!0){if(this.loaded.includes(t)&&e)return this.langs[t];const n=`${this.config.location}${t}${this.config.extension}`;try{const e=await async function(t){try{const e=await fetch(t);if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return await e[t.endsWith(".lang")?"text":"json"]()}catch(e){throw e}}(n),a=s.processFile(e);return this.applyLanguage(t,a),this.langs[t]}catch(a){return this.applyLanguage(t)}}applyLanguage(t,e={}){const n=this.config.override[t]||{},s=this.langs[t]||{};return this.langs[t]={...s,...e,...n},this.loaded.push(t),this.langs[t]}get getLangs(){return this.config.langs}async setCurrent(t="en-US"){return this.loaded.includes(t)||await this.loadLang(t),this.locale=t,this.current=this.langs[t],this.current}},{apply:(t,e,n)=>t.getInstance(...n),construct:(t,e)=>new t(...e),get:(t,e)=>t[e]}),s=n.getInstance();export{n as I18N,s as default};
|
|
9
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5lcy5taW4uanMiLCJuYW1lcyI6WyJPYmplY3QiLCJmcmVlemUiLCJtZXRob2QiLCJib2R5IiwiREVGQVVMVF9DT05GSUciLCJleHRlbnNpb24iLCJsb2NhdGlvbiIsImxhbmdzIiwibG9jYWxlIiwib3ZlcnJpZGUiLCJpbnN0YW5jZSIsIkkxOE4iLCJQcm94eSIsIkkxOE5CYXNlIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwidGhpcyIsImNyZWF0ZSIsImxvYWRlZCIsInByb2Nlc3NDb25maWciLCJyZXN0T3B0aW9ucyIsInBhcnNlZExvY2F0aW9uIiwiZW5kc1dpdGgiLCJjb25maWciLCJwcmVsb2FkZWQiLCJhbGxMb2NhbGVzIiwiU2V0Iiwia2V5cyIsIm1lcmdlZExhbmciLCJhcHBseUxhbmd1YWdlIiwiaW5pdCIsInNldEN1cnJlbnQiLCJhZGRMYW5ndWFnZSIsImxhbmciLCJwcm9jZXNzRmlsZSIsInB1c2giLCJnZXRWYWx1ZSIsImtleSIsImdldEZhbGxiYWNrVmFsdWUiLCJ2YWx1ZXMiLCJmaW5kIiwibWFrZVNhZmUiLCJzdHIiLCJtYXBPYmoiLCJTdHJpbmciLCJyYXciLCJlc2NhcGVkU3RyIiwicmVwbGFjZUFsbCIsIm1hdGNoZWQiLCJSZWdFeHAiLCJwdXQiLCJzdHJpbmciLCJjdXJyZW50IiwiZ2V0IiwiYXJncyIsInZhbHVlIiwidG9rZW5zIiwibWF0Y2giLCJ0b2tlbiIsInRva2VuS2V5Iiwic2xpY2UiLCJyZXBsYWNlIiwicmVzcG9uc2UiLCJmcm9tRmlsZSIsInJhd1RleHQiLCJsaW5lcyIsInNwbGl0IiwibWF0Y2hlcyIsImkiLCJsZW5ndGgiLCJleGVjIiwidHJpbSIsImdldEluc3RhbmNlIiwicmVzZXRJbnN0YW5jZSIsImxvYWRMYW5nIiwidXNlQ2FjaGUiLCJpbmNsdWRlcyIsImxhbmdGaWxlIiwiYXN5bmMiLCJ1cmwiLCJmZXRjaCIsIm9rIiwiRXJyb3IiLCJzdGF0dXMiLCJlcnJvciIsImZldGNoRGF0YSIsInByb2Nlc3NlZEZpbGUiLCJlcnIiLCJleGlzdGluZ0xhbmciLCJnZXRMYW5ncyIsImFwcGx5IiwidGFyZ2V0IiwidGhpc0FyZyIsImNvbnN0cnVjdCIsInByb3AiLCJtaTE4bl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2ZldGNoLmpzIiwiLi4vc3JjL21pMThuLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGRlZmF1bHRPcHRpb25zID0gT2JqZWN0LmZyZWV6ZSh7IG1ldGhvZDogJ0dFVCcsIGJvZHk6ICcnIH0pXG4vKipcbiAqIEZldGNoZXMgYSByZXNvdXJjZSBmcm9tIHRoZSBuZXR3b3JrLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSBUaGUgVVJMIHRvIGZldGNoLlxuICogQHBhcmFtIHtPYmplY3R9IFtmZXRjaE9wdGlvbnM9e31dIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmZXRjaCByZXF1ZXN0LlxuICogQHBhcmFtIHtPYmplY3R9IFtmZXRjaE9wdGlvbnMuaGVhZGVyc10gLSBIZWFkZXJzIHRvIGluY2x1ZGUgaW4gdGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2ZldGNoT3B0aW9ucy5tZXRob2RdIC0gVGhlIEhUVFAgbWV0aG9kIHRvIHVzZSAoZS5nLiwgJ0dFVCcsICdQT1NUJykuXG4gKiBAcGFyYW0ge3N0cmluZ3xCdWZmZXJ9IFtmZXRjaE9wdGlvbnMuYm9keV0gLSBUaGUgYm9keSBvZiB0aGUgcmVxdWVzdC5cbiAqIEByZXR1cm4ge1Byb21pc2U8T2JqZWN0Pn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IHJldHVybi5vayAtIEluZGljYXRlcyBpZiB0aGUgcmVzcG9uc2Ugc3RhdHVzIGlzIGluIHRoZSByYW5nZSAyMDAtMjk5LlxuICogQHJldHVybiB7bnVtYmVyfSByZXR1cm4uc3RhdHVzIC0gVGhlIEhUVFAgc3RhdHVzIGNvZGUgb2YgdGhlIHJlc3BvbnNlLlxuICogQHJldHVybiB7c3RyaW5nfSByZXR1cm4uc3RhdHVzVGV4dCAtIFRoZSBIVFRQIHN0YXR1cyBtZXNzYWdlIG9mIHRoZSByZXNwb25zZS5cbiAqIEByZXR1cm4ge01hcDxzdHJpbmcsIHN0cmluZz59IHJldHVybi5oZWFkZXJzIC0gVGhlIGhlYWRlcnMgb2YgdGhlIHJlc3BvbnNlLlxuICogQHJldHVybiB7QnVmZmVyfSByZXR1cm4uYm9keSAtIFRoZSBib2R5IG9mIHRoZSByZXNwb25zZSBhcyBhIEJ1ZmZlci5cbiAqIEByZXR1cm4ge2Z1bmN0aW9uKCk6IFByb21pc2U8QnVmZmVyPn0gcmV0dXJuLmFycmF5QnVmZmVyIC0gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBwcm9taXNlIHJlc29sdmluZyB0byB0aGUgYm9keSBhcyBhbiBBcnJheUJ1ZmZlci5cbiAqIEByZXR1cm4ge2Z1bmN0aW9uKCk6IFByb21pc2U8T2JqZWN0Pn0gcmV0dXJuLmpzb24gLSBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBib2R5IHBhcnNlZCBhcyBKU09OLlxuICovXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaERhdGEodXJsKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBIVFRQIGVycm9yISBzdGF0dXM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApXG4gICAgfVxuICAgIGNvbnN0IGhhbmRsZXIgPSB1cmwuZW5kc1dpdGgoJy5sYW5nJykgPyAndGV4dCcgOiAnanNvbidcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2VbaGFuZGxlcl0oKVxuICAgIHJldHVybiBkYXRhXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignVGhlcmUgaGFzIGJlZW4gYSBwcm9ibGVtIHdpdGggeW91ciBmZXRjaCBvcGVyYXRpb246JywgZXJyb3IpXG4gICAgdGhyb3cgZXJyb3JcbiAgfVxufVxuIiwiaW1wb3J0IHsgZmV0Y2hEYXRhIH0gZnJvbSAnLi9mZXRjaC5qcydcblxuY29uc3QgREVGQVVMVF9DT05GSUcgPSB7XG4gIGV4dGVuc2lvbjogJy5sYW5nJyxcbiAgLy8gbG9jYWwgb3IgcmVtb3RlIGRpcmVjdG9yeSBjb250YWluaW5nIGxhbmd1YWdlIGZpbGVzXG4gIGxvY2F0aW9uOiAnYXNzZXRzL2xhbmcvJyxcbiAgLy8gbGlzdCBvZiBhdmFpbGFibGUgbG9jYWxlcywgaGFuZHkgZm9yIHBvcHVsYXRpbmcgc2VsZWN0b3IuXG4gIGxhbmdzOiBbJ2VuLVVTJ10sXG4gIGxvY2FsZTogJ2VuLVVTJywgLy8gaW5pdCB3aXRoIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2VcbiAgb3ZlcnJpZGU6IHt9LFxufVxuXG4vLyBTaW5nbGV0b24gaW5zdGFuY2UgaG9sZGVyXG5sZXQgaW5zdGFuY2UgPSBudWxsXG5cbi8qKlxuICogTWFpbiBpMThuIGNsYXNzXG4gKiBAY2xhc3MgSTE4TkJhc2VcbiAqIEBjbGFzc2Rlc2MgbWV0aG9kcyBhbmQgZGF0YSBzdG9yZSBmb3IgaTE4blxuICovXG5jbGFzcyBJMThOQmFzZSB7XG4gIC8qKlxuICAgKiBQcm9jZXNzIG9wdGlvbnMgYW5kIHN0YXJ0IHRoZSBtb2R1bGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSBERUZBVUxUX0NPTkZJRykge1xuICAgIHRoaXMubGFuZ3MgPSBPYmplY3QuY3JlYXRlKG51bGwpXG4gICAgdGhpcy5sb2FkZWQgPSBbXVxuICAgIHRoaXMucHJvY2Vzc0NvbmZpZyhvcHRpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIHBhcnNlIGFuZCBmb3JtYXQgY29uZmlnXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAqL1xuICBwcm9jZXNzQ29uZmlnKG9wdGlvbnMpIHtcbiAgICBjb25zdCB7IGxvY2F0aW9uLCAuLi5yZXN0T3B0aW9ucyB9ID0geyAuLi5ERUZBVUxUX0NPTkZJRywgLi4ub3B0aW9ucyB9XG4gICAgLy8gRW5zdXJlIGxvY2F0aW9uIGVuZHMgd2l0aCBhIHNsYXNoXG4gICAgY29uc3QgcGFyc2VkTG9jYXRpb24gPSBsb2NhdGlvbi5lbmRzV2l0aCgnLycpID8gbG9jYXRpb24gOiBgJHtsb2NhdGlvbn0vYFxuICAgIHRoaXMuY29uZmlnID0geyBsb2NhdGlvbjogcGFyc2VkTG9jYXRpb24sIC4uLnJlc3RPcHRpb25zIH1cblxuICAgIGNvbnN0IHsgcHJlbG9hZGVkID0ge30sIG92ZXJyaWRlID0ge30gfSA9IHRoaXMuY29uZmlnXG5cbiAgICAvLyBNZXJnZSBsb2NhbGVzIGZyb20gYm90aCBwcmVsb2FkZWQgYW5kIG92ZXJyaWRlXG4gICAgLy8gVGhpcyBzdXBwb3J0cyBsZWdhY3kgdXNhZ2Ugd2hlcmUgb3ZlcnJpZGUgZGVmaW5lZCBlbnRpcmUgbGFuZ3VhZ2VzXG4gICAgY29uc3QgYWxsTG9jYWxlcyA9IG5ldyBTZXQoWy4uLk9iamVjdC5rZXlzKHByZWxvYWRlZCksIC4uLk9iamVjdC5rZXlzKG92ZXJyaWRlKV0pXG5cbiAgICAvLyBBcHBseSBsYW5ndWFnZXMgZnJvbSBib3RoIHByZWxvYWRlZCBhbmQgb3ZlcnJpZGVcbiAgICAvLyBhcHBseUxhbmd1YWdlIHdpbGwgbWVyZ2UgdGhlbSBwcm9wZXJseSAoZXhpc3RpbmcgKyBwcmVsb2FkZWQgKyBvdmVycmlkZSlcbiAgICBmb3IgKGNvbnN0IGxvY2FsZSBvZiBhbGxMb2NhbGVzKSB7XG4gICAgICBjb25zdCBwcmVsb2FkZWRMYW5nID0gcHJlbG9hZGVkW2xvY2FsZV0gfHwge31cbiAgICAgIGNvbnN0IG92ZXJyaWRlTGFuZyA9IG92ZXJyaWRlW2xvY2FsZV0gfHwge31cbiAgICAgIC8vIE1lcmdlIHByZWxvYWRlZCBhbmQgb3ZlcnJpZGUgZm9yIHRoaXMgbG9jYWxlXG4gICAgICBjb25zdCBtZXJnZWRMYW5nID0geyAuLi5wcmVsb2FkZWRMYW5nLCAuLi5vdmVycmlkZUxhbmcgfVxuICAgICAgdGhpcy5hcHBseUxhbmd1YWdlKGxvY2FsZSwgbWVyZ2VkTGFuZylcbiAgICB9XG5cbiAgICB0aGlzLmxvY2FsZSA9IHRoaXMuY29uZmlnLmxvY2FsZSB8fCB0aGlzLmNvbmZpZy5sYW5nc1swXVxuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgbGFuZ3VhZ2UgYW5kIHNldCBkZWZhdWx0XG4gICAqIEBwYXJhbSAge09iamVjdH0gb3B0aW9uc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlfSAgICAgICAgcmVzb2x2ZXMgbGFuZ3VhZ2VcbiAgICovXG4gIGluaXQob3B0aW9ucykge1xuICAgIHRoaXMucHJvY2Vzc0NvbmZpZyh7IC4uLnRoaXMuY29uZmlnLCAuLi5vcHRpb25zIH0pXG4gICAgcmV0dXJuIHRoaXMuc2V0Q3VycmVudCh0aGlzLmxvY2FsZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbGFuZ3VhZ2UgdG8gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGxhbmd1YWdlc1xuICAgKiBAcGFyYW0ge1N0cmluZ30gbG9jYWxlXG4gICAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gbGFuZ1xuICAgKi9cbiAgYWRkTGFuZ3VhZ2UobG9jYWxlLCBsYW5nID0ge30pIHtcbiAgICBsYW5nID0gdHlwZW9mIGxhbmcgPT09ICdzdHJpbmcnID8gSTE4TkJhc2UucHJvY2Vzc0ZpbGUobGFuZykgOiBsYW5nXG4gICAgdGhpcy5hcHBseUxhbmd1YWdlKGxvY2FsZSwgbGFuZylcbiAgICB0aGlzLmxvYWRlZC5wdXNoKGxvY2FsZSlcbiAgICB0aGlzLmNvbmZpZy5sYW5ncy5wdXNoKGxvY2FsZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgYSBzdHJpbmcgZnJvbSBhIGxvYWRlZCBsYW5ndWFnZSBmaWxlXG4gICAqIEBwYXJhbSAge1N0cmluZ30ga2V5ICAtIHRoZSBrZXkgZm9yIHRoZSBzdHJpbmcgd2UgYXJlIHRyeWluZyB0byByZXRyaWV2ZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGxvY2FsZSAtIGxvY2FsZSB0byBjaGVjayBmb3IgdmFsdWVcbiAgICogQHJldHVybiB7U3RyaW5nfSBsYW5ndWFnZSBzdHJpbmcgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBnZXRWYWx1ZShrZXksIGxvY2FsZSA9IHRoaXMubG9jYWxlKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmxhbmdzW2xvY2FsZV0/LltrZXldXG4gICAgcmV0dXJuIHZhbHVlIHx8IHRoaXMuZ2V0RmFsbGJhY2tWYWx1ZShrZXkpXG4gIH1cblxuICAvKipcbiAgICogRmluZCBhIGxhbmd1YWdlIHRoYXQgaGFzIGRlc2lyZWQga2V5XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBrZXkgdmFsdWUga2V5XG4gICAqIEByZXR1cm4ge1N0cmluZ30gZm91bmQgdmFsdWUgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBnZXRGYWxsYmFja1ZhbHVlKGtleSkge1xuICAgIGNvbnN0IGZhbGxiYWNrTGFuZyA9IE9iamVjdC52YWx1ZXModGhpcy5sYW5ncykuZmluZChsYW5nID0+IGxhbmdba2V5XSlcbiAgICByZXR1cm4gZmFsbGJhY2tMYW5nPy5ba2V5XVxuICB9XG5cbiAgLyoqXG4gICAqIEVzY2FwZSB2YXJpYWJsZSBzeW50YXhcbiAgICogQHBhcmFtICB7U3RyaW5nfSBzdHJcbiAgICogQHJldHVybiB7U3RyaW5nfSAgICAgZXNjYXBlZCBzdHJcbiAgICovXG4gIG1ha2VTYWZlKHN0cikge1xuICAgIGNvbnN0IG1hcE9iaiA9IHtcbiAgICAgICd7JzogU3RyaW5nLnJhd2BcXHtgLFxuICAgICAgJ30nOiBTdHJpbmcucmF3YFxcfWAsXG4gICAgICAnfCc6IFN0cmluZy5yYXdgXFx8YCxcbiAgICB9XG5cbiAgICBjb25zdCBlc2NhcGVkU3RyID0gc3RyLnJlcGxhY2VBbGwoL1t7fXxdL2csIG1hdGNoZWQgPT4gbWFwT2JqW21hdGNoZWRdKVxuXG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoZXNjYXBlZFN0ciwgJ2cnKVxuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBvcmFyaWx5IHB1dCBhIHN0cmluZyBpbnRvIHRoZSBjdXJyZW50bHkgbG9hZGVkIGxhbmd1YWdlXG4gICAqIEBwYXJhbSAge1N0cmluZ30ga2V5XG4gICAqIEBwYXJhbSAge1N0cmluZ30gc3RyaW5nXG4gICAqIEByZXR1cm4ge1N0cmluZ30gc3RyaW5nIGluIGN1cnJlbnQgbGFuZ3VhZ2VcbiAgICovXG4gIHB1dChrZXksIHN0cmluZykge1xuICAgIHRoaXMuY3VycmVudFtrZXldID0gc3RyaW5nXG5cbiAgICByZXR1cm4gc3RyaW5nXG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgYXJndW1lbnRzIGZvciB0aGUgcmVxdWVzdGVkIHN0cmluZ1xuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGtleSAgdGhlIGtleSB3ZSB1c2UgdG8gbG9va3VwIG91ciB0cmFuc2xhdGlvblxuICAgKiBAcGFyYW0gIHttdWx0aX0gIGFyZ3MgIHN0cmluZywgbnVtYmVyIG9yIG9iamVjdCBjb250YWluaW5nIG91ciBhcmd1bWVudHNcbiAgICogQHJldHVybiB7U3RyaW5nfSAgICAgIHVwZGF0ZWQgc3RyaW5nIHRyYW5zbGF0aW9uXG4gICAqL1xuICBnZXQoa2V5LCBhcmdzKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZShrZXkpXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gTm8gcmVwbGFjZW1lbnQgbmVlZGVkIGlmIG5vIGFyZ3MgcHJvdmlkZWRcbiAgICBpZiAoIWFyZ3MpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuICAgIGNvbnN0IHRva2VucyA9IHZhbHVlLm1hdGNoKC9cXHtbXn1dKz9cXH0vZylcblxuICAgIC8vIE5vIHRva2VucyB0byByZXBsYWNlXG4gICAgaWYgKCF0b2tlbnMpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuICAgIC8vIE9iamVjdCBhcmdzOiByZXBsYWNlIGVhY2ggdG9rZW4gd2l0aCBjb3JyZXNwb25kaW5nIGtleVxuICAgIGlmICh0eXBlb2YgYXJncyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zKSB7XG4gICAgICAgIGNvbnN0IHRva2VuS2V5ID0gdG9rZW4uc2xpY2UoMSwgLTEpXG4gICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSh0aGlzLm1ha2VTYWZlKHRva2VuKSwgYXJnc1t0b2tlbktleV0gPz8gJycpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFByaW1pdGl2ZSBhcmdzOiByZXBsYWNlIGFsbCB0b2tlbnMgd2l0aCBzYW1lIHZhbHVlXG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2VBbGwoL1xce1tefV0rP1xcfS9nLCBhcmdzKVxuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBtZXRob2Q6IFByb2Nlc3MgYSBsYW5ndWFnZSBmaWxlIGZyb20gcmF3IHRleHRcbiAgICogQHBhcmFtICB7U3RyaW5nfSByZXNwb25zZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IHByb2Nlc3NlZCBsYW5ndWFnZVxuICAgKi9cbiAgc3RhdGljIHByb2Nlc3NGaWxlKHJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIEkxOE4uZnJvbUZpbGUocmVzcG9uc2UucmVwbGFjZUFsbCgnXFxuXFxuJywgJ1xcbicpKVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBtZXRob2Q6IFR1cm4gcmF3IHRleHQgZnJvbSB0aGUgbGFuZ3VhZ2UgZmlsZXMgaW50byBmYW5jeSBKU09OXG4gICAqIEBwYXJhbSAge1N0cmluZ30gcmF3VGV4dFxuICAgKiBAcmV0dXJuIHtPYmplY3R9IGNvbnZlcnRlZCBsYW5ndWFnZSBmaWxlXG4gICAqL1xuICBzdGF0aWMgZnJvbUZpbGUocmF3VGV4dCkge1xuICAgIGNvbnN0IGxpbmVzID0gcmF3VGV4dC5zcGxpdCgnXFxuJylcbiAgICBjb25zdCBsYW5nID0ge31cblxuICAgIGZvciAobGV0IG1hdGNoZXMsIGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gL14oLis/KSAqPz0gKj8oW15cXG5dKykvXG4gICAgICBtYXRjaGVzID0gcmVnZXguZXhlYyhsaW5lc1tpXSlcbiAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgIGxhbmdbbWF0Y2hlc1sxXV0gPSBtYXRjaGVzWzJdLnRyaW0oKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsYW5nXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzaW5nbGV0b24gaW5zdGFuY2VcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICogQHJldHVybiB7STE4TkJhc2V9IHNpbmdsZXRvbiBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIGdldEluc3RhbmNlKG9wdGlvbnMpIHtcbiAgICBpZiAoIWluc3RhbmNlKSB7XG4gICAgICBpbnN0YW5jZSA9IG5ldyBJMThOQmFzZShvcHRpb25zKVxuICAgIH1cbiAgICByZXR1cm4gaW5zdGFuY2VcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgc2luZ2xldG9uIGluc3RhbmNlICh1c2VmdWwgZm9yIHRlc3RpbmcpXG4gICAqL1xuICBzdGF0aWMgcmVzZXRJbnN0YW5jZSgpIHtcbiAgICBpbnN0YW5jZSA9IG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGEgcmVtb3RlbHkgc3RvcmVkIGxhbmd1YWdlIGZpbGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBsb2NhbGVcbiAgICogQHBhcmFtICB7Qm9vbGVhbn0gdXNlQ2FjaGVcbiAgICogQHJldHVybiB7UHJvbWlzZX0gICAgICAgcmVzb2x2ZXMgcmVzcG9uc2VcbiAgICovXG4gIGFzeW5jIGxvYWRMYW5nKGxvY2FsZSwgdXNlQ2FjaGUgPSB0cnVlKSB7XG4gICAgLy8gUmV0dXJuIGNhY2hlZCBsYW5ndWFnZSBpZiBhbHJlYWR5IGxvYWRlZFxuICAgIGlmICh0aGlzLmxvYWRlZC5pbmNsdWRlcyhsb2NhbGUpICYmIHVzZUNhY2hlKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5nc1tsb2NhbGVdXG4gICAgfVxuICAgIC8vIEZldGNoIGFuZCBwcm9jZXNzIGxhbmd1YWdlIGZpbGVcbiAgICBjb25zdCBsYW5nRmlsZSA9IGAke3RoaXMuY29uZmlnLmxvY2F0aW9ufSR7bG9jYWxlfSR7dGhpcy5jb25maWcuZXh0ZW5zaW9ufWBcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBsYW5nID0gYXdhaXQgZmV0Y2hEYXRhKGxhbmdGaWxlKVxuICAgICAgY29uc3QgcHJvY2Vzc2VkRmlsZSA9IEkxOE5CYXNlLnByb2Nlc3NGaWxlKGxhbmcpXG4gICAgICB0aGlzLmFwcGx5TGFuZ3VhZ2UobG9jYWxlLCBwcm9jZXNzZWRGaWxlKVxuICAgICAgcmV0dXJuIHRoaXMubGFuZ3NbbG9jYWxlXVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpXG4gICAgICByZXR1cm4gdGhpcy5hcHBseUxhbmd1YWdlKGxvY2FsZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogYXBwbGllcyBvdmVycmlkZXMgZnJvbSBjb25maWdcbiAgICogQHBhcmFtIHtTdHJpbmd9IGxvY2FsZVxuICAgKiBAcGFyYW0ge09iamVjdH0gbGFuZ1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IG92ZXJyaWRlbiBsYW5ndWFnZVxuICAgKi9cbiAgYXBwbHlMYW5ndWFnZShsb2NhbGUsIGxhbmcgPSB7fSkge1xuICAgIGNvbnN0IG92ZXJyaWRlID0gdGhpcy5jb25maWcub3ZlcnJpZGVbbG9jYWxlXSB8fCB7fVxuICAgIGNvbnN0IGV4aXN0aW5nTGFuZyA9IHRoaXMubGFuZ3NbbG9jYWxlXSB8fCB7fVxuICAgIHRoaXMubGFuZ3NbbG9jYWxlXSA9IHsgLi4uZXhpc3RpbmdMYW5nLCAuLi5sYW5nLCAuLi5vdmVycmlkZSB9XG4gICAgdGhpcy5sb2FkZWQucHVzaChsb2NhbGUpXG4gICAgcmV0dXJuIHRoaXMubGFuZ3NbbG9jYWxlXVxuICB9XG5cbiAgLyoqXG4gICAqIHJldHVybiBjdXJyZW50bHkgYXZhaWxhYmxlIGxhbmd1YWdlc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IGFsbCBjb25maWd1cmVkIGxhbmd1YWdlc1xuICAgKi9cbiAgZ2V0IGdldExhbmdzKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5sYW5nc1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHQgdG8gc2V0IHRoZSBjdXJyZW50IGxhbmd1YWdlIHRvIHRoZSBsb2NhbCBwcm92aWRlZFxuICAgKiBAcGFyYW0ge1N0cmluZ30gICBsb2NhbGVcbiAgICogQHJldHVybiB7UHJvbWlzZX0gbGFuZ3VhZ2VcbiAgICovXG4gIGFzeW5jIHNldEN1cnJlbnQobG9jYWxlID0gJ2VuLVVTJykge1xuICAgIGlmICghdGhpcy5sb2FkZWQuaW5jbHVkZXMobG9jYWxlKSkge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkTGFuZyhsb2NhbGUpXG4gICAgfVxuXG4gICAgdGhpcy5sb2NhbGUgPSBsb2NhbGVcbiAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLmxhbmdzW2xvY2FsZV1cblxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRcbiAgfVxufVxuXG4vKipcbiAqIFByb3h5IHdyYXBwZXIgdGhhdCBlbmFibGVzIHNpbmdsZXRvbiBwYXR0ZXJuOlxuICogLSBJMThOKCkgcmV0dXJucyB0aGUgc2luZ2xldG9uIGluc3RhbmNlXG4gKiAtIG5ldyBJMThOKCkgY3JlYXRlcyBhIG5ldyBpbnN0YW5jZVxuICovXG5leHBvcnQgY29uc3QgSTE4TiA9IG5ldyBQcm94eShJMThOQmFzZSwge1xuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gSTE4TigpIGlzIGludm9rZWQgYXMgYSBmdW5jdGlvbiAod2l0aG91dCBuZXcpXG4gICAqIFJldHVybnMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZVxuICAgKi9cbiAgYXBwbHkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7XG4gICAgcmV0dXJuIHRhcmdldC5nZXRJbnN0YW5jZSguLi5hcmdzKVxuICB9LFxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBuZXcgSTE4TigpIGlzIGludm9rZWRcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZVxuICAgKi9cbiAgY29uc3RydWN0KHRhcmdldCwgYXJncykge1xuICAgIHJldHVybiBuZXcgdGFyZ2V0KC4uLmFyZ3MpXG4gIH0sXG5cbiAgLyoqXG4gICAqIFByb3h5IHByb3BlcnR5IGFjY2VzcyB0byB0aGUgYmFzZSBjbGFzc1xuICAgKi9cbiAgZ2V0KHRhcmdldCwgcHJvcCkge1xuICAgIHJldHVybiB0YXJnZXRbcHJvcF1cbiAgfSxcbn0pXG5cbmV4cG9ydCBkZWZhdWx0IEkxOE4uZ2V0SW5zdGFuY2UoKVxuIl0sIm1hcHBpbmdzIjoiQUFBdUJBLE9BQU9DLE9BQU8sQ0FBRUMsT0FBUSxNQUFPQyxLQUFNLEtDRTVELElBQU1DLEVBQWlCLENBQ3JCQyxVQUFXLFFBRVhDLFNBQVUsZUFFVkMsTUFBTyxDQUFDLFNBQ1JDLE9BQVEsUUFDUkMsU0FBVSxDQUFDLEdBSVRDLEVBQVcsS0FrUkZDLEVBQU8sSUFBSUMsTUEzUXhCLE1BQU1DLEVBS0osV0FBQUMsQ0FBWUMsRUFBVVgsR0FDcEJZLEtBQUtULE1BQVFQLE9BQU9pQixPQUFPLE1BQzNCRCxLQUFLRSxPQUFTLEdBQ2RGLEtBQUtHLGNBQWNKLEVBQ3JCLENBTUEsYUFBQUksQ0FBY0osR0FDWixNQUFNVCxTQUFFQSxLQUFhYyxHQUFnQixJQUFLaEIsS0FBbUJXLEdBRXZETSxFQUFpQmYsRUFBU2dCLFNBQVMsS0FBT2hCLEVBQVcsR0FBR0EsS0FDOURVLEtBQUtPLE9BQVMsQ0FBRWpCLFNBQVVlLEtBQW1CRCxHQUU3QyxNQUFNSSxVQUFFQSxFQUFZLENBQUMsRUFBQWYsU0FBR0EsRUFBVyxDQUFDLEdBQU1PLEtBQUtPLE9BSXpDRSxpQkFBYSxJQUFJQyxJQUFJLElBQUkxQixPQUFPMkIsS0FBS0gsTUFBZXhCLE9BQU8yQixLQUFL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
|
package/dist/i18n.es.min.js.gz
CHANGED
|
Binary file
|
package/dist/i18n.iife.min.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
2
|
/**
|
|
3
3
|
@draggable/i18n - https://github.com/Draggable/i18n
|
|
4
|
-
Version: 1.1.
|
|
4
|
+
Version: 1.1.1
|
|
5
5
|
Author: Draggable https://draggable.io
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
var i18n=function(t){Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),Object.freeze({method:"GET",body:""});var e={extension:".lang",location:"assets/lang/",langs:["en-US"],locale:"en-US",override:{}},n=null,s=new Proxy(class t{constructor(t=e){this.langs=Object.create(null),this.loaded=[],this.processConfig(t)}processConfig(t){const{location:n,...s}={...e,...t},a=n.endsWith("/")?n:`${n}/`;this.config={location:a,...s};const{preloaded:i={},override:r={}}=this.config,l=new Set([...Object.keys(i),...Object.keys(r)]);for(const e of l){const t={...i[e]||{},...r[e]||{}};this.applyLanguage(e,t)}this.locale=this.config.locale||this.config.langs[0]}init(t){return this.processConfig({...this.config,...t}),this.setCurrent(this.locale)}addLanguage(e,n={}){n="string"==typeof n?t.processFile(n):n,this.applyLanguage(e,n),this.loaded.push(e),this.config.langs.push(e)}getValue(t,e=this.locale){return this.langs[e]?.[t]||this.getFallbackValue(t)}getFallbackValue(t){return Object.values(this.langs).find(e=>e[t])?.[t]}makeSafe(t){const e={"{":String.raw`\{`,"}":String.raw`\}`,"|":String.raw`\|`},n=t.replaceAll(/[{}|]/g,t=>e[t]);return new RegExp(n,"g")}put(t,e){return this.current[t]=e,e}get(t,e){let n=this.getValue(t);if(!n)return;if(!e)return n;const s=n.match(/\{[^}]+?\}/g);if(!s)return n;if("object"==typeof e)for(const a of s){const t=a.slice(1,-1);n=n.replace(this.makeSafe(a),e[t]??"")}else n=n.replaceAll(/\{[^}]+?\}/g,e);return n}static processFile(t){return s.fromFile(t.replaceAll("\n\n","\n"))}static fromFile(t){const e=t.split("\n"),n={};for(let s,a=0;a<e.length;a++)s=/^(.+?) *?= *?([^\n]+)/.exec(e[a]),s&&(n[s[1]]=s[2].trim());return n}static getInstance(e){return n||(n=new t(e)),n}static resetInstance(){n=null}async loadLang(e,n=!0){if(this.loaded.includes(e)&&n)return this.langs[e];const s=`${this.config.location}${e}${this.config.extension}`;try{const n=await async function(t){try{const e=await fetch(t);if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return await e[t.endsWith(".lang")?"text":"json"]()}catch(e){throw e}}(s),a=t.processFile(n);return this.applyLanguage(e,a),this.langs[e]}catch(a){return this.applyLanguage(e)}}applyLanguage(t,e={}){const n=this.config.override[t]||{},s=this.langs[t]||{};return this.langs[t]={...s,...e,...n},this.loaded.push(t),this.langs[t]}get getLangs(){return this.config.langs}async setCurrent(t="en-US"){return this.loaded.includes(t)||await this.loadLang(t),this.locale=t,this.current=this.langs[t],this.current}},{apply:(t,e,n)=>t.getInstance(...n),construct:(t,e)=>new t(...e),get:(t,e)=>t[e]}),a=s.getInstance();return t.I18N=s,t.default=a,t}({});
|
|
9
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5paWZlLm1pbi5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi9zcmMvZmV0Y2guanMiLCIuLi9zcmMvbWkxOG4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZGVmYXVsdE9wdGlvbnMgPSBPYmplY3QuZnJlZXplKHsgbWV0aG9kOiAnR0VUJywgYm9keTogJycgfSlcbi8qKlxuICogRmV0Y2hlcyBhIHJlc291cmNlIGZyb20gdGhlIG5ldHdvcmsuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIFRoZSBVUkwgdG8gZmV0Y2guXG4gKiBAcGFyYW0ge09iamVjdH0gW2ZldGNoT3B0aW9ucz17fV0gLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZldGNoIHJlcXVlc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW2ZldGNoT3B0aW9ucy5oZWFkZXJzXSAtIEhlYWRlcnMgdG8gaW5jbHVkZSBpbiB0aGUgcmVxdWVzdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbZmV0Y2hPcHRpb25zLm1ldGhvZF0gLSBUaGUgSFRUUCBtZXRob2QgdG8gdXNlIChlLmcuLCAnR0VUJywgJ1BPU1QnKS5cbiAqIEBwYXJhbSB7c3RyaW5nfEJ1ZmZlcn0gW2ZldGNoT3B0aW9ucy5ib2R5XSAtIFRoZSBib2R5IG9mIHRoZSByZXF1ZXN0LlxuICogQHJldHVybiB7UHJvbWlzZTxPYmplY3Q+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICogQHJldHVybiB7Ym9vbGVhbn0gcmV0dXJuLm9rIC0gSW5kaWNhdGVzIGlmIHRoZSByZXNwb25zZSBzdGF0dXMgaXMgaW4gdGhlIHJhbmdlIDIwMC0yOTkuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IHJldHVybi5zdGF0dXMgLSBUaGUgSFRUUCBzdGF0dXMgY29kZSBvZiB0aGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IHJldHVybi5zdGF0dXNUZXh0IC0gVGhlIEhUVFAgc3RhdHVzIG1lc3NhZ2Ugb2YgdGhlIHJlc3BvbnNlLlxuICogQHJldHVybiB7TWFwPHN0cmluZywgc3RyaW5nPn0gcmV0dXJuLmhlYWRlcnMgLSBUaGUgaGVhZGVycyBvZiB0aGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJuIHtCdWZmZXJ9IHJldHVybi5ib2R5IC0gVGhlIGJvZHkgb2YgdGhlIHJlc3BvbnNlIGFzIGEgQnVmZmVyLlxuICogQHJldHVybiB7ZnVuY3Rpb24oKTogUHJvbWlzZTxCdWZmZXI+fSByZXR1cm4uYXJyYXlCdWZmZXIgLSBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBib2R5IGFzIGFuIEFycmF5QnVmZmVyLlxuICogQHJldHVybiB7ZnVuY3Rpb24oKTogUHJvbWlzZTxPYmplY3Q+fSByZXR1cm4uanNvbiAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGJvZHkgcGFyc2VkIGFzIEpTT04uXG4gKi9cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoRGF0YSh1cmwpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybClcbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEhUVFAgZXJyb3IhIHN0YXR1czogJHtyZXNwb25zZS5zdGF0dXN9YClcbiAgICB9XG4gICAgY29uc3QgaGFuZGxlciA9IHVybC5lbmRzV2l0aCgnLmxhbmcnKSA/ICd0ZXh0JyA6ICdqc29uJ1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZVtoYW5kbGVyXSgpXG4gICAgcmV0dXJuIGRhdGFcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdUaGVyZSBoYXMgYmVlbiBhIHByb2JsZW0gd2l0aCB5b3VyIGZldGNoIG9wZXJhdGlvbjonLCBlcnJvcilcbiAgICB0aHJvdyBlcnJvclxuICB9XG59XG4iLCJpbXBvcnQgeyBmZXRjaERhdGEgfSBmcm9tICcuL2ZldGNoLmpzJ1xuXG5jb25zdCBERUZBVUxUX0NPTkZJRyA9IHtcbiAgZXh0ZW5zaW9uOiAnLmxhbmcnLFxuICAvLyBsb2NhbCBvciByZW1vdGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgbGFuZ3VhZ2UgZmlsZXNcbiAgbG9jYXRpb246ICdhc3NldHMvbGFuZy8nLFxuICAvLyBsaXN0IG9mIGF2YWlsYWJsZSBsb2NhbGVzLCBoYW5keSBmb3IgcG9wdWxhdGluZyBzZWxlY3Rvci5cbiAgbGFuZ3M6IFsnZW4tVVMnXSxcbiAgbG9jYWxlOiAnZW4tVVMnLCAvLyBpbml0IHdpdGggdXNlcidzIHByZWZlcnJlZCBsYW5ndWFnZVxuICBvdmVycmlkZToge30sXG59XG5cbi8vIFNpbmdsZXRvbiBpbnN0YW5jZSBob2xkZXJcbmxldCBpbnN0YW5jZSA9IG51bGxcblxuLyoqXG4gKiBNYWluIGkxOG4gY2xhc3NcbiAqIEBjbGFzcyBJMThOQmFzZVxuICogQGNsYXNzZGVzYyBtZXRob2RzIGFuZCBkYXRhIHN0b3JlIGZvciBpMThuXG4gKi9cbmNsYXNzIEkxOE5CYXNlIHtcbiAgLyoqXG4gICAqIFByb2Nlc3Mgb3B0aW9ucyBhbmQgc3RhcnQgdGhlIG1vZHVsZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9ucyA9IERFRkFVTFRfQ09ORklHKSB7XG4gICAgdGhpcy5sYW5ncyA9IE9iamVjdC5jcmVhdGUobnVsbClcbiAgICB0aGlzLmxvYWRlZCA9IFtdXG4gICAgdGhpcy5wcm9jZXNzQ29uZmlnKG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogcGFyc2UgYW5kIGZvcm1hdCBjb25maWdcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICovXG4gIHByb2Nlc3NDb25maWcob3B0aW9ucykge1xuICAgIGNvbnN0IHsgbG9jYXRpb24sIC4uLnJlc3RPcHRpb25zIH0gPSB7IC4uLkRFRkFVTFRfQ09ORklHLCAuLi5vcHRpb25zIH1cbiAgICAvLyBFbnN1cmUgbG9jYXRpb24gZW5kcyB3aXRoIGEgc2xhc2hcbiAgICBjb25zdCBwYXJzZWRMb2NhdGlvbiA9IGxvY2F0aW9uLmVuZHNXaXRoKCcvJykgPyBsb2NhdGlvbiA6IGAke2xvY2F0aW9ufS9gXG4gICAgdGhpcy5jb25maWcgPSB7IGxvY2F0aW9uOiBwYXJzZWRMb2NhdGlvbiwgLi4ucmVzdE9wdGlvbnMgfVxuXG4gICAgY29uc3QgeyBwcmVsb2FkZWQgPSB7fSwgb3ZlcnJpZGUgPSB7fSB9ID0gdGhpcy5jb25maWdcblxuICAgIC8vIE1lcmdlIGxvY2FsZXMgZnJvbSBib3RoIHByZWxvYWRlZCBhbmQgb3ZlcnJpZGVcbiAgICAvLyBUaGlzIHN1cHBvcnRzIGxlZ2FjeSB1c2FnZSB3aGVyZSBvdmVycmlkZSBkZWZpbmVkIGVudGlyZSBsYW5ndWFnZXNcbiAgICBjb25zdCBhbGxMb2NhbGVzID0gbmV3IFNldChbLi4uT2JqZWN0LmtleXMocHJlbG9hZGVkKSwgLi4uT2JqZWN0LmtleXMob3ZlcnJpZGUpXSlcblxuICAgIC8vIEFwcGx5IGxhbmd1YWdlcyBmcm9tIGJvdGggcHJlbG9hZGVkIGFuZCBvdmVycmlkZVxuICAgIC8vIGFwcGx5TGFuZ3VhZ2Ugd2lsbCBtZXJnZSB0aGVtIHByb3Blcmx5IChleGlzdGluZyArIHByZWxvYWRlZCArIG92ZXJyaWRlKVxuICAgIGZvciAoY29uc3QgbG9jYWxlIG9mIGFsbExvY2FsZXMpIHtcbiAgICAgIGNvbnN0IHByZWxvYWRlZExhbmcgPSBwcmVsb2FkZWRbbG9jYWxlXSB8fCB7fVxuICAgICAgY29uc3Qgb3ZlcnJpZGVMYW5nID0gb3ZlcnJpZGVbbG9jYWxlXSB8fCB7fVxuICAgICAgLy8gTWVyZ2UgcHJlbG9hZGVkIGFuZCBvdmVycmlkZSBmb3IgdGhpcyBsb2NhbGVcbiAgICAgIGNvbnN0IG1lcmdlZExhbmcgPSB7IC4uLnByZWxvYWRlZExhbmcsIC4uLm92ZXJyaWRlTGFuZyB9XG4gICAgICB0aGlzLmFwcGx5TGFuZ3VhZ2UobG9jYWxlLCBtZXJnZWRMYW5nKVxuICAgIH1cblxuICAgIHRoaXMubG9jYWxlID0gdGhpcy5jb25maWcubG9jYWxlIHx8IHRoaXMuY29uZmlnLmxhbmdzWzBdXG4gIH1cblxuICAvKipcbiAgICogTG9hZCBsYW5ndWFnZSBhbmQgc2V0IGRlZmF1bHRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBvcHRpb25zXG4gICAqIEByZXR1cm4ge1Byb21pc2V9ICAgICAgICByZXNvbHZlcyBsYW5ndWFnZVxuICAgKi9cbiAgaW5pdChvcHRpb25zKSB7XG4gICAgdGhpcy5wcm9jZXNzQ29uZmlnKHsgLi4udGhpcy5jb25maWcsIC4uLm9wdGlvbnMgfSlcbiAgICByZXR1cm4gdGhpcy5zZXRDdXJyZW50KHRoaXMubG9jYWxlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBsYW5ndWFnZSB0byB0aGUgbGlzdCBvZiBhdmFpbGFibGUgbGFuZ3VhZ2VzXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBsb2NhbGVcbiAgICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBsYW5nXG4gICAqL1xuICBhZGRMYW5ndWFnZShsb2NhbGUsIGxhbmcgPSB7fSkge1xuICAgIGxhbmcgPSB0eXBlb2YgbGFuZyA9PT0gJ3N0cmluZycgPyBJMThOQmFzZS5wcm9jZXNzRmlsZShsYW5nKSA6IGxhbmdcbiAgICB0aGlzLmFwcGx5TGFuZ3VhZ2UobG9jYWxlLCBsYW5nKVxuICAgIHRoaXMubG9hZGVkLnB1c2gobG9jYWxlKVxuICAgIHRoaXMuY29uZmlnLmxhbmdzLnB1c2gobG9jYWxlKVxuICB9XG5cbiAgLyoqXG4gICAqIGdldCBhIHN0cmluZyBmcm9tIGEgbG9hZGVkIGxhbmd1YWdlIGZpbGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBrZXkgIC0gdGhlIGtleSBmb3IgdGhlIHN0cmluZyB3ZSBhcmUgdHJ5aW5nIHRvIHJldHJpZXZlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gbG9jYWxlIC0gbG9jYWxlIHRvIGNoZWNrIGZvciB2YWx1ZVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IGxhbmd1YWdlIHN0cmluZyBvciB1bmRlZmluZWRcbiAgICovXG4gIGdldFZhbHVlKGtleSwgbG9jYWxlID0gdGhpcy5sb2NhbGUpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMubGFuZ3NbbG9jYWxlXT8uW2tleV1cbiAgICByZXR1cm4gdmFsdWUgfHwgdGhpcy5nZXRGYWxsYmFja1ZhbHVlKGtleSlcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGEgbGFuZ3VhZ2UgdGhhdCBoYXMgZGVzaXJlZCBrZXlcbiAgICogQHBhcmFtIHtTdHJpbmd9IGtleSB2YWx1ZSBrZXlcbiAgICogQHJldHVybiB7U3RyaW5nfSBmb3VuZCB2YWx1ZSBvciB1bmRlZmluZWRcbiAgICovXG4gIGdldEZhbGxiYWNrVmFsdWUoa2V5KSB7XG4gICAgY29uc3QgZmFsbGJhY2tMYW5nID0gT2JqZWN0LnZhbHVlcyh0aGlzLmxhbmdzKS5maW5kKGxhbmcgPT4gbGFuZ1trZXldKVxuICAgIHJldHVybiBmYWxsYmFja0xhbmc/LltrZXldXG4gIH1cblxuICAvKipcbiAgICogRXNjYXBlIHZhcmlhYmxlIHN5bnRheFxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IHN0clxuICAgKiBAcmV0dXJuIHtTdHJpbmd9ICAgICBlc2NhcGVkIHN0clxuICAgKi9cbiAgbWFrZVNhZmUoc3RyKSB7XG4gICAgY29uc3QgbWFwT2JqID0ge1xuICAgICAgJ3snOiBTdHJpbmcucmF3YFxce2AsXG4gICAgICAnfSc6IFN0cmluZy5yYXdgXFx9YCxcbiAgICAgICd8JzogU3RyaW5nLnJhd2BcXHxgLFxuICAgIH1cblxuICAgIGNvbnN0IGVzY2FwZWRTdHIgPSBzdHIucmVwbGFjZUFsbCgvW3t9fF0vZywgbWF0Y2hlZCA9PiBtYXBPYmpbbWF0Y2hlZF0pXG5cbiAgICByZXR1cm4gbmV3IFJlZ0V4cChlc2NhcGVkU3RyLCAnZycpXG4gIH1cblxuICAvKipcbiAgICogVGVtcG9yYXJpbHkgcHV0IGEgc3RyaW5nIGludG8gdGhlIGN1cnJlbnRseSBsb2FkZWQgbGFuZ3VhZ2VcbiAgICogQHBhcmFtICB7U3RyaW5nfSBrZXlcbiAgICogQHBhcmFtICB7U3RyaW5nfSBzdHJpbmdcbiAgICogQHJldHVybiB7U3RyaW5nfSBzdHJpbmcgaW4gY3VycmVudCBsYW5ndWFnZVxuICAgKi9cbiAgcHV0KGtleSwgc3RyaW5nKSB7XG4gICAgdGhpcy5jdXJyZW50W2tleV0gPSBzdHJpbmdcblxuICAgIHJldHVybiBzdHJpbmdcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBhcmd1bWVudHMgZm9yIHRoZSByZXF1ZXN0ZWQgc3RyaW5nXG4gICAqIEBwYXJhbSAge1N0cmluZ30ga2V5ICB0aGUga2V5IHdlIHVzZSB0byBsb29rdXAgb3VyIHRyYW5zbGF0aW9uXG4gICAqIEBwYXJhbSAge211bHRpfSAgYXJncyAgc3RyaW5nLCBudW1iZXIgb3Igb2JqZWN0IGNvbnRhaW5pbmcgb3VyIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtTdHJpbmd9ICAgICAgdXBkYXRlZCBzdHJpbmcgdHJhbnNsYXRpb25cbiAgICovXG4gIGdldChrZXksIGFyZ3MpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmdldFZhbHVlKGtleSlcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBObyByZXBsYWNlbWVudCBuZWVkZWQgaWYgbm8gYXJncyBwcm92aWRlZFxuICAgIGlmICghYXJncykge1xuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW5zID0gdmFsdWUubWF0Y2goL1xce1tefV0rP1xcfS9nKVxuXG4gICAgLy8gTm8gdG9rZW5zIHRvIHJlcGxhY2VcbiAgICBpZiAoIXRva2Vucykge1xuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfVxuXG4gICAgLy8gT2JqZWN0IGFyZ3M6IHJlcGxhY2UgZWFjaCB0b2tlbiB3aXRoIGNvcnJlc3BvbmRpbmcga2V5XG4gICAgaWYgKHR5cGVvZiBhcmdzID09PSAnb2JqZWN0Jykge1xuICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICAgICAgY29uc3QgdG9rZW5LZXkgPSB0b2tlbi5zbGljZSgxLCAtMSlcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHRoaXMubWFrZVNhZmUodG9rZW4pLCBhcmdzW3Rva2VuS2V5XSA/PyAnJylcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUHJpbWl0aXZlIGFyZ3M6IHJlcGxhY2UgYWxsIHRva2VucyB3aXRoIHNhbWUgdmFsdWVcbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZUFsbCgvXFx7W159XSs/XFx9L2csIGFyZ3MpXG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICAvKipcbiAgICogU3RhdGljIG1ldGhvZDogUHJvY2VzcyBhIGxhbmd1YWdlIGZpbGUgZnJvbSByYXcgdGV4dFxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IHJlc3BvbnNlXG4gICAqIEByZXR1cm4ge09iamVjdH0gcHJvY2Vzc2VkIGxhbmd1YWdlXG4gICAqL1xuICBzdGF0aWMgcHJvY2Vzc0ZpbGUocmVzcG9uc2UpIHtcbiAgICByZXR1cm4gSTE4Ti5mcm9tRmlsZShyZXNwb25zZS5yZXBsYWNlQWxsKCdcXG5cXG4nLCAnXFxuJykpXG4gIH1cblxuICAvKipcbiAgICogU3RhdGljIG1ldGhvZDogVHVybiByYXcgdGV4dCBmcm9tIHRoZSBsYW5ndWFnZSBmaWxlcyBpbnRvIGZhbmN5IEpTT05cbiAgICogQHBhcmFtICB7U3RyaW5nfSByYXdUZXh0XG4gICAqIEByZXR1cm4ge09iamVjdH0gY29udmVydGVkIGxhbmd1YWdlIGZpbGVcbiAgICovXG4gIHN0YXRpYyBmcm9tRmlsZShyYXdUZXh0KSB7XG4gICAgY29uc3QgbGluZXMgPSByYXdUZXh0LnNwbGl0KCdcXG4nKVxuICAgIGNvbnN0IGxhbmcgPSB7fVxuXG4gICAgZm9yIChsZXQgbWF0Y2hlcywgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgcmVnZXggPSAvXiguKz8pICo/PSAqPyhbXlxcbl0rKS9cbiAgICAgIG1hdGNoZXMgPSByZWdleC5leGVjKGxpbmVzW2ldKVxuICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgbGFuZ1ttYXRjaGVzWzFdXSA9IG1hdGNoZXNbMl0udHJpbSgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhbmdcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgKiBAcmV0dXJuIHtJMThOQmFzZX0gc2luZ2xldG9uIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgZ2V0SW5zdGFuY2Uob3B0aW9ucykge1xuICAgIGlmICghaW5zdGFuY2UpIHtcbiAgICAgIGluc3RhbmNlID0gbmV3IEkxOE5CYXNlKG9wdGlvbnMpXG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBzaW5nbGV0b24gaW5zdGFuY2UgKHVzZWZ1bCBmb3IgdGVzdGluZylcbiAgICovXG4gIHN0YXRpYyByZXNldEluc3RhbmNlKCkge1xuICAgIGluc3RhbmNlID0gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYSByZW1vdGVseSBzdG9yZWQgbGFuZ3VhZ2UgZmlsZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGxvY2FsZVxuICAgKiBAcGFyYW0gIHtCb29sZWFufSB1c2VDYWNoZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSAgICAgICByZXNvbHZlcyByZXNwb25zZVxuICAgKi9cbiAgYXN5bmMgbG9hZExhbmcobG9jYWxlLCB1c2VDYWNoZSA9IHRydWUpIHtcbiAgICAvLyBSZXR1cm4gY2FjaGVkIGxhbmd1YWdlIGlmIGFscmVhZHkgbG9hZGVkXG4gICAgaWYgKHRoaXMubG9hZGVkLmluY2x1ZGVzKGxvY2FsZSkgJiYgdXNlQ2FjaGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmdzW2xvY2FsZV1cbiAgICB9XG4gICAgLy8gRmV0Y2ggYW5kIHByb2Nlc3MgbGFuZ3VhZ2UgZmlsZVxuICAgIGNvbnN0IGxhbmdGaWxlID0gYCR7dGhpcy5jb25maWcubG9jYXRpb259JHtsb2NhbGV9JHt0aGlzLmNvbmZpZy5leHRlbnNpb259YFxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGxhbmcgPSBhd2FpdCBmZXRjaERhdGEobGFuZ0ZpbGUpXG4gICAgICBjb25zdCBwcm9jZXNzZWRGaWxlID0gSTE4TkJhc2UucHJvY2Vzc0ZpbGUobGFuZylcbiAgICAgIHRoaXMuYXBwbHlMYW5ndWFnZShsb2NhbGUsIHByb2Nlc3NlZEZpbGUpXG4gICAgICByZXR1cm4gdGhpcy5sYW5nc1tsb2NhbGVdXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycilcbiAgICAgIHJldHVybiB0aGlzLmFwcGx5TGFuZ3VhZ2UobG9jYWxlKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBhcHBsaWVzIG92ZXJyaWRlcyBmcm9tIGNvbmZpZ1xuICAgKiBAcGFyYW0ge1N0cmluZ30gbG9jYWxlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBsYW5nXG4gICAqIEByZXR1cm4ge09iamVjdH0gb3ZlcnJpZGVuIGxhbmd1YWdlXG4gICAqL1xuICBhcHBseUxhbmd1YWdlKGxvY2FsZSwgbGFuZyA9IHt9KSB7XG4gICAgY29uc3Qgb3ZlcnJpZGUgPSB0aGlzLmNvbmZpZy5vdmVycmlkZVtsb2NhbGVdIHx8IHt9XG4gICAgY29uc3QgZXhpc3RpbmdMYW5nID0gdGhpcy5sYW5nc1tsb2NhbGVdIHx8IHt9XG4gICAgdGhpcy5sYW5nc1tsb2NhbGVdID0geyAuLi5leGlzdGluZ0xhbmcsIC4uLmxhbmcsIC4uLm92ZXJyaWRlIH1cbiAgICB0aGlzLmxvYWRlZC5wdXNoKGxvY2FsZSlcbiAgICByZXR1cm4gdGhpcy5sYW5nc1tsb2NhbGVdXG4gIH1cblxuICAvKipcbiAgICogcmV0dXJuIGN1cnJlbnRseSBhdmFpbGFibGUgbGFuZ3VhZ2VzXG4gICAqIEByZXR1cm4ge09iamVjdH0gYWxsIGNvbmZpZ3VyZWQgbGFuZ3VhZ2VzXG4gICAqL1xuICBnZXQgZ2V0TGFuZ3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmxhbmdzXG4gIH1cblxuICAvKipcbiAgICogQXR0ZW1wdCB0byBzZXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgdG8gdGhlIGxvY2FsIHByb3ZpZGVkXG4gICAqIEBwYXJhbSB7U3RyaW5nfSAgIGxvY2FsZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSBsYW5ndWFnZVxuICAgKi9cbiAgYXN5bmMgc2V0Q3VycmVudChsb2NhbGUgPSAnZW4tVVMnKSB7XG4gICAgaWYgKCF0aGlzLmxvYWRlZC5pbmNsdWRlcyhsb2NhbGUpKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRMYW5nKGxvY2FsZSlcbiAgICB9XG5cbiAgICB0aGlzLmxvY2FsZSA9IGxvY2FsZVxuICAgIHRoaXMuY3VycmVudCA9IHRoaXMubGFuZ3NbbG9jYWxlXVxuXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFxuICB9XG59XG5cbi8qKlxuICogUHJveHkgd3JhcHBlciB0aGF0IGVuYWJsZXMgc2luZ2xldG9uIHBhdHRlcm46XG4gKiAtIEkxOE4oKSByZXR1cm5zIHRoZSBzaW5nbGV0b24gaW5zdGFuY2VcbiAqIC0gbmV3IEkxOE4oKSBjcmVhdGVzIGEgbmV3IGluc3RhbmNlXG4gKi9cbmV4cG9ydCBjb25zdCBJMThOID0gbmV3IFByb3h5KEkxOE5CYXNlLCB7XG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBJMThOKCkgaXMgaW52b2tlZCBhcyBhIGZ1bmN0aW9uICh3aXRob3V0IG5ldylcbiAgICogUmV0dXJucyB0aGUgc2luZ2xldG9uIGluc3RhbmNlXG4gICAqL1xuICBhcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpIHtcbiAgICByZXR1cm4gdGFyZ2V0LmdldEluc3RhbmNlKC4uLmFyZ3MpXG4gIH0sXG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIG5ldyBJMThOKCkgaXMgaW52b2tlZFxuICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlXG4gICAqL1xuICBjb25zdHJ1Y3QodGFyZ2V0LCBhcmdzKSB7XG4gICAgcmV0dXJuIG5ldyB0YXJnZXQoLi4uYXJncylcbiAgfSxcblxuICAvKipcbiAgICogUHJveHkgcHJvcGVydHkgYWNjZXNzIHRvIHRoZSBiYXNlIGNsYXNzXG4gICAqL1xuICBnZXQodGFyZ2V0LCBwcm9wKSB7XG4gICAgcmV0dXJuIHRhcmdldFtwcm9wXVxuICB9LFxufSlcblxuZXhwb3J0IGRlZmF1bHQgSTE4Ti5nZXRJbnN0YW5jZSgpXG4iXSwibWFwcGluZ3MiOiI4R0FBdUIsT0FBTyxPQUFPLENBQUUsT0FBUSxNQUFPLEtBQU0sS0NFNUQsSUFBTSxFQUFpQixDQUNyQixVQUFXLFFBRVgsU0FBVSxlQUVWLE1BQU8sQ0FBQyxTQUNSLE9BQVEsUUFDUixTQUFVLENBQUEsR0FJUixFQUFXLEtBa1JGLEVBQU8sSUFBSSxNQTNReEIsTUFBTSxFQUtKLFdBQUEsQ0FBWSxFQUFVLEdBQ3BCLEtBQUssTUFBUSxPQUFPLE9BQU8sTUFDM0IsS0FBSyxPQUFTLEdBQ2QsS0FBSyxjQUFjLEdBT3JCLGFBQUEsQ0FBYyxHQUNaLE1BQU0sU0FBRSxLQUFhLEdBQWdCLElBQUssS0FBbUIsR0FFdkQsRUFBaUIsRUFBUyxTQUFTLEtBQU8sRUFBVyxHQUFHLEtBQzlELEtBQUssT0FBUyxDQUFFLFNBQVUsS0FBbUIsR0FFN0MsTUFBTSxVQUFFLEVBQVksQ0FBQSxFQUFFLFNBQUUsRUFBVyxDQUFBLEdBQU8sS0FBSyxPQUl6QyxFQUFhLElBQUksSUFBSSxJQUFJLE9BQU8sS0FBSyxNQUFlLE9BQU8sS0FBSyxLQUl0RSxJQUFLLE1BQU0sS0FBVSxFQUFZLENBQy9CLE1BR00sRUFBYSxJQUhHLEVBQVUsSUFBVyxDQUFBLEtBQ3RCLEVBQVMsSUFBVyxDQUFBLEdBR3pDLEtBQUssY0FBYyxFQUFRLEdBRzdCLEtBQUssT0FBUyxL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
|
|
9
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5paWZlLm1pbi5qcyIsIm5hbWVzIjpbImkxOG4iLCJleHBvcnRzIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydGllcyIsIl9fZXNNb2R1bGUiLCJ2YWx1ZSIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwiZnJlZXplIiwibWV0aG9kIiwiYm9keSIsIkRFRkFVTFRfQ09ORklHIiwiZXh0ZW5zaW9uIiwibG9jYXRpb24iLCJsYW5ncyIsImxvY2FsZSIsIm92ZXJyaWRlIiwiaW5zdGFuY2UiLCJJMThOIiwiUHJveHkiLCJJMThOQmFzZSIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsInRoaXMiLCJjcmVhdGUiLCJsb2FkZWQiLCJwcm9jZXNzQ29uZmlnIiwicmVzdE9wdGlvbnMiLCJwYXJzZWRMb2NhdGlvbiIsImVuZHNXaXRoIiwiY29uZmlnIiwicHJlbG9hZGVkIiwiYWxsTG9jYWxlcyIsIlNldCIsImtleXMiLCJtZXJnZWRMYW5nIiwiYXBwbHlMYW5ndWFnZSIsImluaXQiLCJzZXRDdXJyZW50IiwiYWRkTGFuZ3VhZ2UiLCJsYW5nIiwicHJvY2Vzc0ZpbGUiLCJwdXNoIiwiZ2V0VmFsdWUiLCJrZXkiLCJnZXRGYWxsYmFja1ZhbHVlIiwidmFsdWVzIiwiZmluZCIsIm1ha2VTYWZlIiwic3RyIiwibWFwT2JqIiwiU3RyaW5nIiwicmF3IiwiZXNjYXBlZFN0ciIsInJlcGxhY2VBbGwiLCJtYXRjaGVkIiwiUmVnRXhwIiwicHV0Iiwic3RyaW5nIiwiY3VycmVudCIsImdldCIsImFyZ3MiLCJ0b2tlbnMiLCJtYXRjaCIsInRva2VuIiwidG9rZW5LZXkiLCJzbGljZSIsInJlcGxhY2UiLCJyZXNwb25zZSIsImZyb21GaWxlIiwicmF3VGV4dCIsImxpbmVzIiwic3BsaXQiLCJtYXRjaGVzIiwiaSIsImxlbmd0aCIsImV4ZWMiLCJ0cmltIiwiZ2V0SW5zdGFuY2UiLCJyZXNldEluc3RhbmNlIiwibG9hZExhbmciLCJ1c2VDYWNoZSIsImluY2x1ZGVzIiwibGFuZ0ZpbGUiLCJhc3luYyIsInVybCIsImZldGNoIiwib2siLCJFcnJvciIsInN0YXR1cyIsImVycm9yIiwiZmV0Y2hEYXRhIiwicHJvY2Vzc2VkRmlsZSIsImVyciIsImV4aXN0aW5nTGFuZyIsImdldExhbmdzIiwiYXBwbHkiLCJ0YXJnZXQiLCJ0aGlzQXJnIiwiY29uc3RydWN0IiwicHJvcCIsIm1pMThuX2RlZmF1bHQiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2ZldGNoLmpzIiwiLi4vc3JjL21pMThuLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGRlZmF1bHRPcHRpb25zID0gT2JqZWN0LmZyZWV6ZSh7IG1ldGhvZDogJ0dFVCcsIGJvZHk6ICcnIH0pXG4vKipcbiAqIEZldGNoZXMgYSByZXNvdXJjZSBmcm9tIHRoZSBuZXR3b3JrLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSBUaGUgVVJMIHRvIGZldGNoLlxuICogQHBhcmFtIHtPYmplY3R9IFtmZXRjaE9wdGlvbnM9e31dIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmZXRjaCByZXF1ZXN0LlxuICogQHBhcmFtIHtPYmplY3R9IFtmZXRjaE9wdGlvbnMuaGVhZGVyc10gLSBIZWFkZXJzIHRvIGluY2x1ZGUgaW4gdGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2ZldGNoT3B0aW9ucy5tZXRob2RdIC0gVGhlIEhUVFAgbWV0aG9kIHRvIHVzZSAoZS5nLiwgJ0dFVCcsICdQT1NUJykuXG4gKiBAcGFyYW0ge3N0cmluZ3xCdWZmZXJ9IFtmZXRjaE9wdGlvbnMuYm9keV0gLSBUaGUgYm9keSBvZiB0aGUgcmVxdWVzdC5cbiAqIEByZXR1cm4ge1Byb21pc2U8T2JqZWN0Pn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IHJldHVybi5vayAtIEluZGljYXRlcyBpZiB0aGUgcmVzcG9uc2Ugc3RhdHVzIGlzIGluIHRoZSByYW5nZSAyMDAtMjk5LlxuICogQHJldHVybiB7bnVtYmVyfSByZXR1cm4uc3RhdHVzIC0gVGhlIEhUVFAgc3RhdHVzIGNvZGUgb2YgdGhlIHJlc3BvbnNlLlxuICogQHJldHVybiB7c3RyaW5nfSByZXR1cm4uc3RhdHVzVGV4dCAtIFRoZSBIVFRQIHN0YXR1cyBtZXNzYWdlIG9mIHRoZSByZXNwb25zZS5cbiAqIEByZXR1cm4ge01hcDxzdHJpbmcsIHN0cmluZz59IHJldHVybi5oZWFkZXJzIC0gVGhlIGhlYWRlcnMgb2YgdGhlIHJlc3BvbnNlLlxuICogQHJldHVybiB7QnVmZmVyfSByZXR1cm4uYm9keSAtIFRoZSBib2R5IG9mIHRoZSByZXNwb25zZSBhcyBhIEJ1ZmZlci5cbiAqIEByZXR1cm4ge2Z1bmN0aW9uKCk6IFByb21pc2U8QnVmZmVyPn0gcmV0dXJuLmFycmF5QnVmZmVyIC0gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBwcm9taXNlIHJlc29sdmluZyB0byB0aGUgYm9keSBhcyBhbiBBcnJheUJ1ZmZlci5cbiAqIEByZXR1cm4ge2Z1bmN0aW9uKCk6IFByb21pc2U8T2JqZWN0Pn0gcmV0dXJuLmpzb24gLSBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBib2R5IHBhcnNlZCBhcyBKU09OLlxuICovXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaERhdGEodXJsKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBIVFRQIGVycm9yISBzdGF0dXM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApXG4gICAgfVxuICAgIGNvbnN0IGhhbmRsZXIgPSB1cmwuZW5kc1dpdGgoJy5sYW5nJykgPyAndGV4dCcgOiAnanNvbidcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2VbaGFuZGxlcl0oKVxuICAgIHJldHVybiBkYXRhXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignVGhlcmUgaGFzIGJlZW4gYSBwcm9ibGVtIHdpdGggeW91ciBmZXRjaCBvcGVyYXRpb246JywgZXJyb3IpXG4gICAgdGhyb3cgZXJyb3JcbiAgfVxufVxuIiwiaW1wb3J0IHsgZmV0Y2hEYXRhIH0gZnJvbSAnLi9mZXRjaC5qcydcblxuY29uc3QgREVGQVVMVF9DT05GSUcgPSB7XG4gIGV4dGVuc2lvbjogJy5sYW5nJyxcbiAgLy8gbG9jYWwgb3IgcmVtb3RlIGRpcmVjdG9yeSBjb250YWluaW5nIGxhbmd1YWdlIGZpbGVzXG4gIGxvY2F0aW9uOiAnYXNzZXRzL2xhbmcvJyxcbiAgLy8gbGlzdCBvZiBhdmFpbGFibGUgbG9jYWxlcywgaGFuZHkgZm9yIHBvcHVsYXRpbmcgc2VsZWN0b3IuXG4gIGxhbmdzOiBbJ2VuLVVTJ10sXG4gIGxvY2FsZTogJ2VuLVVTJywgLy8gaW5pdCB3aXRoIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2VcbiAgb3ZlcnJpZGU6IHt9LFxufVxuXG4vLyBTaW5nbGV0b24gaW5zdGFuY2UgaG9sZGVyXG5sZXQgaW5zdGFuY2UgPSBudWxsXG5cbi8qKlxuICogTWFpbiBpMThuIGNsYXNzXG4gKiBAY2xhc3MgSTE4TkJhc2VcbiAqIEBjbGFzc2Rlc2MgbWV0aG9kcyBhbmQgZGF0YSBzdG9yZSBmb3IgaTE4blxuICovXG5jbGFzcyBJMThOQmFzZSB7XG4gIC8qKlxuICAgKiBQcm9jZXNzIG9wdGlvbnMgYW5kIHN0YXJ0IHRoZSBtb2R1bGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSBERUZBVUxUX0NPTkZJRykge1xuICAgIHRoaXMubGFuZ3MgPSBPYmplY3QuY3JlYXRlKG51bGwpXG4gICAgdGhpcy5sb2FkZWQgPSBbXVxuICAgIHRoaXMucHJvY2Vzc0NvbmZpZyhvcHRpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIHBhcnNlIGFuZCBmb3JtYXQgY29uZmlnXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAqL1xuICBwcm9jZXNzQ29uZmlnKG9wdGlvbnMpIHtcbiAgICBjb25zdCB7IGxvY2F0aW9uLCAuLi5yZXN0T3B0aW9ucyB9ID0geyAuLi5ERUZBVUxUX0NPTkZJRywgLi4ub3B0aW9ucyB9XG4gICAgLy8gRW5zdXJlIGxvY2F0aW9uIGVuZHMgd2l0aCBhIHNsYXNoXG4gICAgY29uc3QgcGFyc2VkTG9jYXRpb24gPSBsb2NhdGlvbi5lbmRzV2l0aCgnLycpID8gbG9jYXRpb24gOiBgJHtsb2NhdGlvbn0vYFxuICAgIHRoaXMuY29uZmlnID0geyBsb2NhdGlvbjogcGFyc2VkTG9jYXRpb24sIC4uLnJlc3RPcHRpb25zIH1cblxuICAgIGNvbnN0IHsgcHJlbG9hZGVkID0ge30sIG92ZXJyaWRlID0ge30gfSA9IHRoaXMuY29uZmlnXG5cbiAgICAvLyBNZXJnZSBsb2NhbGVzIGZyb20gYm90aCBwcmVsb2FkZWQgYW5kIG92ZXJyaWRlXG4gICAgLy8gVGhpcyBzdXBwb3J0cyBsZWdhY3kgdXNhZ2Ugd2hlcmUgb3ZlcnJpZGUgZGVmaW5lZCBlbnRpcmUgbGFuZ3VhZ2VzXG4gICAgY29uc3QgYWxsTG9jYWxlcyA9IG5ldyBTZXQoWy4uLk9iamVjdC5rZXlzKHByZWxvYWRlZCksIC4uLk9iamVjdC5rZXlzKG92ZXJyaWRlKV0pXG5cbiAgICAvLyBBcHBseSBsYW5ndWFnZXMgZnJvbSBib3RoIHByZWxvYWRlZCBhbmQgb3ZlcnJpZGVcbiAgICAvLyBhcHBseUxhbmd1YWdlIHdpbGwgbWVyZ2UgdGhlbSBwcm9wZXJseSAoZXhpc3RpbmcgKyBwcmVsb2FkZWQgKyBvdmVycmlkZSlcbiAgICBmb3IgKGNvbnN0IGxvY2FsZSBvZiBhbGxMb2NhbGVzKSB7XG4gICAgICBjb25zdCBwcmVsb2FkZWRMYW5nID0gcHJlbG9hZGVkW2xvY2FsZV0gfHwge31cbiAgICAgIGNvbnN0IG92ZXJyaWRlTGFuZyA9IG92ZXJyaWRlW2xvY2FsZV0gfHwge31cbiAgICAgIC8vIE1lcmdlIHByZWxvYWRlZCBhbmQgb3ZlcnJpZGUgZm9yIHRoaXMgbG9jYWxlXG4gICAgICBjb25zdCBtZXJnZWRMYW5nID0geyAuLi5wcmVsb2FkZWRMYW5nLCAuLi5vdmVycmlkZUxhbmcgfVxuICAgICAgdGhpcy5hcHBseUxhbmd1YWdlKGxvY2FsZSwgbWVyZ2VkTGFuZylcbiAgICB9XG5cbiAgICB0aGlzLmxvY2FsZSA9IHRoaXMuY29uZmlnLmxvY2FsZSB8fCB0aGlzLmNvbmZpZy5sYW5nc1swXVxuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgbGFuZ3VhZ2UgYW5kIHNldCBkZWZhdWx0XG4gICAqIEBwYXJhbSAge09iamVjdH0gb3B0aW9uc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlfSAgICAgICAgcmVzb2x2ZXMgbGFuZ3VhZ2VcbiAgICovXG4gIGluaXQob3B0aW9ucykge1xuICAgIHRoaXMucHJvY2Vzc0NvbmZpZyh7IC4uLnRoaXMuY29uZmlnLCAuLi5vcHRpb25zIH0pXG4gICAgcmV0dXJuIHRoaXMuc2V0Q3VycmVudCh0aGlzLmxvY2FsZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbGFuZ3VhZ2UgdG8gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGxhbmd1YWdlc1xuICAgKiBAcGFyYW0ge1N0cmluZ30gbG9jYWxlXG4gICAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gbGFuZ1xuICAgKi9cbiAgYWRkTGFuZ3VhZ2UobG9jYWxlLCBsYW5nID0ge30pIHtcbiAgICBsYW5nID0gdHlwZW9mIGxhbmcgPT09ICdzdHJpbmcnID8gSTE4TkJhc2UucHJvY2Vzc0ZpbGUobGFuZykgOiBsYW5nXG4gICAgdGhpcy5hcHBseUxhbmd1YWdlKGxvY2FsZSwgbGFuZylcbiAgICB0aGlzLmxvYWRlZC5wdXNoKGxvY2FsZSlcbiAgICB0aGlzLmNvbmZpZy5sYW5ncy5wdXNoKGxvY2FsZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgYSBzdHJpbmcgZnJvbSBhIGxvYWRlZCBsYW5ndWFnZSBmaWxlXG4gICAqIEBwYXJhbSAge1N0cmluZ30ga2V5ICAtIHRoZSBrZXkgZm9yIHRoZSBzdHJpbmcgd2UgYXJlIHRyeWluZyB0byByZXRyaWV2ZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGxvY2FsZSAtIGxvY2FsZSB0byBjaGVjayBmb3IgdmFsdWVcbiAgICogQHJldHVybiB7U3RyaW5nfSBsYW5ndWFnZSBzdHJpbmcgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBnZXRWYWx1ZShrZXksIGxvY2FsZSA9IHRoaXMubG9jYWxlKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmxhbmdzW2xvY2FsZV0/LltrZXldXG4gICAgcmV0dXJuIHZhbHVlIHx8IHRoaXMuZ2V0RmFsbGJhY2tWYWx1ZShrZXkpXG4gIH1cblxuICAvKipcbiAgICogRmluZCBhIGxhbmd1YWdlIHRoYXQgaGFzIGRlc2lyZWQga2V5XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBrZXkgdmFsdWUga2V5XG4gICAqIEByZXR1cm4ge1N0cmluZ30gZm91bmQgdmFsdWUgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBnZXRGYWxsYmFja1ZhbHVlKGtleSkge1xuICAgIGNvbnN0IGZhbGxiYWNrTGFuZyA9IE9iamVjdC52YWx1ZXModGhpcy5sYW5ncykuZmluZChsYW5nID0+IGxhbmdba2V5XSlcbiAgICByZXR1cm4gZmFsbGJhY2tMYW5nPy5ba2V5XVxuICB9XG5cbiAgLyoqXG4gICAqIEVzY2FwZSB2YXJpYWJsZSBzeW50YXhcbiAgICogQHBhcmFtICB7U3RyaW5nfSBzdHJcbiAgICogQHJldHVybiB7U3RyaW5nfSAgICAgZXNjYXBlZCBzdHJcbiAgICovXG4gIG1ha2VTYWZlKHN0cikge1xuICAgIGNvbnN0IG1hcE9iaiA9IHtcbiAgICAgICd7JzogU3RyaW5nLnJhd2BcXHtgLFxuICAgICAgJ30nOiBTdHJpbmcucmF3YFxcfWAsXG4gICAgICAnfCc6IFN0cmluZy5yYXdgXFx8YCxcbiAgICB9XG5cbiAgICBjb25zdCBlc2NhcGVkU3RyID0gc3RyLnJlcGxhY2VBbGwoL1t7fXxdL2csIG1hdGNoZWQgPT4gbWFwT2JqW21hdGNoZWRdKVxuXG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoZXNjYXBlZFN0ciwgJ2cnKVxuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBvcmFyaWx5IHB1dCBhIHN0cmluZyBpbnRvIHRoZSBjdXJyZW50bHkgbG9hZGVkIGxhbmd1YWdlXG4gICAqIEBwYXJhbSAge1N0cmluZ30ga2V5XG4gICAqIEBwYXJhbSAge1N0cmluZ30gc3RyaW5nXG4gICAqIEByZXR1cm4ge1N0cmluZ30gc3RyaW5nIGluIGN1cnJlbnQgbGFuZ3VhZ2VcbiAgICovXG4gIHB1dChrZXksIHN0cmluZykge1xuICAgIHRoaXMuY3VycmVudFtrZXldID0gc3RyaW5nXG5cbiAgICByZXR1cm4gc3RyaW5nXG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgYXJndW1lbnRzIGZvciB0aGUgcmVxdWVzdGVkIHN0cmluZ1xuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGtleSAgdGhlIGtleSB3ZSB1c2UgdG8gbG9va3VwIG91ciB0cmFuc2xhdGlvblxuICAgKiBAcGFyYW0gIHttdWx0aX0gIGFyZ3MgIHN0cmluZywgbnVtYmVyIG9yIG9iamVjdCBjb250YWluaW5nIG91ciBhcmd1bWVudHNcbiAgICogQHJldHVybiB7U3RyaW5nfSAgICAgIHVwZGF0ZWQgc3RyaW5nIHRyYW5zbGF0aW9uXG4gICAqL1xuICBnZXQoa2V5LCBhcmdzKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZShrZXkpXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gTm8gcmVwbGFjZW1lbnQgbmVlZGVkIGlmIG5vIGFyZ3MgcHJvdmlkZWRcbiAgICBpZiAoIWFyZ3MpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuICAgIGNvbnN0IHRva2VucyA9IHZhbHVlLm1hdGNoKC9cXHtbXn1dKz9cXH0vZylcblxuICAgIC8vIE5vIHRva2VucyB0byByZXBsYWNlXG4gICAgaWYgKCF0b2tlbnMpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuICAgIC8vIE9iamVjdCBhcmdzOiByZXBsYWNlIGVhY2ggdG9rZW4gd2l0aCBjb3JyZXNwb25kaW5nIGtleVxuICAgIGlmICh0eXBlb2YgYXJncyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zKSB7XG4gICAgICAgIGNvbnN0IHRva2VuS2V5ID0gdG9rZW4uc2xpY2UoMSwgLTEpXG4gICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSh0aGlzLm1ha2VTYWZlKHRva2VuKSwgYXJnc1t0b2tlbktleV0gPz8gJycpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFByaW1pdGl2ZSBhcmdzOiByZXBsYWNlIGFsbCB0b2tlbnMgd2l0aCBzYW1lIHZhbHVlXG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2VBbGwoL1xce1tefV0rP1xcfS9nLCBhcmdzKVxuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBtZXRob2Q6IFByb2Nlc3MgYSBsYW5ndWFnZSBmaWxlIGZyb20gcmF3IHRleHRcbiAgICogQHBhcmFtICB7U3RyaW5nfSByZXNwb25zZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IHByb2Nlc3NlZCBsYW5ndWFnZVxuICAgKi9cbiAgc3RhdGljIHByb2Nlc3NGaWxlKHJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIEkxOE4uZnJvbUZpbGUocmVzcG9uc2UucmVwbGFjZUFsbCgnXFxuXFxuJywgJ1xcbicpKVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBtZXRob2Q6IFR1cm4gcmF3IHRleHQgZnJvbSB0aGUgbGFuZ3VhZ2UgZmlsZXMgaW50byBmYW5jeSBKU09OXG4gICAqIEBwYXJhbSAge1N0cmluZ30gcmF3VGV4dFxuICAgKiBAcmV0dXJuIHtPYmplY3R9IGNvbnZlcnRlZCBsYW5ndWFnZSBmaWxlXG4gICAqL1xuICBzdGF0aWMgZnJvbUZpbGUocmF3VGV4dCkge1xuICAgIGNvbnN0IGxpbmVzID0gcmF3VGV4dC5zcGxpdCgnXFxuJylcbiAgICBjb25zdCBsYW5nID0ge31cblxuICAgIGZvciAobGV0IG1hdGNoZXMsIGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gL14oLis/KSAqPz0gKj8oW15cXG5dKykvXG4gICAgICBtYXRjaGVzID0gcmVnZXguZXhlYyhsaW5lc1tpXSlcbiAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgIGxhbmdbbWF0Y2hlc1sxXV0gPSBtYXRjaGVzWzJdLnRyaW0oKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsYW5nXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzaW5nbGV0b24gaW5zdGFuY2VcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICogQHJldHVybiB7STE4TkJhc2V9IHNpbmdsZXRvbiBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIGdldEluc3RhbmNlKG9wdGlvbnMpIHtcbiAgICBpZiAoIWluc3RhbmNlKSB7XG4gICAgICBpbnN0YW5jZSA9IG5ldyBJMThOQmFzZShvcHRpb25zKVxuICAgIH1cbiAgICByZXR1cm4gaW5zdGFuY2VcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgc2luZ2xldG9uIGluc3RhbmNlICh1c2VmdWwgZm9yIHRlc3RpbmcpXG4gICAqL1xuICBzdGF0aWMgcmVzZXRJbnN0YW5jZSgpIHtcbiAgICBpbnN0YW5jZSA9IG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGEgcmVtb3RlbHkgc3RvcmVkIGxhbmd1YWdlIGZpbGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBsb2NhbGVcbiAgICogQHBhcmFtICB7Qm9vbGVhbn0gdXNlQ2FjaGVcbiAgICogQHJldHVybiB7UHJvbWlzZX0gICAgICAgcmVzb2x2ZXMgcmVzcG9uc2VcbiAgICovXG4gIGFzeW5jIGxvYWRMYW5nKGxvY2FsZSwgdXNlQ2FjaGUgPSB0cnVlKSB7XG4gICAgLy8gUmV0dXJuIGNhY2hlZCBsYW5ndWFnZSBpZiBhbHJlYWR5IGxvYWRlZFxuICAgIGlmICh0aGlzLmxvYWRlZC5pbmNsdWRlcyhsb2NhbGUpICYmIHVzZUNhY2hlKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5nc1tsb2NhbGVdXG4gICAgfVxuICAgIC8vIEZldGNoIGFuZCBwcm9jZXNzIGxhbmd1YWdlIGZpbGVcbiAgICBjb25zdCBsYW5nRmlsZSA9IGAke3RoaXMuY29uZmlnLmxvY2F0aW9ufSR7bG9jYWxlfSR7dGhpcy5jb25maWcuZXh0ZW5zaW9ufWBcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBsYW5nID0gYXdhaXQgZmV0Y2hEYXRhKGxhbmdGaWxlKVxuICAgICAgY29uc3QgcHJvY2Vzc2VkRmlsZSA9IEkxOE5CYXNlLnByb2Nlc3NGaWxlKGxhbmcpXG4gICAgICB0aGlzLmFwcGx5TGFuZ3VhZ2UobG9jYWxlLCBwcm9jZXNzZWRGaWxlKVxuICAgICAgcmV0dXJuIHRoaXMubGFuZ3NbbG9jYWxlXVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpXG4gICAgICByZXR1cm4gdGhpcy5hcHBseUxhbmd1YWdlKGxvY2FsZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogYXBwbGllcyBvdmVycmlkZXMgZnJvbSBjb25maWdcbiAgICogQHBhcmFtIHtTdHJpbmd9IGxvY2FsZVxuICAgKiBAcGFyYW0ge09iamVjdH0gbGFuZ1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IG92ZXJyaWRlbiBsYW5ndWFnZVxuICAgKi9cbiAgYXBwbHlMYW5ndWFnZShsb2NhbGUsIGxhbmcgPSB7fSkge1xuICAgIGNvbnN0IG92ZXJyaWRlID0gdGhpcy5jb25maWcub3ZlcnJpZGVbbG9jYWxlXSB8fCB7fVxuICAgIGNvbnN0IGV4aXN0aW5nTGFuZyA9IHRoaXMubGFuZ3NbbG9jYWxlXSB8fCB7fVxuICAgIHRoaXMubGFuZ3NbbG9jYWxlXSA9IHsgLi4uZXhpc3RpbmdMYW5nLCAuLi5sYW5nLCAuLi5vdmVycmlkZSB9XG4gICAgdGhpcy5sb2FkZWQucHVzaChsb2NhbGUpXG4gICAgcmV0dXJuIHRoaXMubGFuZ3NbbG9jYWxlXVxuICB9XG5cbiAgLyoqXG4gICAqIHJldHVybiBjdXJyZW50bHkgYXZhaWxhYmxlIGxhbmd1YWdlc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IGFsbCBjb25maWd1cmVkIGxhbmd1YWdlc1xuICAgKi9cbiAgZ2V0IGdldExhbmdzKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5sYW5nc1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHQgdG8gc2V0IHRoZSBjdXJyZW50IGxhbmd1YWdlIHRvIHRoZSBsb2NhbCBwcm92aWRlZFxuICAgKiBAcGFyYW0ge1N0cmluZ30gICBsb2NhbGVcbiAgICogQHJldHVybiB7UHJvbWlzZX0gbGFuZ3VhZ2VcbiAgICovXG4gIGFzeW5jIHNldEN1cnJlbnQobG9jYWxlID0gJ2VuLVVTJykge1xuICAgIGlmICghdGhpcy5sb2FkZWQuaW5jbHVkZXMobG9jYWxlKSkge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkTGFuZyhsb2NhbGUpXG4gICAgfVxuXG4gICAgdGhpcy5sb2NhbGUgPSBsb2NhbGVcbiAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLmxhbmdzW2xvY2FsZV1cblxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRcbiAgfVxufVxuXG4vKipcbiAqIFByb3h5IHdyYXBwZXIgdGhhdCBlbmFibGVzIHNpbmdsZXRvbiBwYXR0ZXJuOlxuICogLSBJMThOKCkgcmV0dXJucyB0aGUgc2luZ2xldG9uIGluc3RhbmNlXG4gKiAtIG5ldyBJMThOKCkgY3JlYXRlcyBhIG5ldyBpbnN0YW5jZVxuICovXG5leHBvcnQgY29uc3QgSTE4TiA9IG5ldyBQcm94eShJMThOQmFzZSwge1xuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gSTE4TigpIGlzIGludm9rZWQgYXMgYSBmdW5jdGlvbiAod2l0aG91dCBuZXcpXG4gICAqIFJldHVybnMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZVxuICAgKi9cbiAgYXBwbHkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7XG4gICAgcmV0dXJuIHRhcmdldC5nZXRJbnN0YW5jZSguLi5hcmdzKVxuICB9LFxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBuZXcgSTE4TigpIGlzIGludm9rZWRcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZVxuICAgKi9cbiAgY29uc3RydWN0KHRhcmdldCwgYXJncykge1xuICAgIHJldHVybiBuZXcgdGFyZ2V0KC4uLmFyZ3MpXG4gIH0sXG5cbiAgLyoqXG4gICAqIFByb3h5IHByb3BlcnR5IGFjY2VzcyB0byB0aGUgYmFzZSBjbGFzc1xuICAgKi9cbiAgZ2V0KHRhcmdldCwgcHJvcCkge1xuICAgIHJldHVybiB0YXJnZXRbcHJvcF1cbiAgfSxcbn0pXG5cbmV4cG9ydCBkZWZhdWx0IEkxOE4uZ2V0SW5zdGFuY2UoKVxuIl0sIm1hcHBpbmdzIjoiQSw4R0FBdUJFLE9BQU9NLE9BQU8sQ0FBRUMsT0FBUSxNQUFPQyxLQUFNLEtDRTVELElBQU1DLEVBQWlCLENBQ3JCQyxVQUFXLFFBRVhDLFNBQVUsZUFFVkMsTUFBTyxDQUFDLFNBQ1JDLE9BQVEsUUFDUkMsU0FBVSxDQUFDLEdBSVRDLEVBQVcsS0FrUkZDLEVBQU8sSUFBSUMsTUEzUXhCLE1BQU1DLEVBS0osV0FBQUMsQ0FBWUMsRUFBVVgsR0FDcEJZLEtBQUtULE1BQVFaLE9BQU9zQixPQUFPLE1BQzNCRCxLQUFLRSxPQUFTLEdBQ2RGLEtBQUtHLGNBQWNKLEVBQ3JCLENBTUEsYUFBQUksQ0FBY0osR0FDWixNQUFNVCxTQUFFQSxLQUFhYyxHQUFnQixJQUFLaEIsS0FBbUJXLEdBRXZETSxFQUFpQmYsRUFBU2dCLFNBQVMsS0FBT2hCLEVBQVcsR0FBR0EsS0FDOURVLEtBQUtPLE9BQVMsQ0FBRWpCLFNBQVVlLEtBQW1CRCxHQUU3QyxNQUFNSSxVQUFFQSxFQUFZLENBQUMsRUFBQWYsU0FB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
|
package/dist/i18n.iife.min.js.gz
CHANGED
|
Binary file
|
package/dist/i18n.umd.min.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
2
|
/**
|
|
3
3
|
@draggable/i18n - https://github.com/Draggable/i18n
|
|
4
|
-
Version: 1.1.
|
|
4
|
+
Version: 1.1.1
|
|
5
5
|
Author: Draggable https://draggable.io
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).i18n={})}(this,function(t){Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),Object.freeze({method:"GET",body:""});var e={extension:".lang",location:"assets/lang/",langs:["en-US"],locale:"en-US",override:{}},n=null,s=new Proxy(class t{constructor(t=e){this.langs=Object.create(null),this.loaded=[],this.processConfig(t)}processConfig(t){const{location:n,...s}={...e,...t},i=n.endsWith("/")?n:`${n}/`;this.config={location:i,...s};const{preloaded:a={},override:r={}}=this.config,o=new Set([...Object.keys(a),...Object.keys(r)]);for(const e of o){const t={...a[e]||{},...r[e]||{}};this.applyLanguage(e,t)}this.locale=this.config.locale||this.config.langs[0]}init(t){return this.processConfig({...this.config,...t}),this.setCurrent(this.locale)}addLanguage(e,n={}){n="string"==typeof n?t.processFile(n):n,this.applyLanguage(e,n),this.loaded.push(e),this.config.langs.push(e)}getValue(t,e=this.locale){return this.langs[e]?.[t]||this.getFallbackValue(t)}getFallbackValue(t){return Object.values(this.langs).find(e=>e[t])?.[t]}makeSafe(t){const e={"{":String.raw`\{`,"}":String.raw`\}`,"|":String.raw`\|`},n=t.replaceAll(/[{}|]/g,t=>e[t]);return new RegExp(n,"g")}put(t,e){return this.current[t]=e,e}get(t,e){let n=this.getValue(t);if(!n)return;if(!e)return n;const s=n.match(/\{[^}]+?\}/g);if(!s)return n;if("object"==typeof e)for(const i of s){const t=i.slice(1,-1);n=n.replace(this.makeSafe(i),e[t]??"")}else n=n.replaceAll(/\{[^}]+?\}/g,e);return n}static processFile(t){return s.fromFile(t.replaceAll("\n\n","\n"))}static fromFile(t){const e=t.split("\n"),n={};for(let s,i=0;i<e.length;i++)s=/^(.+?) *?= *?([^\n]+)/.exec(e[i]),s&&(n[s[1]]=s[2].trim());return n}static getInstance(e){return n||(n=new t(e)),n}static resetInstance(){n=null}async loadLang(e,n=!0){if(this.loaded.includes(e)&&n)return this.langs[e];const s=`${this.config.location}${e}${this.config.extension}`;try{const n=await async function(t){try{const e=await fetch(t);if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return await e[t.endsWith(".lang")?"text":"json"]()}catch(e){throw e}}(s),i=t.processFile(n);return this.applyLanguage(e,i),this.langs[e]}catch(i){return this.applyLanguage(e)}}applyLanguage(t,e={}){const n=this.config.override[t]||{},s=this.langs[t]||{};return this.langs[t]={...s,...e,...n},this.loaded.push(t),this.langs[t]}get getLangs(){return this.config.langs}async setCurrent(t="en-US"){return this.loaded.includes(t)||await this.loadLang(t),this.locale=t,this.current=this.langs[t],this.current}},{apply:(t,e,n)=>t.getInstance(...n),construct:(t,e)=>new t(...e),get:(t,e)=>t[e]}),i=s.getInstance();t.I18N=s,t.default=i});
|
|
9
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi51bWQubWluLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9mZXRjaC5qcyIsIi4uL3NyYy9taTE4bi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBkZWZhdWx0T3B0aW9ucyA9IE9iamVjdC5mcmVlemUoeyBtZXRob2Q6ICdHRVQnLCBib2R5OiAnJyB9KVxuLyoqXG4gKiBGZXRjaGVzIGEgcmVzb3VyY2UgZnJvbSB0aGUgbmV0d29yay5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gVGhlIFVSTCB0byBmZXRjaC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbZmV0Y2hPcHRpb25zPXt9XSAtIFRoZSBvcHRpb25zIGZvciB0aGUgZmV0Y2ggcmVxdWVzdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbZmV0Y2hPcHRpb25zLmhlYWRlcnNdIC0gSGVhZGVycyB0byBpbmNsdWRlIGluIHRoZSByZXF1ZXN0LlxuICogQHBhcmFtIHtzdHJpbmd9IFtmZXRjaE9wdGlvbnMubWV0aG9kXSAtIFRoZSBIVFRQIG1ldGhvZCB0byB1c2UgKGUuZy4sICdHRVQnLCAnUE9TVCcpLlxuICogQHBhcmFtIHtzdHJpbmd8QnVmZmVyfSBbZmV0Y2hPcHRpb25zLmJvZHldIC0gVGhlIGJvZHkgb2YgdGhlIHJlcXVlc3QuXG4gKiBAcmV0dXJuIHtQcm9taXNlPE9iamVjdD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXNwb25zZSBvYmplY3QuXG4gKiBAcmV0dXJuIHtib29sZWFufSByZXR1cm4ub2sgLSBJbmRpY2F0ZXMgaWYgdGhlIHJlc3BvbnNlIHN0YXR1cyBpcyBpbiB0aGUgcmFuZ2UgMjAwLTI5OS5cbiAqIEByZXR1cm4ge251bWJlcn0gcmV0dXJuLnN0YXR1cyAtIFRoZSBIVFRQIHN0YXR1cyBjb2RlIG9mIHRoZSByZXNwb25zZS5cbiAqIEByZXR1cm4ge3N0cmluZ30gcmV0dXJuLnN0YXR1c1RleHQgLSBUaGUgSFRUUCBzdGF0dXMgbWVzc2FnZSBvZiB0aGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJuIHtNYXA8c3RyaW5nLCBzdHJpbmc+fSByZXR1cm4uaGVhZGVycyAtIFRoZSBoZWFkZXJzIG9mIHRoZSByZXNwb25zZS5cbiAqIEByZXR1cm4ge0J1ZmZlcn0gcmV0dXJuLmJvZHkgLSBUaGUgYm9keSBvZiB0aGUgcmVzcG9uc2UgYXMgYSBCdWZmZXIuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbigpOiBQcm9taXNlPEJ1ZmZlcj59IHJldHVybi5hcnJheUJ1ZmZlciAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGJvZHkgYXMgYW4gQXJyYXlCdWZmZXIuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbigpOiBQcm9taXNlPE9iamVjdD59IHJldHVybi5qc29uIC0gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBwcm9taXNlIHJlc29sdmluZyB0byB0aGUgYm9keSBwYXJzZWQgYXMgSlNPTi5cbiAqL1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHVybCkge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKVxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSFRUUCBlcnJvciEgc3RhdHVzOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxuICAgIH1cbiAgICBjb25zdCBoYW5kbGVyID0gdXJsLmVuZHNXaXRoKCcubGFuZycpID8gJ3RleHQnIDogJ2pzb24nXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlW2hhbmRsZXJdKClcbiAgICByZXR1cm4gZGF0YVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1RoZXJlIGhhcyBiZWVuIGEgcHJvYmxlbSB3aXRoIHlvdXIgZmV0Y2ggb3BlcmF0aW9uOicsIGVycm9yKVxuICAgIHRocm93IGVycm9yXG4gIH1cbn1cbiIsImltcG9ydCB7IGZldGNoRGF0YSB9IGZyb20gJy4vZmV0Y2guanMnXG5cbmNvbnN0IERFRkFVTFRfQ09ORklHID0ge1xuICBleHRlbnNpb246ICcubGFuZycsXG4gIC8vIGxvY2FsIG9yIHJlbW90ZSBkaXJlY3RvcnkgY29udGFpbmluZyBsYW5ndWFnZSBmaWxlc1xuICBsb2NhdGlvbjogJ2Fzc2V0cy9sYW5nLycsXG4gIC8vIGxpc3Qgb2YgYXZhaWxhYmxlIGxvY2FsZXMsIGhhbmR5IGZvciBwb3B1bGF0aW5nIHNlbGVjdG9yLlxuICBsYW5nczogWydlbi1VUyddLFxuICBsb2NhbGU6ICdlbi1VUycsIC8vIGluaXQgd2l0aCB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlXG4gIG92ZXJyaWRlOiB7fSxcbn1cblxuLy8gU2luZ2xldG9uIGluc3RhbmNlIGhvbGRlclxubGV0IGluc3RhbmNlID0gbnVsbFxuXG4vKipcbiAqIE1haW4gaTE4biBjbGFzc1xuICogQGNsYXNzIEkxOE5CYXNlXG4gKiBAY2xhc3NkZXNjIG1ldGhvZHMgYW5kIGRhdGEgc3RvcmUgZm9yIGkxOG5cbiAqL1xuY2xhc3MgSTE4TkJhc2Uge1xuICAvKipcbiAgICogUHJvY2VzcyBvcHRpb25zIGFuZCBzdGFydCB0aGUgbW9kdWxlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zID0gREVGQVVMVF9DT05GSUcpIHtcbiAgICB0aGlzLmxhbmdzID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuICAgIHRoaXMubG9hZGVkID0gW11cbiAgICB0aGlzLnByb2Nlc3NDb25maWcob3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBwYXJzZSBhbmQgZm9ybWF0IGNvbmZpZ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgKi9cbiAgcHJvY2Vzc0NvbmZpZyhvcHRpb25zKSB7XG4gICAgY29uc3QgeyBsb2NhdGlvbiwgLi4ucmVzdE9wdGlvbnMgfSA9IHsgLi4uREVGQVVMVF9DT05GSUcsIC4uLm9wdGlvbnMgfVxuICAgIC8vIEVuc3VyZSBsb2NhdGlvbiBlbmRzIHdpdGggYSBzbGFzaFxuICAgIGNvbnN0IHBhcnNlZExvY2F0aW9uID0gbG9jYXRpb24uZW5kc1dpdGgoJy8nKSA/IGxvY2F0aW9uIDogYCR7bG9jYXRpb259L2BcbiAgICB0aGlzLmNvbmZpZyA9IHsgbG9jYXRpb246IHBhcnNlZExvY2F0aW9uLCAuLi5yZXN0T3B0aW9ucyB9XG5cbiAgICBjb25zdCB7IHByZWxvYWRlZCA9IHt9LCBvdmVycmlkZSA9IHt9IH0gPSB0aGlzLmNvbmZpZ1xuXG4gICAgLy8gTWVyZ2UgbG9jYWxlcyBmcm9tIGJvdGggcHJlbG9hZGVkIGFuZCBvdmVycmlkZVxuICAgIC8vIFRoaXMgc3VwcG9ydHMgbGVnYWN5IHVzYWdlIHdoZXJlIG92ZXJyaWRlIGRlZmluZWQgZW50aXJlIGxhbmd1YWdlc1xuICAgIGNvbnN0IGFsbExvY2FsZXMgPSBuZXcgU2V0KFsuLi5PYmplY3Qua2V5cyhwcmVsb2FkZWQpLCAuLi5PYmplY3Qua2V5cyhvdmVycmlkZSldKVxuXG4gICAgLy8gQXBwbHkgbGFuZ3VhZ2VzIGZyb20gYm90aCBwcmVsb2FkZWQgYW5kIG92ZXJyaWRlXG4gICAgLy8gYXBwbHlMYW5ndWFnZSB3aWxsIG1lcmdlIHRoZW0gcHJvcGVybHkgKGV4aXN0aW5nICsgcHJlbG9hZGVkICsgb3ZlcnJpZGUpXG4gICAgZm9yIChjb25zdCBsb2NhbGUgb2YgYWxsTG9jYWxlcykge1xuICAgICAgY29uc3QgcHJlbG9hZGVkTGFuZyA9IHByZWxvYWRlZFtsb2NhbGVdIHx8IHt9XG4gICAgICBjb25zdCBvdmVycmlkZUxhbmcgPSBvdmVycmlkZVtsb2NhbGVdIHx8IHt9XG4gICAgICAvLyBNZXJnZSBwcmVsb2FkZWQgYW5kIG92ZXJyaWRlIGZvciB0aGlzIGxvY2FsZVxuICAgICAgY29uc3QgbWVyZ2VkTGFuZyA9IHsgLi4ucHJlbG9hZGVkTGFuZywgLi4ub3ZlcnJpZGVMYW5nIH1cbiAgICAgIHRoaXMuYXBwbHlMYW5ndWFnZShsb2NhbGUsIG1lcmdlZExhbmcpXG4gICAgfVxuXG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLmNvbmZpZy5sb2NhbGUgfHwgdGhpcy5jb25maWcubGFuZ3NbMF1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGxhbmd1YWdlIGFuZCBzZXQgZGVmYXVsdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IG9wdGlvbnNcbiAgICogQHJldHVybiB7UHJvbWlzZX0gICAgICAgIHJlc29sdmVzIGxhbmd1YWdlXG4gICAqL1xuICBpbml0KG9wdGlvbnMpIHtcbiAgICB0aGlzLnByb2Nlc3NDb25maWcoeyAuLi50aGlzLmNvbmZpZywgLi4ub3B0aW9ucyB9KVxuICAgIHJldHVybiB0aGlzLnNldEN1cnJlbnQodGhpcy5sb2NhbGUpXG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGxhbmd1YWdlIHRvIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXNcbiAgICogQHBhcmFtIHtTdHJpbmd9IGxvY2FsZVxuICAgKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IGxhbmdcbiAgICovXG4gIGFkZExhbmd1YWdlKGxvY2FsZSwgbGFuZyA9IHt9KSB7XG4gICAgbGFuZyA9IHR5cGVvZiBsYW5nID09PSAnc3RyaW5nJyA/IEkxOE5CYXNlLnByb2Nlc3NGaWxlKGxhbmcpIDogbGFuZ1xuICAgIHRoaXMuYXBwbHlMYW5ndWFnZShsb2NhbGUsIGxhbmcpXG4gICAgdGhpcy5sb2FkZWQucHVzaChsb2NhbGUpXG4gICAgdGhpcy5jb25maWcubGFuZ3MucHVzaChsb2NhbGUpXG4gIH1cblxuICAvKipcbiAgICogZ2V0IGEgc3RyaW5nIGZyb20gYSBsb2FkZWQgbGFuZ3VhZ2UgZmlsZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGtleSAgLSB0aGUga2V5IGZvciB0aGUgc3RyaW5nIHdlIGFyZSB0cnlpbmcgdG8gcmV0cmlldmVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBsb2NhbGUgLSBsb2NhbGUgdG8gY2hlY2sgZm9yIHZhbHVlXG4gICAqIEByZXR1cm4ge1N0cmluZ30gbGFuZ3VhZ2Ugc3RyaW5nIG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgZ2V0VmFsdWUoa2V5LCBsb2NhbGUgPSB0aGlzLmxvY2FsZSkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5sYW5nc1tsb2NhbGVdPy5ba2V5XVxuICAgIHJldHVybiB2YWx1ZSB8fCB0aGlzLmdldEZhbGxiYWNrVmFsdWUoa2V5KVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYSBsYW5ndWFnZSB0aGF0IGhhcyBkZXNpcmVkIGtleVxuICAgKiBAcGFyYW0ge1N0cmluZ30ga2V5IHZhbHVlIGtleVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IGZvdW5kIHZhbHVlIG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgZ2V0RmFsbGJhY2tWYWx1ZShrZXkpIHtcbiAgICBjb25zdCBmYWxsYmFja0xhbmcgPSBPYmplY3QudmFsdWVzKHRoaXMubGFuZ3MpLmZpbmQobGFuZyA9PiBsYW5nW2tleV0pXG4gICAgcmV0dXJuIGZhbGxiYWNrTGFuZz8uW2tleV1cbiAgfVxuXG4gIC8qKlxuICAgKiBFc2NhcGUgdmFyaWFibGUgc3ludGF4XG4gICAqIEBwYXJhbSAge1N0cmluZ30gc3RyXG4gICAqIEByZXR1cm4ge1N0cmluZ30gICAgIGVzY2FwZWQgc3RyXG4gICAqL1xuICBtYWtlU2FmZShzdHIpIHtcbiAgICBjb25zdCBtYXBPYmogPSB7XG4gICAgICAneyc6IFN0cmluZy5yYXdgXFx7YCxcbiAgICAgICd9JzogU3RyaW5nLnJhd2BcXH1gLFxuICAgICAgJ3wnOiBTdHJpbmcucmF3YFxcfGAsXG4gICAgfVxuXG4gICAgY29uc3QgZXNjYXBlZFN0ciA9IHN0ci5yZXBsYWNlQWxsKC9be318XS9nLCBtYXRjaGVkID0+IG1hcE9ialttYXRjaGVkXSlcblxuICAgIHJldHVybiBuZXcgUmVnRXhwKGVzY2FwZWRTdHIsICdnJylcbiAgfVxuXG4gIC8qKlxuICAgKiBUZW1wb3JhcmlseSBwdXQgYSBzdHJpbmcgaW50byB0aGUgY3VycmVudGx5IGxvYWRlZCBsYW5ndWFnZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGtleVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IHN0cmluZ1xuICAgKiBAcmV0dXJuIHtTdHJpbmd9IHN0cmluZyBpbiBjdXJyZW50IGxhbmd1YWdlXG4gICAqL1xuICBwdXQoa2V5LCBzdHJpbmcpIHtcbiAgICB0aGlzLmN1cnJlbnRba2V5XSA9IHN0cmluZ1xuXG4gICAgcmV0dXJuIHN0cmluZ1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGFyZ3VtZW50cyBmb3IgdGhlIHJlcXVlc3RlZCBzdHJpbmdcbiAgICogQHBhcmFtICB7U3RyaW5nfSBrZXkgIHRoZSBrZXkgd2UgdXNlIHRvIGxvb2t1cCBvdXIgdHJhbnNsYXRpb25cbiAgICogQHBhcmFtICB7bXVsdGl9ICBhcmdzICBzdHJpbmcsIG51bWJlciBvciBvYmplY3QgY29udGFpbmluZyBvdXIgYXJndW1lbnRzXG4gICAqIEByZXR1cm4ge1N0cmluZ30gICAgICB1cGRhdGVkIHN0cmluZyB0cmFuc2xhdGlvblxuICAgKi9cbiAgZ2V0KGtleSwgYXJncykge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoa2V5KVxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIE5vIHJlcGxhY2VtZW50IG5lZWRlZCBpZiBubyBhcmdzIHByb3ZpZGVkXG4gICAgaWYgKCFhcmdzKSB7XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbnMgPSB2YWx1ZS5tYXRjaCgvXFx7W159XSs/XFx9L2cpXG5cbiAgICAvLyBObyB0b2tlbnMgdG8gcmVwbGFjZVxuICAgIGlmICghdG9rZW5zKSB7XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG5cbiAgICAvLyBPYmplY3QgYXJnczogcmVwbGFjZSBlYWNoIHRva2VuIHdpdGggY29ycmVzcG9uZGluZyBrZXlcbiAgICBpZiAodHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnKSB7XG4gICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2Vucykge1xuICAgICAgICBjb25zdCB0b2tlbktleSA9IHRva2VuLnNsaWNlKDEsIC0xKVxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UodGhpcy5tYWtlU2FmZSh0b2tlbiksIGFyZ3NbdG9rZW5LZXldID8/ICcnKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQcmltaXRpdmUgYXJnczogcmVwbGFjZSBhbGwgdG9rZW5zIHdpdGggc2FtZSB2YWx1ZVxuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlQWxsKC9cXHtbXn1dKz9cXH0vZywgYXJncylcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0aWMgbWV0aG9kOiBQcm9jZXNzIGEgbGFuZ3VhZ2UgZmlsZSBmcm9tIHJhdyB0ZXh0XG4gICAqIEBwYXJhbSAge1N0cmluZ30gcmVzcG9uc2VcbiAgICogQHJldHVybiB7T2JqZWN0fSBwcm9jZXNzZWQgbGFuZ3VhZ2VcbiAgICovXG4gIHN0YXRpYyBwcm9jZXNzRmlsZShyZXNwb25zZSkge1xuICAgIHJldHVybiBJMThOLmZyb21GaWxlKHJlc3BvbnNlLnJlcGxhY2VBbGwoJ1xcblxcbicsICdcXG4nKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0aWMgbWV0aG9kOiBUdXJuIHJhdyB0ZXh0IGZyb20gdGhlIGxhbmd1YWdlIGZpbGVzIGludG8gZmFuY3kgSlNPTlxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IHJhd1RleHRcbiAgICogQHJldHVybiB7T2JqZWN0fSBjb252ZXJ0ZWQgbGFuZ3VhZ2UgZmlsZVxuICAgKi9cbiAgc3RhdGljIGZyb21GaWxlKHJhd1RleHQpIHtcbiAgICBjb25zdCBsaW5lcyA9IHJhd1RleHQuc3BsaXQoJ1xcbicpXG4gICAgY29uc3QgbGFuZyA9IHt9XG5cbiAgICBmb3IgKGxldCBtYXRjaGVzLCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCByZWdleCA9IC9eKC4rPykgKj89ICo/KFteXFxuXSspL1xuICAgICAgbWF0Y2hlcyA9IHJlZ2V4LmV4ZWMobGluZXNbaV0pXG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICBsYW5nW21hdGNoZXNbMV1dID0gbWF0Y2hlc1syXS50cmltKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGFuZ1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2luZ2xldG9uIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAqIEByZXR1cm4ge0kxOE5CYXNlfSBzaW5nbGV0b24gaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBnZXRJbnN0YW5jZShvcHRpb25zKSB7XG4gICAgaWYgKCFpbnN0YW5jZSkge1xuICAgICAgaW5zdGFuY2UgPSBuZXcgSTE4TkJhc2Uob3B0aW9ucylcbiAgICB9XG4gICAgcmV0dXJuIGluc3RhbmNlXG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSAodXNlZnVsIGZvciB0ZXN0aW5nKVxuICAgKi9cbiAgc3RhdGljIHJlc2V0SW5zdGFuY2UoKSB7XG4gICAgaW5zdGFuY2UgPSBudWxsXG4gIH1cblxuICAvKipcbiAgICogTG9hZCBhIHJlbW90ZWx5IHN0b3JlZCBsYW5ndWFnZSBmaWxlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gbG9jYWxlXG4gICAqIEBwYXJhbSAge0Jvb2xlYW59IHVzZUNhY2hlXG4gICAqIEByZXR1cm4ge1Byb21pc2V9ICAgICAgIHJlc29sdmVzIHJlc3BvbnNlXG4gICAqL1xuICBhc3luYyBsb2FkTGFuZyhsb2NhbGUsIHVzZUNhY2hlID0gdHJ1ZSkge1xuICAgIC8vIFJldHVybiBjYWNoZWQgbGFuZ3VhZ2UgaWYgYWxyZWFkeSBsb2FkZWRcbiAgICBpZiAodGhpcy5sb2FkZWQuaW5jbHVkZXMobG9jYWxlKSAmJiB1c2VDYWNoZSkge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ3NbbG9jYWxlXVxuICAgIH1cbiAgICAvLyBGZXRjaCBhbmQgcHJvY2VzcyBsYW5ndWFnZSBmaWxlXG4gICAgY29uc3QgbGFuZ0ZpbGUgPSBgJHt0aGlzLmNvbmZpZy5sb2NhdGlvbn0ke2xvY2FsZX0ke3RoaXMuY29uZmlnLmV4dGVuc2lvbn1gXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbGFuZyA9IGF3YWl0IGZldGNoRGF0YShsYW5nRmlsZSlcbiAgICAgIGNvbnN0IHByb2Nlc3NlZEZpbGUgPSBJMThOQmFzZS5wcm9jZXNzRmlsZShsYW5nKVxuICAgICAgdGhpcy5hcHBseUxhbmd1YWdlKGxvY2FsZSwgcHJvY2Vzc2VkRmlsZSlcbiAgICAgIHJldHVybiB0aGlzLmxhbmdzW2xvY2FsZV1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgICAgcmV0dXJuIHRoaXMuYXBwbHlMYW5ndWFnZShsb2NhbGUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGFwcGxpZXMgb3ZlcnJpZGVzIGZyb20gY29uZmlnXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBsb2NhbGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGxhbmdcbiAgICogQHJldHVybiB7T2JqZWN0fSBvdmVycmlkZW4gbGFuZ3VhZ2VcbiAgICovXG4gIGFwcGx5TGFuZ3VhZ2UobG9jYWxlLCBsYW5nID0ge30pIHtcbiAgICBjb25zdCBvdmVycmlkZSA9IHRoaXMuY29uZmlnLm92ZXJyaWRlW2xvY2FsZV0gfHwge31cbiAgICBjb25zdCBleGlzdGluZ0xhbmcgPSB0aGlzLmxhbmdzW2xvY2FsZV0gfHwge31cbiAgICB0aGlzLmxhbmdzW2xvY2FsZV0gPSB7IC4uLmV4aXN0aW5nTGFuZywgLi4ubGFuZywgLi4ub3ZlcnJpZGUgfVxuICAgIHRoaXMubG9hZGVkLnB1c2gobG9jYWxlKVxuICAgIHJldHVybiB0aGlzLmxhbmdzW2xvY2FsZV1cbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm4gY3VycmVudGx5IGF2YWlsYWJsZSBsYW5ndWFnZXNcbiAgICogQHJldHVybiB7T2JqZWN0fSBhbGwgY29uZmlndXJlZCBsYW5ndWFnZXNcbiAgICovXG4gIGdldCBnZXRMYW5ncygpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcubGFuZ3NcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0IHRvIHNldCB0aGUgY3VycmVudCBsYW5ndWFnZSB0byB0aGUgbG9jYWwgcHJvdmlkZWRcbiAgICogQHBhcmFtIHtTdHJpbmd9ICAgbG9jYWxlXG4gICAqIEByZXR1cm4ge1Byb21pc2V9IGxhbmd1YWdlXG4gICAqL1xuICBhc3luYyBzZXRDdXJyZW50KGxvY2FsZSA9ICdlbi1VUycpIHtcbiAgICBpZiAoIXRoaXMubG9hZGVkLmluY2x1ZGVzKGxvY2FsZSkpIHtcbiAgICAgIGF3YWl0IHRoaXMubG9hZExhbmcobG9jYWxlKVxuICAgIH1cblxuICAgIHRoaXMubG9jYWxlID0gbG9jYWxlXG4gICAgdGhpcy5jdXJyZW50ID0gdGhpcy5sYW5nc1tsb2NhbGVdXG5cbiAgICByZXR1cm4gdGhpcy5jdXJyZW50XG4gIH1cbn1cblxuLyoqXG4gKiBQcm94eSB3cmFwcGVyIHRoYXQgZW5hYmxlcyBzaW5nbGV0b24gcGF0dGVybjpcbiAqIC0gSTE4TigpIHJldHVybnMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZVxuICogLSBuZXcgSTE4TigpIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2VcbiAqL1xuZXhwb3J0IGNvbnN0IEkxOE4gPSBuZXcgUHJveHkoSTE4TkJhc2UsIHtcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIEkxOE4oKSBpcyBpbnZva2VkIGFzIGEgZnVuY3Rpb24gKHdpdGhvdXQgbmV3KVxuICAgKiBSZXR1cm5zIHRoZSBzaW5nbGV0b24gaW5zdGFuY2VcbiAgICovXG4gIGFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncykge1xuICAgIHJldHVybiB0YXJnZXQuZ2V0SW5zdGFuY2UoLi4uYXJncylcbiAgfSxcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gbmV3IEkxOE4oKSBpcyBpbnZva2VkXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2VcbiAgICovXG4gIGNvbnN0cnVjdCh0YXJnZXQsIGFyZ3MpIHtcbiAgICByZXR1cm4gbmV3IHRhcmdldCguLi5hcmdzKVxuICB9LFxuXG4gIC8qKlxuICAgKiBQcm94eSBwcm9wZXJ0eSBhY2Nlc3MgdG8gdGhlIGJhc2UgY2xhc3NcbiAgICovXG4gIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICByZXR1cm4gdGFyZ2V0W3Byb3BdXG4gIH0sXG59KVxuXG5leHBvcnQgZGVmYXVsdCBJMThOLmdldEluc3RhbmNlKClcbiJdLCJtYXBwaW5ncyI6InVUQUF1QixPQUFPLE9BQU8sQ0FBRSxPQUFRLE1BQU8sS0FBTSxLQ0U1RCxJQUFNLEVBQWlCLENBQ3JCLFVBQVcsUUFFWCxTQUFVLGVBRVYsTUFBTyxDQUFDLFNBQ1IsT0FBUSxRQUNSLFNBQVUsQ0FBQSxHQUlSLEVBQVcsS0FrUkYsRUFBTyxJQUFJLE1BM1F4QixNQUFNLEVBS0osV0FBQSxDQUFZLEVBQVUsR0FDcEIsS0FBSyxNQUFRLE9BQU8sT0FBTyxNQUMzQixLQUFLLE9BQVMsR0FDZCxLQUFLLGNBQWMsR0FPckIsYUFBQSxDQUFjLEdBQ1osTUFBTSxTQUFFLEtBQWEsR0FBZ0IsSUFBSyxLQUFtQixHQUV2RCxFQUFpQixFQUFTLFNBQVMsS0FBTyxFQUFXLEdBQUcsS0FDOUQsS0FBSyxPQUFTLENBQUUsU0FBVSxLQUFtQixHQUU3QyxNQUFNLFVBQUUsRUFBWSxDQUFBLEVBQUUsU0FBRSxFQUFXLENBQUEsR0FBTyxLQUFLLE9BSXpDLEVBQWEsSUFBSSxJQUFJLElBQUksT0FBTyxLQUFLLE1BQWUsT0FBTyxLQUFLLEtBSXRFLElBQUssTUFBTSxLQUFVLEVBQVksQ0FDL0IsTUFHTSxFQUFhLElBSEcsRUFBVSxJQUFXLENBQUEsS0FDdEIsRUFBUyxJQUFXLENBQUEsR0FHekMsS0FBSyxjQUFjLEVBQVEsR0FHN0IsS0FBSyxPQUFTLEtB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
|
|
9
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi51bWQubWluLmpzIiwibmFtZXMiOlsiZ2xvYmFsIiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJnbG9iYWxUaGlzIiwic2VsZiIsImkxOG4iLCJ0aGlzIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydGllcyIsIl9fZXNNb2R1bGUiLCJ2YWx1ZSIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwiZnJlZXplIiwibWV0aG9kIiwiYm9keSIsIkRFRkFVTFRfQ09ORklHIiwiZXh0ZW5zaW9uIiwibG9jYXRpb24iLCJsYW5ncyIsImxvY2FsZSIsIm92ZXJyaWRlIiwiaW5zdGFuY2UiLCJJMThOIiwiUHJveHkiLCJJMThOQmFzZSIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImNyZWF0ZSIsImxvYWRlZCIsInByb2Nlc3NDb25maWciLCJyZXN0T3B0aW9ucyIsInBhcnNlZExvY2F0aW9uIiwiZW5kc1dpdGgiLCJjb25maWciLCJwcmVsb2FkZWQiLCJhbGxMb2NhbGVzIiwiU2V0Iiwia2V5cyIsIm1lcmdlZExhbmciLCJhcHBseUxhbmd1YWdlIiwiaW5pdCIsInNldEN1cnJlbnQiLCJhZGRMYW5ndWFnZSIsImxhbmciLCJwcm9jZXNzRmlsZSIsInB1c2giLCJnZXRWYWx1ZSIsImtleSIsImdldEZhbGxiYWNrVmFsdWUiLCJ2YWx1ZXMiLCJmaW5kIiwibWFrZVNhZmUiLCJzdHIiLCJtYXBPYmoiLCJTdHJpbmciLCJyYXciLCJlc2NhcGVkU3RyIiwicmVwbGFjZUFsbCIsIm1hdGNoZWQiLCJSZWdFeHAiLCJwdXQiLCJzdHJpbmciLCJjdXJyZW50IiwiZ2V0IiwiYXJncyIsInRva2VucyIsIm1hdGNoIiwidG9rZW4iLCJ0b2tlbktleSIsInNsaWNlIiwicmVwbGFjZSIsInJlc3BvbnNlIiwiZnJvbUZpbGUiLCJyYXdUZXh0IiwibGluZXMiLCJzcGxpdCIsIm1hdGNoZXMiLCJpIiwibGVuZ3RoIiwiZXhlYyIsInRyaW0iLCJnZXRJbnN0YW5jZSIsInJlc2V0SW5zdGFuY2UiLCJsb2FkTGFuZyIsInVzZUNhY2hlIiwiaW5jbHVkZXMiLCJsYW5nRmlsZSIsImFzeW5jIiwidXJsIiwiZmV0Y2giLCJvayIsIkVycm9yIiwic3RhdHVzIiwiZXJyb3IiLCJmZXRjaERhdGEiLCJwcm9jZXNzZWRGaWxlIiwiZXJyIiwiZXhpc3RpbmdMYW5nIiwiZ2V0TGFuZ3MiLCJhcHBseSIsInRhcmdldCIsInRoaXNBcmciLCJjb25zdHJ1Y3QiLCJwcm9wIiwibWkxOG5fZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi9zcmMvZmV0Y2guanMiLCIuLi9zcmMvbWkxOG4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZGVmYXVsdE9wdGlvbnMgPSBPYmplY3QuZnJlZXplKHsgbWV0aG9kOiAnR0VUJywgYm9keTogJycgfSlcbi8qKlxuICogRmV0Y2hlcyBhIHJlc291cmNlIGZyb20gdGhlIG5ldHdvcmsuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIFRoZSBVUkwgdG8gZmV0Y2guXG4gKiBAcGFyYW0ge09iamVjdH0gW2ZldGNoT3B0aW9ucz17fV0gLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZldGNoIHJlcXVlc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW2ZldGNoT3B0aW9ucy5oZWFkZXJzXSAtIEhlYWRlcnMgdG8gaW5jbHVkZSBpbiB0aGUgcmVxdWVzdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbZmV0Y2hPcHRpb25zLm1ldGhvZF0gLSBUaGUgSFRUUCBtZXRob2QgdG8gdXNlIChlLmcuLCAnR0VUJywgJ1BPU1QnKS5cbiAqIEBwYXJhbSB7c3RyaW5nfEJ1ZmZlcn0gW2ZldGNoT3B0aW9ucy5ib2R5XSAtIFRoZSBib2R5IG9mIHRoZSByZXF1ZXN0LlxuICogQHJldHVybiB7UHJvbWlzZTxPYmplY3Q+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICogQHJldHVybiB7Ym9vbGVhbn0gcmV0dXJuLm9rIC0gSW5kaWNhdGVzIGlmIHRoZSByZXNwb25zZSBzdGF0dXMgaXMgaW4gdGhlIHJhbmdlIDIwMC0yOTkuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IHJldHVybi5zdGF0dXMgLSBUaGUgSFRUUCBzdGF0dXMgY29kZSBvZiB0aGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IHJldHVybi5zdGF0dXNUZXh0IC0gVGhlIEhUVFAgc3RhdHVzIG1lc3NhZ2Ugb2YgdGhlIHJlc3BvbnNlLlxuICogQHJldHVybiB7TWFwPHN0cmluZywgc3RyaW5nPn0gcmV0dXJuLmhlYWRlcnMgLSBUaGUgaGVhZGVycyBvZiB0aGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJuIHtCdWZmZXJ9IHJldHVybi5ib2R5IC0gVGhlIGJvZHkgb2YgdGhlIHJlc3BvbnNlIGFzIGEgQnVmZmVyLlxuICogQHJldHVybiB7ZnVuY3Rpb24oKTogUHJvbWlzZTxCdWZmZXI+fSByZXR1cm4uYXJyYXlCdWZmZXIgLSBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBib2R5IGFzIGFuIEFycmF5QnVmZmVyLlxuICogQHJldHVybiB7ZnVuY3Rpb24oKTogUHJvbWlzZTxPYmplY3Q+fSByZXR1cm4uanNvbiAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGJvZHkgcGFyc2VkIGFzIEpTT04uXG4gKi9cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoRGF0YSh1cmwpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybClcbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEhUVFAgZXJyb3IhIHN0YXR1czogJHtyZXNwb25zZS5zdGF0dXN9YClcbiAgICB9XG4gICAgY29uc3QgaGFuZGxlciA9IHVybC5lbmRzV2l0aCgnLmxhbmcnKSA/ICd0ZXh0JyA6ICdqc29uJ1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZVtoYW5kbGVyXSgpXG4gICAgcmV0dXJuIGRhdGFcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdUaGVyZSBoYXMgYmVlbiBhIHByb2JsZW0gd2l0aCB5b3VyIGZldGNoIG9wZXJhdGlvbjonLCBlcnJvcilcbiAgICB0aHJvdyBlcnJvclxuICB9XG59XG4iLCJpbXBvcnQgeyBmZXRjaERhdGEgfSBmcm9tICcuL2ZldGNoLmpzJ1xuXG5jb25zdCBERUZBVUxUX0NPTkZJRyA9IHtcbiAgZXh0ZW5zaW9uOiAnLmxhbmcnLFxuICAvLyBsb2NhbCBvciByZW1vdGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgbGFuZ3VhZ2UgZmlsZXNcbiAgbG9jYXRpb246ICdhc3NldHMvbGFuZy8nLFxuICAvLyBsaXN0IG9mIGF2YWlsYWJsZSBsb2NhbGVzLCBoYW5keSBmb3IgcG9wdWxhdGluZyBzZWxlY3Rvci5cbiAgbGFuZ3M6IFsnZW4tVVMnXSxcbiAgbG9jYWxlOiAnZW4tVVMnLCAvLyBpbml0IHdpdGggdXNlcidzIHByZWZlcnJlZCBsYW5ndWFnZVxuICBvdmVycmlkZToge30sXG59XG5cbi8vIFNpbmdsZXRvbiBpbnN0YW5jZSBob2xkZXJcbmxldCBpbnN0YW5jZSA9IG51bGxcblxuLyoqXG4gKiBNYWluIGkxOG4gY2xhc3NcbiAqIEBjbGFzcyBJMThOQmFzZVxuICogQGNsYXNzZGVzYyBtZXRob2RzIGFuZCBkYXRhIHN0b3JlIGZvciBpMThuXG4gKi9cbmNsYXNzIEkxOE5CYXNlIHtcbiAgLyoqXG4gICAqIFByb2Nlc3Mgb3B0aW9ucyBhbmQgc3RhcnQgdGhlIG1vZHVsZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9ucyA9IERFRkFVTFRfQ09ORklHKSB7XG4gICAgdGhpcy5sYW5ncyA9IE9iamVjdC5jcmVhdGUobnVsbClcbiAgICB0aGlzLmxvYWRlZCA9IFtdXG4gICAgdGhpcy5wcm9jZXNzQ29uZmlnKG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogcGFyc2UgYW5kIGZvcm1hdCBjb25maWdcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICovXG4gIHByb2Nlc3NDb25maWcob3B0aW9ucykge1xuICAgIGNvbnN0IHsgbG9jYXRpb24sIC4uLnJlc3RPcHRpb25zIH0gPSB7IC4uLkRFRkFVTFRfQ09ORklHLCAuLi5vcHRpb25zIH1cbiAgICAvLyBFbnN1cmUgbG9jYXRpb24gZW5kcyB3aXRoIGEgc2xhc2hcbiAgICBjb25zdCBwYXJzZWRMb2NhdGlvbiA9IGxvY2F0aW9uLmVuZHNXaXRoKCcvJykgPyBsb2NhdGlvbiA6IGAke2xvY2F0aW9ufS9gXG4gICAgdGhpcy5jb25maWcgPSB7IGxvY2F0aW9uOiBwYXJzZWRMb2NhdGlvbiwgLi4ucmVzdE9wdGlvbnMgfVxuXG4gICAgY29uc3QgeyBwcmVsb2FkZWQgPSB7fSwgb3ZlcnJpZGUgPSB7fSB9ID0gdGhpcy5jb25maWdcblxuICAgIC8vIE1lcmdlIGxvY2FsZXMgZnJvbSBib3RoIHByZWxvYWRlZCBhbmQgb3ZlcnJpZGVcbiAgICAvLyBUaGlzIHN1cHBvcnRzIGxlZ2FjeSB1c2FnZSB3aGVyZSBvdmVycmlkZSBkZWZpbmVkIGVudGlyZSBsYW5ndWFnZXNcbiAgICBjb25zdCBhbGxMb2NhbGVzID0gbmV3IFNldChbLi4uT2JqZWN0LmtleXMocHJlbG9hZGVkKSwgLi4uT2JqZWN0LmtleXMob3ZlcnJpZGUpXSlcblxuICAgIC8vIEFwcGx5IGxhbmd1YWdlcyBmcm9tIGJvdGggcHJlbG9hZGVkIGFuZCBvdmVycmlkZVxuICAgIC8vIGFwcGx5TGFuZ3VhZ2Ugd2lsbCBtZXJnZSB0aGVtIHByb3Blcmx5IChleGlzdGluZyArIHByZWxvYWRlZCArIG92ZXJyaWRlKVxuICAgIGZvciAoY29uc3QgbG9jYWxlIG9mIGFsbExvY2FsZXMpIHtcbiAgICAgIGNvbnN0IHByZWxvYWRlZExhbmcgPSBwcmVsb2FkZWRbbG9jYWxlXSB8fCB7fVxuICAgICAgY29uc3Qgb3ZlcnJpZGVMYW5nID0gb3ZlcnJpZGVbbG9jYWxlXSB8fCB7fVxuICAgICAgLy8gTWVyZ2UgcHJlbG9hZGVkIGFuZCBvdmVycmlkZSBmb3IgdGhpcyBsb2NhbGVcbiAgICAgIGNvbnN0IG1lcmdlZExhbmcgPSB7IC4uLnByZWxvYWRlZExhbmcsIC4uLm92ZXJyaWRlTGFuZyB9XG4gICAgICB0aGlzLmFwcGx5TGFuZ3VhZ2UobG9jYWxlLCBtZXJnZWRMYW5nKVxuICAgIH1cblxuICAgIHRoaXMubG9jYWxlID0gdGhpcy5jb25maWcubG9jYWxlIHx8IHRoaXMuY29uZmlnLmxhbmdzWzBdXG4gIH1cblxuICAvKipcbiAgICogTG9hZCBsYW5ndWFnZSBhbmQgc2V0IGRlZmF1bHRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBvcHRpb25zXG4gICAqIEByZXR1cm4ge1Byb21pc2V9ICAgICAgICByZXNvbHZlcyBsYW5ndWFnZVxuICAgKi9cbiAgaW5pdChvcHRpb25zKSB7XG4gICAgdGhpcy5wcm9jZXNzQ29uZmlnKHsgLi4udGhpcy5jb25maWcsIC4uLm9wdGlvbnMgfSlcbiAgICByZXR1cm4gdGhpcy5zZXRDdXJyZW50KHRoaXMubG9jYWxlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBsYW5ndWFnZSB0byB0aGUgbGlzdCBvZiBhdmFpbGFibGUgbGFuZ3VhZ2VzXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBsb2NhbGVcbiAgICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBsYW5nXG4gICAqL1xuICBhZGRMYW5ndWFnZShsb2NhbGUsIGxhbmcgPSB7fSkge1xuICAgIGxhbmcgPSB0eXBlb2YgbGFuZyA9PT0gJ3N0cmluZycgPyBJMThOQmFzZS5wcm9jZXNzRmlsZShsYW5nKSA6IGxhbmdcbiAgICB0aGlzLmFwcGx5TGFuZ3VhZ2UobG9jYWxlLCBsYW5nKVxuICAgIHRoaXMubG9hZGVkLnB1c2gobG9jYWxlKVxuICAgIHRoaXMuY29uZmlnLmxhbmdzLnB1c2gobG9jYWxlKVxuICB9XG5cbiAgLyoqXG4gICAqIGdldCBhIHN0cmluZyBmcm9tIGEgbG9hZGVkIGxhbmd1YWdlIGZpbGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBrZXkgIC0gdGhlIGtleSBmb3IgdGhlIHN0cmluZyB3ZSBhcmUgdHJ5aW5nIHRvIHJldHJpZXZlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gbG9jYWxlIC0gbG9jYWxlIHRvIGNoZWNrIGZvciB2YWx1ZVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IGxhbmd1YWdlIHN0cmluZyBvciB1bmRlZmluZWRcbiAgICovXG4gIGdldFZhbHVlKGtleSwgbG9jYWxlID0gdGhpcy5sb2NhbGUpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMubGFuZ3NbbG9jYWxlXT8uW2tleV1cbiAgICByZXR1cm4gdmFsdWUgfHwgdGhpcy5nZXRGYWxsYmFja1ZhbHVlKGtleSlcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGEgbGFuZ3VhZ2UgdGhhdCBoYXMgZGVzaXJlZCBrZXlcbiAgICogQHBhcmFtIHtTdHJpbmd9IGtleSB2YWx1ZSBrZXlcbiAgICogQHJldHVybiB7U3RyaW5nfSBmb3VuZCB2YWx1ZSBvciB1bmRlZmluZWRcbiAgICovXG4gIGdldEZhbGxiYWNrVmFsdWUoa2V5KSB7XG4gICAgY29uc3QgZmFsbGJhY2tMYW5nID0gT2JqZWN0LnZhbHVlcyh0aGlzLmxhbmdzKS5maW5kKGxhbmcgPT4gbGFuZ1trZXldKVxuICAgIHJldHVybiBmYWxsYmFja0xhbmc/LltrZXldXG4gIH1cblxuICAvKipcbiAgICogRXNjYXBlIHZhcmlhYmxlIHN5bnRheFxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IHN0clxuICAgKiBAcmV0dXJuIHtTdHJpbmd9ICAgICBlc2NhcGVkIHN0clxuICAgKi9cbiAgbWFrZVNhZmUoc3RyKSB7XG4gICAgY29uc3QgbWFwT2JqID0ge1xuICAgICAgJ3snOiBTdHJpbmcucmF3YFxce2AsXG4gICAgICAnfSc6IFN0cmluZy5yYXdgXFx9YCxcbiAgICAgICd8JzogU3RyaW5nLnJhd2BcXHxgLFxuICAgIH1cblxuICAgIGNvbnN0IGVzY2FwZWRTdHIgPSBzdHIucmVwbGFjZUFsbCgvW3t9fF0vZywgbWF0Y2hlZCA9PiBtYXBPYmpbbWF0Y2hlZF0pXG5cbiAgICByZXR1cm4gbmV3IFJlZ0V4cChlc2NhcGVkU3RyLCAnZycpXG4gIH1cblxuICAvKipcbiAgICogVGVtcG9yYXJpbHkgcHV0IGEgc3RyaW5nIGludG8gdGhlIGN1cnJlbnRseSBsb2FkZWQgbGFuZ3VhZ2VcbiAgICogQHBhcmFtICB7U3RyaW5nfSBrZXlcbiAgICogQHBhcmFtICB7U3RyaW5nfSBzdHJpbmdcbiAgICogQHJldHVybiB7U3RyaW5nfSBzdHJpbmcgaW4gY3VycmVudCBsYW5ndWFnZVxuICAgKi9cbiAgcHV0KGtleSwgc3RyaW5nKSB7XG4gICAgdGhpcy5jdXJyZW50W2tleV0gPSBzdHJpbmdcblxuICAgIHJldHVybiBzdHJpbmdcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBhcmd1bWVudHMgZm9yIHRoZSByZXF1ZXN0ZWQgc3RyaW5nXG4gICAqIEBwYXJhbSAge1N0cmluZ30ga2V5ICB0aGUga2V5IHdlIHVzZSB0byBsb29rdXAgb3VyIHRyYW5zbGF0aW9uXG4gICAqIEBwYXJhbSAge211bHRpfSAgYXJncyAgc3RyaW5nLCBudW1iZXIgb3Igb2JqZWN0IGNvbnRhaW5pbmcgb3VyIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtTdHJpbmd9ICAgICAgdXBkYXRlZCBzdHJpbmcgdHJhbnNsYXRpb25cbiAgICovXG4gIGdldChrZXksIGFyZ3MpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmdldFZhbHVlKGtleSlcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBObyByZXBsYWNlbWVudCBuZWVkZWQgaWYgbm8gYXJncyBwcm92aWRlZFxuICAgIGlmICghYXJncykge1xuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW5zID0gdmFsdWUubWF0Y2goL1xce1tefV0rP1xcfS9nKVxuXG4gICAgLy8gTm8gdG9rZW5zIHRvIHJlcGxhY2VcbiAgICBpZiAoIXRva2Vucykge1xuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfVxuXG4gICAgLy8gT2JqZWN0IGFyZ3M6IHJlcGxhY2UgZWFjaCB0b2tlbiB3aXRoIGNvcnJlc3BvbmRpbmcga2V5XG4gICAgaWYgKHR5cGVvZiBhcmdzID09PSAnb2JqZWN0Jykge1xuICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICAgICAgY29uc3QgdG9rZW5LZXkgPSB0b2tlbi5zbGljZSgxLCAtMSlcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHRoaXMubWFrZVNhZmUodG9rZW4pLCBhcmdzW3Rva2VuS2V5XSA/PyAnJylcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUHJpbWl0aXZlIGFyZ3M6IHJlcGxhY2UgYWxsIHRva2VucyB3aXRoIHNhbWUgdmFsdWVcbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZUFsbCgvXFx7W159XSs/XFx9L2csIGFyZ3MpXG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICAvKipcbiAgICogU3RhdGljIG1ldGhvZDogUHJvY2VzcyBhIGxhbmd1YWdlIGZpbGUgZnJvbSByYXcgdGV4dFxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IHJlc3BvbnNlXG4gICAqIEByZXR1cm4ge09iamVjdH0gcHJvY2Vzc2VkIGxhbmd1YWdlXG4gICAqL1xuICBzdGF0aWMgcHJvY2Vzc0ZpbGUocmVzcG9uc2UpIHtcbiAgICByZXR1cm4gSTE4Ti5mcm9tRmlsZShyZXNwb25zZS5yZXBsYWNlQWxsKCdcXG5cXG4nLCAnXFxuJykpXG4gIH1cblxuICAvKipcbiAgICogU3RhdGljIG1ldGhvZDogVHVybiByYXcgdGV4dCBmcm9tIHRoZSBsYW5ndWFnZSBmaWxlcyBpbnRvIGZhbmN5IEpTT05cbiAgICogQHBhcmFtICB7U3RyaW5nfSByYXdUZXh0XG4gICAqIEByZXR1cm4ge09iamVjdH0gY29udmVydGVkIGxhbmd1YWdlIGZpbGVcbiAgICovXG4gIHN0YXRpYyBmcm9tRmlsZShyYXdUZXh0KSB7XG4gICAgY29uc3QgbGluZXMgPSByYXdUZXh0LnNwbGl0KCdcXG4nKVxuICAgIGNvbnN0IGxhbmcgPSB7fVxuXG4gICAgZm9yIChsZXQgbWF0Y2hlcywgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgcmVnZXggPSAvXiguKz8pICo/PSAqPyhbXlxcbl0rKS9cbiAgICAgIG1hdGNoZXMgPSByZWdleC5leGVjKGxpbmVzW2ldKVxuICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgbGFuZ1ttYXRjaGVzWzFdXSA9IG1hdGNoZXNbMl0udHJpbSgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhbmdcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgKiBAcmV0dXJuIHtJMThOQmFzZX0gc2luZ2xldG9uIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgZ2V0SW5zdGFuY2Uob3B0aW9ucykge1xuICAgIGlmICghaW5zdGFuY2UpIHtcbiAgICAgIGluc3RhbmNlID0gbmV3IEkxOE5CYXNlKG9wdGlvbnMpXG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBzaW5nbGV0b24gaW5zdGFuY2UgKHVzZWZ1bCBmb3IgdGVzdGluZylcbiAgICovXG4gIHN0YXRpYyByZXNldEluc3RhbmNlKCkge1xuICAgIGluc3RhbmNlID0gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYSByZW1vdGVseSBzdG9yZWQgbGFuZ3VhZ2UgZmlsZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGxvY2FsZVxuICAgKiBAcGFyYW0gIHtCb29sZWFufSB1c2VDYWNoZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSAgICAgICByZXNvbHZlcyByZXNwb25zZVxuICAgKi9cbiAgYXN5bmMgbG9hZExhbmcobG9jYWxlLCB1c2VDYWNoZSA9IHRydWUpIHtcbiAgICAvLyBSZXR1cm4gY2FjaGVkIGxhbmd1YWdlIGlmIGFscmVhZHkgbG9hZGVkXG4gICAgaWYgKHRoaXMubG9hZGVkLmluY2x1ZGVzKGxvY2FsZSkgJiYgdXNlQ2FjaGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmdzW2xvY2FsZV1cbiAgICB9XG4gICAgLy8gRmV0Y2ggYW5kIHByb2Nlc3MgbGFuZ3VhZ2UgZmlsZVxuICAgIGNvbnN0IGxhbmdGaWxlID0gYCR7dGhpcy5jb25maWcubG9jYXRpb259JHtsb2NhbGV9JHt0aGlzLmNvbmZpZy5leHRlbnNpb259YFxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGxhbmcgPSBhd2FpdCBmZXRjaERhdGEobGFuZ0ZpbGUpXG4gICAgICBjb25zdCBwcm9jZXNzZWRGaWxlID0gSTE4TkJhc2UucHJvY2Vzc0ZpbGUobGFuZylcbiAgICAgIHRoaXMuYXBwbHlMYW5ndWFnZShsb2NhbGUsIHByb2Nlc3NlZEZpbGUpXG4gICAgICByZXR1cm4gdGhpcy5sYW5nc1tsb2NhbGVdXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycilcbiAgICAgIHJldHVybiB0aGlzLmFwcGx5TGFuZ3VhZ2UobG9jYWxlKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBhcHBsaWVzIG92ZXJyaWRlcyBmcm9tIGNvbmZpZ1xuICAgKiBAcGFyYW0ge1N0cmluZ30gbG9jYWxlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBsYW5nXG4gICAqIEByZXR1cm4ge09iamVjdH0gb3ZlcnJpZGVuIGxhbmd1YWdlXG4gICAqL1xuICBhcHBseUxhbmd1YWdlKGxvY2FsZSwgbGFuZyA9IHt9KSB7XG4gICAgY29uc3Qgb3ZlcnJpZGUgPSB0aGlzLmNvbmZpZy5vdmVycmlkZVtsb2NhbGVdIHx8IHt9XG4gICAgY29uc3QgZXhpc3RpbmdMYW5nID0gdGhpcy5sYW5nc1tsb2NhbGVdIHx8IHt9XG4gICAgdGhpcy5sYW5nc1tsb2NhbGVdID0geyAuLi5leGlzdGluZ0xhbmcsIC4uLmxhbmcsIC4uLm92ZXJyaWRlIH1cbiAgICB0aGlzLmxvYWRlZC5wdXNoKGxvY2FsZSlcbiAgICByZXR1cm4gdGhpcy5sYW5nc1tsb2NhbGVdXG4gIH1cblxuICAvKipcbiAgICogcmV0dXJuIGN1cnJlbnRseSBhdmFpbGFibGUgbGFuZ3VhZ2VzXG4gICAqIEByZXR1cm4ge09iamVjdH0gYWxsIGNvbmZpZ3VyZWQgbGFuZ3VhZ2VzXG4gICAqL1xuICBnZXQgZ2V0TGFuZ3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmxhbmdzXG4gIH1cblxuICAvKipcbiAgICogQXR0ZW1wdCB0byBzZXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgdG8gdGhlIGxvY2FsIHByb3ZpZGVkXG4gICAqIEBwYXJhbSB7U3RyaW5nfSAgIGxvY2FsZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSBsYW5ndWFnZVxuICAgKi9cbiAgYXN5bmMgc2V0Q3VycmVudChsb2NhbGUgPSAnZW4tVVMnKSB7XG4gICAgaWYgKCF0aGlzLmxvYWRlZC5pbmNsdWRlcyhsb2NhbGUpKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRMYW5nKGxvY2FsZSlcbiAgICB9XG5cbiAgICB0aGlzLmxvY2FsZSA9IGxvY2FsZVxuICAgIHRoaXMuY3VycmVudCA9IHRoaXMubGFuZ3NbbG9jYWxlXVxuXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFxuICB9XG59XG5cbi8qKlxuICogUHJveHkgd3JhcHBlciB0aGF0IGVuYWJsZXMgc2luZ2xldG9uIHBhdHRlcm46XG4gKiAtIEkxOE4oKSByZXR1cm5zIHRoZSBzaW5nbGV0b24gaW5zdGFuY2VcbiAqIC0gbmV3IEkxOE4oKSBjcmVhdGVzIGEgbmV3IGluc3RhbmNlXG4gKi9cbmV4cG9ydCBjb25zdCBJMThOID0gbmV3IFByb3h5KEkxOE5CYXNlLCB7XG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBJMThOKCkgaXMgaW52b2tlZCBhcyBhIGZ1bmN0aW9uICh3aXRob3V0IG5ldylcbiAgICogUmV0dXJucyB0aGUgc2luZ2xldG9uIGluc3RhbmNlXG4gICAqL1xuICBhcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpIHtcbiAgICByZXR1cm4gdGFyZ2V0LmdldEluc3RhbmNlKC4uLmFyZ3MpXG4gIH0sXG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIG5ldyBJMThOKCkgaXMgaW52b2tlZFxuICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlXG4gICAqL1xuICBjb25zdHJ1Y3QodGFyZ2V0LCBhcmdzKSB7XG4gICAgcmV0dXJuIG5ldyB0YXJnZXQoLi4uYXJncylcbiAgfSxcblxuICAvKipcbiAgICogUHJveHkgcHJvcGVydHkgYWNjZXNzIHRvIHRoZSBiYXNlIGNsYXNzXG4gICAqL1xuICBnZXQodGFyZ2V0LCBwcm9wKSB7XG4gICAgcmV0dXJuIHRhcmdldFtwcm9wXVxuICB9LFxufSlcblxuZXhwb3J0IGRlZmF1bHQgSTE4Ti5nZXRJbnN0YW5jZSgpXG4iXSwibWFwcGluZ3MiOiJDLHNUQUF1QlUsT0FBT00sT0FBTyxDQUFFQyxPQUFRLE1BQU9DLEtBQU0sS0NFNUQsSUFBTUMsRUFBaUIsQ0FDckJDLFVBQVcsUUFFWEMsU0FBVSxlQUVWQyxNQUFPLENBQUMsU0FDUkMsT0FBUSxRQUNSQyxTQUFVLENBQUMsR0FJVEMsRUFBVyxLQWtSRkMsRUFBTyxJQUFJQyxNQTNReEIsTUFBTUMsRUFLSixXQUFBQyxDQUFZQyxFQUFVWCxHQUNwQlYsS0FBS2EsTUFBUVosT0FBT3FCLE9BQU8sTUFDM0J0QixLQUFLdUIsT0FBUyxHQUNkdkIsS0FBS3dCLGNBQWNILEVBQ3JCLENBTUEsYUFBQUcsQ0FBY0gsR0FDWixNQUFNVCxTQUFFQSxLQUFhYSxHQUFnQixJQUFLZixLQUFtQlcsR0FFdkRLLEVBQWlCZCxFQUFTZSxTQUFTLEtBQU9mLEVBQVcsR0FBR0EsS0FDOURaLEtBQUs0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
|
package/dist/i18n.umd.min.js.gz
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@draggable/i18n",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "A simple yet robust i18n solution for universal JavaScript apps.",
|
|
5
5
|
"main": "dist/i18n.es.min.js",
|
|
6
6
|
"type": "module",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"lint-staged": "^17.0.3",
|
|
53
53
|
"semantic-release": "^25.0.3",
|
|
54
54
|
"terser": "^5.47.1",
|
|
55
|
-
"vite": "^8.
|
|
55
|
+
"vite": "^8.1.6",
|
|
56
56
|
"vite-plugin-banner": "^0.8.0",
|
|
57
57
|
"vite-plugin-compression": "^0.5.1"
|
|
58
58
|
},
|