postchain-client 1.0.2 → 1.0.3

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.
Files changed (98) hide show
  1. package/README.md +0 -27
  2. package/built/cjs/index.js +2571 -0
  3. package/built/cjs/index.js.map +1 -0
  4. package/built/esm/index.js +29927 -0
  5. package/built/esm/index.js.map +1 -0
  6. package/built/index.js +21 -3
  7. package/built/index.js.map +1 -0
  8. package/built/src/chromia/chromiaClientProvider.js +35 -0
  9. package/built/src/chromia/chromiaClientProvider.js.map +1 -0
  10. package/built/src/chromia/errors.js +6 -0
  11. package/built/src/chromia/errors.js.map +1 -0
  12. package/built/src/chromia/interfaces.js +2 -0
  13. package/built/src/chromia/interfaces.js.map +1 -0
  14. package/built/src/encryption/encryption.js +105 -0
  15. package/built/src/encryption/encryption.js.map +1 -0
  16. package/built/src/encryption/errors.js +11 -0
  17. package/built/src/encryption/errors.js.map +1 -0
  18. package/built/src/encryption/types.js +2 -0
  19. package/built/src/encryption/types.js.map +1 -0
  20. package/built/src/formatter.d.ts +2 -0
  21. package/built/src/formatter.js +119 -0
  22. package/built/src/formatter.js.map +1 -0
  23. package/built/src/gtv/definition.js +20 -0
  24. package/built/src/gtv/definition.js.map +1 -0
  25. package/built/src/gtv/index.d.ts +1 -0
  26. package/built/src/gtv/index.js +11 -0
  27. package/built/src/gtv/index.js.map +1 -0
  28. package/built/src/gtv/types.d.ts +2 -3
  29. package/built/src/gtv/types.js +2 -0
  30. package/built/src/gtv/types.js.map +1 -0
  31. package/built/src/gtx/errors.js +26 -0
  32. package/built/src/gtx/errors.js.map +1 -0
  33. package/built/src/gtx/gtx.d.ts +1 -1
  34. package/built/src/gtx/gtx.js +115 -0
  35. package/built/src/gtx/gtx.js.map +1 -0
  36. package/built/src/gtx/gtxclient.js +77 -0
  37. package/built/src/gtx/gtxclient.js.map +1 -0
  38. package/built/src/gtx/index.js +5 -0
  39. package/built/src/gtx/index.js.map +1 -0
  40. package/built/src/gtx/interfaces.js +2 -0
  41. package/built/src/gtx/interfaces.js.map +1 -0
  42. package/built/src/gtx/serialization.d.ts +3 -2
  43. package/built/src/gtx/serialization.js +95 -0
  44. package/built/src/gtx/serialization.js.map +1 -0
  45. package/built/src/gtx/types.d.ts +10 -1
  46. package/built/src/gtx/types.js +2 -0
  47. package/built/src/gtx/types.js.map +1 -0
  48. package/built/src/logger.d.ts +2 -1
  49. package/built/src/logger.js +53 -0
  50. package/built/src/logger.js.map +1 -0
  51. package/built/src/merkle/binarytree.d.ts +137 -0
  52. package/built/src/merkle/binarytree.js +146 -0
  53. package/built/src/merkle/binarytree.js.map +1 -0
  54. package/built/src/merkle/binarytreefactory.d.ts +86 -0
  55. package/built/src/merkle/binarytreefactory.js +235 -0
  56. package/built/src/merkle/binarytreefactory.js.map +1 -0
  57. package/built/src/merkle/merkleHelper.js +109 -0
  58. package/built/src/merkle/merkleHelper.js.map +1 -0
  59. package/built/src/merkle/merklehashcalculator.d.ts +35 -0
  60. package/built/src/merkle/merklehashcalculator.js +71 -0
  61. package/built/src/merkle/merklehashcalculator.js.map +1 -0
  62. package/built/src/merkle/path.d.ts +155 -0
  63. package/built/src/merkle/path.js +306 -0
  64. package/built/src/merkle/path.js.map +1 -0
  65. package/built/src/merkle/proof/merklehashcarrier.d.ts +17 -0
  66. package/built/src/merkle/proof/merklehashcarrier.js +23 -0
  67. package/built/src/merkle/proof/merklehashcarrier.js.map +1 -0
  68. package/built/src/merkle/proof/merklehashsummaryfactory.d.ts +53 -0
  69. package/built/src/merkle/proof/merklehashsummaryfactory.js +81 -0
  70. package/built/src/merkle/proof/merklehashsummaryfactory.js.map +1 -0
  71. package/built/src/merkle/proof/merkleproof.d.ts +35 -0
  72. package/built/src/merkle/proof/merkleproof.js +59 -0
  73. package/built/src/merkle/proof/merkleproof.js.map +1 -0
  74. package/built/src/merkle/proof/merkleprooftree.d.ts +130 -0
  75. package/built/src/merkle/proof/merkleprooftree.js +116 -0
  76. package/built/src/merkle/proof/merkleprooftree.js.map +1 -0
  77. package/built/src/merkle/proof/merkleprooftreefactory.d.ts +47 -0
  78. package/built/src/merkle/proof/merkleprooftreefactory.js +121 -0
  79. package/built/src/merkle/proof/merkleprooftreefactory.js.map +1 -0
  80. package/built/src/merkle/types.js +2 -0
  81. package/built/src/merkle/types.js.map +1 -0
  82. package/built/src/restclient/errors.js +54 -0
  83. package/built/src/restclient/errors.js.map +1 -0
  84. package/built/src/restclient/interfaces.d.ts +2 -1
  85. package/built/src/restclient/interfaces.js +2 -0
  86. package/built/src/restclient/interfaces.js.map +1 -0
  87. package/built/src/restclient/restclient.js +309 -0
  88. package/built/src/restclient/restclient.js.map +1 -0
  89. package/built/src/restclient/restclientutil.d.ts +4 -0
  90. package/built/src/restclient/restclientutil.js +137 -0
  91. package/built/src/restclient/restclientutil.js.map +1 -0
  92. package/built/src/restclient/types.d.ts +4 -0
  93. package/built/src/restclient/types.js +13 -0
  94. package/built/src/restclient/types.js.map +1 -0
  95. package/built/umd/index.js +29931 -0
  96. package/built/umd/index.js.map +1 -0
  97. package/package.json +26 -16
  98. package/built/index.js.LICENSE.txt +0 -657
package/built/index.js CHANGED
@@ -1,3 +1,21 @@
1
- /*! For license information please see index.js.LICENSE.txt */
2
- !function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a():"function"==typeof define&&define.amd?define([],a):"object"==typeof exports?exports.PostchainClient=a():e.PostchainClient=a()}(global,(()=>(()=>{var e={"./node_modules/asn1.js/lib/asn1.js":(e,a,d)=>{var p=a;p.bignum=d("./node_modules/bn.js/lib/bn.js"),p.define=d("./node_modules/asn1.js/lib/asn1/api.js").define,p.base=d("./node_modules/asn1.js/lib/asn1/base/index.js"),p.constants=d("./node_modules/asn1.js/lib/asn1/constants/index.js"),p.decoders=d("./node_modules/asn1.js/lib/asn1/decoders/index.js"),p.encoders=d("./node_modules/asn1.js/lib/asn1/encoders/index.js")},"./node_modules/asn1.js/lib/asn1/api.js":(e,a,d)=>{var p=d("./node_modules/asn1.js/lib/asn1.js"),t=d("./node_modules/inherits/inherits.js");function i(e,a){this.name=e,this.body=a,this.decoders={},this.encoders={}}a.define=function(e,a){return new i(e,a)},i.prototype._createNamed=function(e){var a;try{a=d("vm").runInThisContext("(function "+this.name+"(entity) {\n this._initNamed(entity);\n})")}catch(e){a=function(e){this._initNamed(e)}}return t(a,e),a.prototype._initNamed=function(a){e.call(this,a)},new a(this)},i.prototype._getDecoder=function(e){return e=e||"der",this.decoders.hasOwnProperty(e)||(this.decoders[e]=this._createNamed(p.decoders[e])),this.decoders[e]},i.prototype.decode=function(e,a,d){return this._getDecoder(a).decode(e,d)},i.prototype._getEncoder=function(e){return e=e||"der",this.encoders.hasOwnProperty(e)||(this.encoders[e]=this._createNamed(p.encoders[e])),this.encoders[e]},i.prototype.encode=function(e,a,d){return this._getEncoder(a).encode(e,d)}},"./node_modules/asn1.js/lib/asn1/base/buffer.js":(e,a,d)=>{var p=d("./node_modules/inherits/inherits.js"),t=d("./node_modules/asn1.js/lib/asn1/base/index.js").Reporter,i=d("buffer").Buffer;function r(e,a){t.call(this,a),i.isBuffer(e)?(this.base=e,this.offset=0,this.length=e.length):this.error("Input not Buffer")}function n(e,a){if(Array.isArray(e))this.length=0,this.value=e.map((function(e){return e instanceof n||(e=new n(e,a)),this.length+=e.length,e}),this);else if("number"==typeof e){if(!(0<=e&&e<=255))return a.error("non-byte EncoderBuffer value");this.value=e,this.length=1}else if("string"==typeof e)this.value=e,this.length=i.byteLength(e);else{if(!i.isBuffer(e))return a.error("Unsupported type: "+typeof e);this.value=e,this.length=e.length}}p(r,t),a.DecoderBuffer=r,r.prototype.save=function(){return{offset:this.offset,reporter:t.prototype.save.call(this)}},r.prototype.restore=function(e){var a=new r(this.base);return a.offset=e.offset,a.length=this.offset,this.offset=e.offset,t.prototype.restore.call(this,e.reporter),a},r.prototype.isEmpty=function(){return this.offset===this.length},r.prototype.readUInt8=function(e){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(e||"DecoderBuffer overrun")},r.prototype.skip=function(e,a){if(!(this.offset+e<=this.length))return this.error(a||"DecoderBuffer overrun");var d=new r(this.base);return d._reporterState=this._reporterState,d.offset=this.offset,d.length=this.offset+e,this.offset+=e,d},r.prototype.raw=function(e){return this.base.slice(e?e.offset:this.offset,this.length)},a.EncoderBuffer=n,n.prototype.join=function(e,a){return e||(e=new i(this.length)),a||(a=0),0===this.length||(Array.isArray(this.value)?this.value.forEach((function(d){d.join(e,a),a+=d.length})):("number"==typeof this.value?e[a]=this.value:"string"==typeof this.value?e.write(this.value,a):i.isBuffer(this.value)&&this.value.copy(e,a),a+=this.length)),e}},"./node_modules/asn1.js/lib/asn1/base/index.js":(e,a,d)=>{var p=a;p.Reporter=d("./node_modules/asn1.js/lib/asn1/base/reporter.js").Reporter,p.DecoderBuffer=d("./node_modules/asn1.js/lib/asn1/base/buffer.js").DecoderBuffer,p.EncoderBuffer=d("./node_modules/asn1.js/lib/asn1/base/buffer.js").EncoderBuffer,p.Node=d("./node_modules/asn1.js/lib/asn1/base/node.js")},"./node_modules/asn1.js/lib/asn1/base/node.js":(e,a,d)=>{var p=d("./node_modules/asn1.js/lib/asn1/base/index.js").Reporter,t=d("./node_modules/asn1.js/lib/asn1/base/index.js").EncoderBuffer,i=d("./node_modules/asn1.js/lib/asn1/base/index.js").DecoderBuffer,r=d("./node_modules/minimalistic-assert/index.js"),n=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],s=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(n);function o(e,a){var d={};this._baseState=d,d.enc=e,d.parent=a||null,d.children=null,d.tag=null,d.args=null,d.reverseArgs=null,d.choice=null,d.optional=!1,d.any=!1,d.obj=!1,d.use=null,d.useDecoder=null,d.key=null,d.default=null,d.explicit=null,d.implicit=null,d.contains=null,d.parent||(d.children=[],this._wrap())}e.exports=o;var l=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];o.prototype.clone=function(){var e=this._baseState,a={};l.forEach((function(d){a[d]=e[d]}));var d=new this.constructor(a.parent);return d._baseState=a,d},o.prototype._wrap=function(){var e=this._baseState;s.forEach((function(a){this[a]=function(){var d=new this.constructor(this);return e.children.push(d),d[a].apply(d,arguments)}}),this)},o.prototype._init=function(e){var a=this._baseState;r(null===a.parent),e.call(this),a.children=a.children.filter((function(e){return e._baseState.parent===this}),this),r.equal(a.children.length,1,"Root node can have only one child")},o.prototype._useArgs=function(e){var a=this._baseState,d=e.filter((function(e){return e instanceof this.constructor}),this);e=e.filter((function(e){return!(e instanceof this.constructor)}),this),0!==d.length&&(r(null===a.children),a.children=d,d.forEach((function(e){e._baseState.parent=this}),this)),0!==e.length&&(r(null===a.args),a.args=e,a.reverseArgs=e.map((function(e){if("object"!=typeof e||e.constructor!==Object)return e;var a={};return Object.keys(e).forEach((function(d){d==(0|d)&&(d|=0);var p=e[d];a[p]=d})),a})))},["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"].forEach((function(e){o.prototype[e]=function(){var a=this._baseState;throw new Error(e+" not implemented for encoding: "+a.enc)}})),n.forEach((function(e){o.prototype[e]=function(){var a=this._baseState,d=Array.prototype.slice.call(arguments);return r(null===a.tag),a.tag=e,this._useArgs(d),this}})),o.prototype.use=function(e){r(e);var a=this._baseState;return r(null===a.use),a.use=e,this},o.prototype.optional=function(){return this._baseState.optional=!0,this},o.prototype.def=function(e){var a=this._baseState;return r(null===a.default),a.default=e,a.optional=!0,this},o.prototype.explicit=function(e){var a=this._baseState;return r(null===a.explicit&&null===a.implicit),a.explicit=e,this},o.prototype.implicit=function(e){var a=this._baseState;return r(null===a.explicit&&null===a.implicit),a.implicit=e,this},o.prototype.obj=function(){var e=this._baseState,a=Array.prototype.slice.call(arguments);return e.obj=!0,0!==a.length&&this._useArgs(a),this},o.prototype.key=function(e){var a=this._baseState;return r(null===a.key),a.key=e,this},o.prototype.any=function(){return this._baseState.any=!0,this},o.prototype.choice=function(e){var a=this._baseState;return r(null===a.choice),a.choice=e,this._useArgs(Object.keys(e).map((function(a){return e[a]}))),this},o.prototype.contains=function(e){var a=this._baseState;return r(null===a.use),a.contains=e,this},o.prototype._decode=function(e,a){var d=this._baseState;if(null===d.parent)return e.wrapResult(d.children[0]._decode(e,a));var p,t=d.default,r=!0,n=null;if(null!==d.key&&(n=e.enterKey(d.key)),d.optional){var s=null;if(null!==d.explicit?s=d.explicit:null!==d.implicit?s=d.implicit:null!==d.tag&&(s=d.tag),null!==s||d.any){if(r=this._peekTag(e,s,d.any),e.isError(r))return r}else{var o=e.save();try{null===d.choice?this._decodeGeneric(d.tag,e,a):this._decodeChoice(e,a),r=!0}catch(e){r=!1}e.restore(o)}}if(d.obj&&r&&(p=e.enterObject()),r){if(null!==d.explicit){var l=this._decodeTag(e,d.explicit);if(e.isError(l))return l;e=l}var m=e.offset;if(null===d.use&&null===d.choice){d.any&&(o=e.save());var u=this._decodeTag(e,null!==d.implicit?d.implicit:d.tag,d.any);if(e.isError(u))return u;d.any?t=e.raw(o):e=u}if(a&&a.track&&null!==d.tag&&a.track(e.path(),m,e.length,"tagged"),a&&a.track&&null!==d.tag&&a.track(e.path(),e.offset,e.length,"content"),d.any||(t=null===d.choice?this._decodeGeneric(d.tag,e,a):this._decodeChoice(e,a)),e.isError(t))return t;if(d.any||null!==d.choice||null===d.children||d.children.forEach((function(d){d._decode(e,a)})),d.contains&&("octstr"===d.tag||"bitstr"===d.tag)){var f=new i(t);t=this._getUse(d.contains,e._reporterState.obj)._decode(f,a)}}return d.obj&&r&&(t=e.leaveObject(p)),null===d.key||null===t&&!0!==r?null!==n&&e.exitKey(n):e.leaveKey(n,d.key,t),t},o.prototype._decodeGeneric=function(e,a,d){var p=this._baseState;return"seq"===e||"set"===e?null:"seqof"===e||"setof"===e?this._decodeList(a,e,p.args[0],d):/str$/.test(e)?this._decodeStr(a,e,d):"objid"===e&&p.args?this._decodeObjid(a,p.args[0],p.args[1],d):"objid"===e?this._decodeObjid(a,null,null,d):"gentime"===e||"utctime"===e?this._decodeTime(a,e,d):"null_"===e?this._decodeNull(a,d):"bool"===e?this._decodeBool(a,d):"objDesc"===e?this._decodeStr(a,e,d):"int"===e||"enum"===e?this._decodeInt(a,p.args&&p.args[0],d):null!==p.use?this._getUse(p.use,a._reporterState.obj)._decode(a,d):a.error("unknown tag: "+e)},o.prototype._getUse=function(e,a){var d=this._baseState;return d.useDecoder=this._use(e,a),r(null===d.useDecoder._baseState.parent),d.useDecoder=d.useDecoder._baseState.children[0],d.implicit!==d.useDecoder._baseState.implicit&&(d.useDecoder=d.useDecoder.clone(),d.useDecoder._baseState.implicit=d.implicit),d.useDecoder},o.prototype._decodeChoice=function(e,a){var d=this._baseState,p=null,t=!1;return Object.keys(d.choice).some((function(i){var r=e.save(),n=d.choice[i];try{var s=n._decode(e,a);if(e.isError(s))return!1;p={type:i,value:s},t=!0}catch(a){return e.restore(r),!1}return!0}),this),t?p:e.error("Choice not matched")},o.prototype._createEncoderBuffer=function(e){return new t(e,this.reporter)},o.prototype._encode=function(e,a,d){var p=this._baseState;if(null===p.default||p.default!==e){var t=this._encodeValue(e,a,d);if(void 0!==t&&!this._skipDefault(t,a,d))return t}},o.prototype._encodeValue=function(e,a,d){var t=this._baseState;if(null===t.parent)return t.children[0]._encode(e,a||new p);var i=null;if(this.reporter=a,t.optional&&void 0===e){if(null===t.default)return;e=t.default}var r=null,n=!1;if(t.any)i=this._createEncoderBuffer(e);else if(t.choice)i=this._encodeChoice(e,a);else if(t.contains)r=this._getUse(t.contains,d)._encode(e,a),n=!0;else if(t.children)r=t.children.map((function(d){if("null_"===d._baseState.tag)return d._encode(null,a,e);if(null===d._baseState.key)return a.error("Child should have a key");var p=a.enterKey(d._baseState.key);if("object"!=typeof e)return a.error("Child expected, but input is not object");var t=d._encode(e[d._baseState.key],a,e);return a.leaveKey(p),t}),this).filter((function(e){return e})),r=this._createEncoderBuffer(r);else if("seqof"===t.tag||"setof"===t.tag){if(!t.args||1!==t.args.length)return a.error("Too many args for : "+t.tag);if(!Array.isArray(e))return a.error("seqof/setof, but data is not Array");var s=this.clone();s._baseState.implicit=null,r=this._createEncoderBuffer(e.map((function(d){var p=this._baseState;return this._getUse(p.args[0],e)._encode(d,a)}),s))}else null!==t.use?i=this._getUse(t.use,d)._encode(e,a):(r=this._encodePrimitive(t.tag,e),n=!0);if(!t.any&&null===t.choice){var o=null!==t.implicit?t.implicit:t.tag,l=null===t.implicit?"universal":"context";null===o?null===t.use&&a.error("Tag could be omitted only for .use()"):null===t.use&&(i=this._encodeComposite(o,n,l,r))}return null!==t.explicit&&(i=this._encodeComposite(t.explicit,!1,"context",i)),i},o.prototype._encodeChoice=function(e,a){var d=this._baseState,p=d.choice[e.type];return p||r(!1,e.type+" not found in "+JSON.stringify(Object.keys(d.choice))),p._encode(e.value,a)},o.prototype._encodePrimitive=function(e,a){var d=this._baseState;if(/str$/.test(e))return this._encodeStr(a,e);if("objid"===e&&d.args)return this._encodeObjid(a,d.reverseArgs[0],d.args[1]);if("objid"===e)return this._encodeObjid(a,null,null);if("gentime"===e||"utctime"===e)return this._encodeTime(a,e);if("null_"===e)return this._encodeNull();if("int"===e||"enum"===e)return this._encodeInt(a,d.args&&d.reverseArgs[0]);if("bool"===e)return this._encodeBool(a);if("objDesc"===e)return this._encodeStr(a,e);throw new Error("Unsupported tag: "+e)},o.prototype._isNumstr=function(e){return/^[0-9 ]*$/.test(e)},o.prototype._isPrintstr=function(e){return/^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(e)}},"./node_modules/asn1.js/lib/asn1/base/reporter.js":(e,a,d)=>{var p=d("./node_modules/inherits/inherits.js");function t(e){this._reporterState={obj:null,path:[],options:e||{},errors:[]}}function i(e,a){this.path=e,this.rethrow(a)}a.Reporter=t,t.prototype.isError=function(e){return e instanceof i},t.prototype.save=function(){var e=this._reporterState;return{obj:e.obj,pathLen:e.path.length}},t.prototype.restore=function(e){var a=this._reporterState;a.obj=e.obj,a.path=a.path.slice(0,e.pathLen)},t.prototype.enterKey=function(e){return this._reporterState.path.push(e)},t.prototype.exitKey=function(e){var a=this._reporterState;a.path=a.path.slice(0,e-1)},t.prototype.leaveKey=function(e,a,d){var p=this._reporterState;this.exitKey(e),null!==p.obj&&(p.obj[a]=d)},t.prototype.path=function(){return this._reporterState.path.join("/")},t.prototype.enterObject=function(){var e=this._reporterState,a=e.obj;return e.obj={},a},t.prototype.leaveObject=function(e){var a=this._reporterState,d=a.obj;return a.obj=e,d},t.prototype.error=function(e){var a,d=this._reporterState,p=e instanceof i;if(a=p?e:new i(d.path.map((function(e){return"["+JSON.stringify(e)+"]"})).join(""),e.message||e,e.stack),!d.options.partial)throw a;return p||d.errors.push(a),a},t.prototype.wrapResult=function(e){var a=this._reporterState;return a.options.partial?{result:this.isError(e)?null:e,errors:a.errors}:e},p(i,Error),i.prototype.rethrow=function(e){if(this.message=e+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,i),!this.stack)try{throw new Error(this.message)}catch(e){this.stack=e.stack}return this}},"./node_modules/asn1.js/lib/asn1/constants/der.js":(e,a,d)=>{var p=d("./node_modules/asn1.js/lib/asn1/constants/index.js");a.tagClass={0:"universal",1:"application",2:"context",3:"private"},a.tagClassByName=p._reverse(a.tagClass),a.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},a.tagByName=p._reverse(a.tag)},"./node_modules/asn1.js/lib/asn1/constants/index.js":(e,a,d)=>{var p=a;p._reverse=function(e){var a={};return Object.keys(e).forEach((function(d){(0|d)==d&&(d|=0);var p=e[d];a[p]=d})),a},p.der=d("./node_modules/asn1.js/lib/asn1/constants/der.js")},"./node_modules/asn1.js/lib/asn1/decoders/der.js":(e,a,d)=>{var p=d("./node_modules/inherits/inherits.js"),t=d("./node_modules/asn1.js/lib/asn1.js"),i=t.base,r=t.bignum,n=t.constants.der;function s(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new o,this.tree._init(e.body)}function o(e){i.Node.call(this,"der",e)}function l(e,a){var d=e.readUInt8(a);if(e.isError(d))return d;var p=n.tagClass[d>>6],t=0==(32&d);if(31==(31&d)){var i=d;for(d=0;128==(128&i);){if(i=e.readUInt8(a),e.isError(i))return i;d<<=7,d|=127&i}}else d&=31;return{cls:p,primitive:t,tag:d,tagStr:n.tag[d]}}function m(e,a,d){var p=e.readUInt8(d);if(e.isError(p))return p;if(!a&&128===p)return null;if(0==(128&p))return p;var t=127&p;if(t>4)return e.error("length octect is too long");p=0;for(var i=0;i<t;i++){p<<=8;var r=e.readUInt8(d);if(e.isError(r))return r;p|=r}return p}e.exports=s,s.prototype.decode=function(e,a){return e instanceof i.DecoderBuffer||(e=new i.DecoderBuffer(e,a)),this.tree._decode(e,a)},p(o,i.Node),o.prototype._peekTag=function(e,a,d){if(e.isEmpty())return!1;var p=e.save(),t=l(e,'Failed to peek tag: "'+a+'"');return e.isError(t)?t:(e.restore(p),t.tag===a||t.tagStr===a||t.tagStr+"of"===a||d)},o.prototype._decodeTag=function(e,a,d){var p=l(e,'Failed to decode tag of "'+a+'"');if(e.isError(p))return p;var t=m(e,p.primitive,'Failed to get length of "'+a+'"');if(e.isError(t))return t;if(!d&&p.tag!==a&&p.tagStr!==a&&p.tagStr+"of"!==a)return e.error('Failed to match tag: "'+a+'"');if(p.primitive||null!==t)return e.skip(t,'Failed to match body of: "'+a+'"');var i=e.save(),r=this._skipUntilEnd(e,'Failed to skip indefinite length body: "'+this.tag+'"');return e.isError(r)?r:(t=e.offset-i.offset,e.restore(i),e.skip(t,'Failed to match body of: "'+a+'"'))},o.prototype._skipUntilEnd=function(e,a){for(;;){var d=l(e,a);if(e.isError(d))return d;var p,t=m(e,d.primitive,a);if(e.isError(t))return t;if(p=d.primitive||null!==t?e.skip(t):this._skipUntilEnd(e,a),e.isError(p))return p;if("end"===d.tagStr)break}},o.prototype._decodeList=function(e,a,d,p){for(var t=[];!e.isEmpty();){var i=this._peekTag(e,"end");if(e.isError(i))return i;var r=d.decode(e,"der",p);if(e.isError(r)&&i)break;t.push(r)}return t},o.prototype._decodeStr=function(e,a){if("bitstr"===a){var d=e.readUInt8();return e.isError(d)?d:{unused:d,data:e.raw()}}if("bmpstr"===a){var p=e.raw();if(p.length%2==1)return e.error("Decoding of string type: bmpstr length mismatch");for(var t="",i=0;i<p.length/2;i++)t+=String.fromCharCode(p.readUInt16BE(2*i));return t}if("numstr"===a){var r=e.raw().toString("ascii");return this._isNumstr(r)?r:e.error("Decoding of string type: numstr unsupported characters")}if("octstr"===a)return e.raw();if("objDesc"===a)return e.raw();if("printstr"===a){var n=e.raw().toString("ascii");return this._isPrintstr(n)?n:e.error("Decoding of string type: printstr unsupported characters")}return/str$/.test(a)?e.raw().toString():e.error("Decoding of string type: "+a+" unsupported")},o.prototype._decodeObjid=function(e,a,d){for(var p,t=[],i=0;!e.isEmpty();){var r=e.readUInt8();i<<=7,i|=127&r,0==(128&r)&&(t.push(i),i=0)}128&r&&t.push(i);var n=t[0]/40|0,s=t[0]%40;if(p=d?t:[n,s].concat(t.slice(1)),a){var o=a[p.join(" ")];void 0===o&&(o=a[p.join(".")]),void 0!==o&&(p=o)}return p},o.prototype._decodeTime=function(e,a){var d=e.raw().toString();if("gentime"===a)var p=0|d.slice(0,4),t=0|d.slice(4,6),i=0|d.slice(6,8),r=0|d.slice(8,10),n=0|d.slice(10,12),s=0|d.slice(12,14);else{if("utctime"!==a)return e.error("Decoding "+a+" time is not supported yet");p=0|d.slice(0,2),t=0|d.slice(2,4),i=0|d.slice(4,6),r=0|d.slice(6,8),n=0|d.slice(8,10),s=0|d.slice(10,12),p=p<70?2e3+p:1900+p}return Date.UTC(p,t-1,i,r,n,s,0)},o.prototype._decodeNull=function(e){return null},o.prototype._decodeBool=function(e){var a=e.readUInt8();return e.isError(a)?a:0!==a},o.prototype._decodeInt=function(e,a){var d=e.raw(),p=new r(d);return a&&(p=a[p.toString(10)]||p),p},o.prototype._use=function(e,a){return"function"==typeof e&&(e=e(a)),e._getDecoder("der").tree}},"./node_modules/asn1.js/lib/asn1/decoders/index.js":(e,a,d)=>{var p=a;p.der=d("./node_modules/asn1.js/lib/asn1/decoders/der.js"),p.pem=d("./node_modules/asn1.js/lib/asn1/decoders/pem.js")},"./node_modules/asn1.js/lib/asn1/decoders/pem.js":(e,a,d)=>{var p=d("./node_modules/inherits/inherits.js"),t=d("buffer").Buffer,i=d("./node_modules/asn1.js/lib/asn1/decoders/der.js");function r(e){i.call(this,e),this.enc="pem"}p(r,i),e.exports=r,r.prototype.decode=function(e,a){for(var d=e.toString().split(/[\r\n]+/g),p=a.label.toUpperCase(),r=/^-----(BEGIN|END) ([^-]+)-----$/,n=-1,s=-1,o=0;o<d.length;o++){var l=d[o].match(r);if(null!==l&&l[2]===p){if(-1!==n){if("END"!==l[1])break;s=o;break}if("BEGIN"!==l[1])break;n=o}}if(-1===n||-1===s)throw new Error("PEM section not found for: "+p);var m=d.slice(n+1,s).join("");m.replace(/[^a-z0-9\+\/=]+/gi,"");var u=new t(m,"base64");return i.prototype.decode.call(this,u,a)}},"./node_modules/asn1.js/lib/asn1/encoders/der.js":(e,a,d)=>{var p=d("./node_modules/inherits/inherits.js"),t=d("buffer").Buffer,i=d("./node_modules/asn1.js/lib/asn1.js"),r=i.base,n=i.constants.der;function s(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new o,this.tree._init(e.body)}function o(e){r.Node.call(this,"der",e)}function l(e){return e<10?"0"+e:e}e.exports=s,s.prototype.encode=function(e,a){return this.tree._encode(e,a).join()},p(o,r.Node),o.prototype._encodeComposite=function(e,a,d,p){var i,r=function(e,a,d,p){var t;if("seqof"===e?e="seq":"setof"===e&&(e="set"),n.tagByName.hasOwnProperty(e))t=n.tagByName[e];else{if("number"!=typeof e||(0|e)!==e)return p.error("Unknown tag: "+e);t=e}return t>=31?p.error("Multi-octet tag encoding unsupported"):(a||(t|=32),t|=n.tagClassByName[d||"universal"]<<6)}(e,a,d,this.reporter);if(p.length<128)return(i=new t(2))[0]=r,i[1]=p.length,this._createEncoderBuffer([i,p]);for(var s=1,o=p.length;o>=256;o>>=8)s++;(i=new t(2+s))[0]=r,i[1]=128|s,o=1+s;for(var l=p.length;l>0;o--,l>>=8)i[o]=255&l;return this._createEncoderBuffer([i,p])},o.prototype._encodeStr=function(e,a){if("bitstr"===a)return this._createEncoderBuffer([0|e.unused,e.data]);if("bmpstr"===a){for(var d=new t(2*e.length),p=0;p<e.length;p++)d.writeUInt16BE(e.charCodeAt(p),2*p);return this._createEncoderBuffer(d)}return"numstr"===a?this._isNumstr(e)?this._createEncoderBuffer(e):this.reporter.error("Encoding of string type: numstr supports only digits and space"):"printstr"===a?this._isPrintstr(e)?this._createEncoderBuffer(e):this.reporter.error("Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark"):/str$/.test(a)||"objDesc"===a?this._createEncoderBuffer(e):this.reporter.error("Encoding of string type: "+a+" unsupported")},o.prototype._encodeObjid=function(e,a,d){if("string"==typeof e){if(!a)return this.reporter.error("string objid given, but no values map found");if(!a.hasOwnProperty(e))return this.reporter.error("objid not found in values map");e=a[e].split(/[\s\.]+/g);for(var p=0;p<e.length;p++)e[p]|=0}else if(Array.isArray(e))for(e=e.slice(),p=0;p<e.length;p++)e[p]|=0;if(!Array.isArray(e))return this.reporter.error("objid() should be either array or string, got: "+JSON.stringify(e));if(!d){if(e[1]>=40)return this.reporter.error("Second objid identifier OOB");e.splice(0,2,40*e[0]+e[1])}var i=0;for(p=0;p<e.length;p++){var r=e[p];for(i++;r>=128;r>>=7)i++}var n=new t(i),s=n.length-1;for(p=e.length-1;p>=0;p--)for(r=e[p],n[s--]=127&r;(r>>=7)>0;)n[s--]=128|127&r;return this._createEncoderBuffer(n)},o.prototype._encodeTime=function(e,a){var d,p=new Date(e);return"gentime"===a?d=[l(p.getFullYear()),l(p.getUTCMonth()+1),l(p.getUTCDate()),l(p.getUTCHours()),l(p.getUTCMinutes()),l(p.getUTCSeconds()),"Z"].join(""):"utctime"===a?d=[l(p.getFullYear()%100),l(p.getUTCMonth()+1),l(p.getUTCDate()),l(p.getUTCHours()),l(p.getUTCMinutes()),l(p.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+a+" time is not supported yet"),this._encodeStr(d,"octstr")},o.prototype._encodeNull=function(){return this._createEncoderBuffer("")},o.prototype._encodeInt=function(e,a){if("string"==typeof e){if(!a)return this.reporter.error("String int or enum given, but no values map");if(!a.hasOwnProperty(e))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(e));e=a[e]}if("number"!=typeof e&&!t.isBuffer(e)){var d=e.toArray();!e.sign&&128&d[0]&&d.unshift(0),e=new t(d)}if(t.isBuffer(e)){var p=e.length;0===e.length&&p++;var i=new t(p);return e.copy(i),0===e.length&&(i[0]=0),this._createEncoderBuffer(i)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);p=1;for(var r=e;r>=256;r>>=8)p++;for(r=(i=new Array(p)).length-1;r>=0;r--)i[r]=255&e,e>>=8;return 128&i[0]&&i.unshift(0),this._createEncoderBuffer(new t(i))},o.prototype._encodeBool=function(e){return this._createEncoderBuffer(e?255:0)},o.prototype._use=function(e,a){return"function"==typeof e&&(e=e(a)),e._getEncoder("der").tree},o.prototype._skipDefault=function(e,a,d){var p,t=this._baseState;if(null===t.default)return!1;var i=e.join();if(void 0===t.defaultBuffer&&(t.defaultBuffer=this._encodeValue(t.default,a,d).join()),i.length!==t.defaultBuffer.length)return!1;for(p=0;p<i.length;p++)if(i[p]!==t.defaultBuffer[p])return!1;return!0}},"./node_modules/asn1.js/lib/asn1/encoders/index.js":(e,a,d)=>{var p=a;p.der=d("./node_modules/asn1.js/lib/asn1/encoders/der.js"),p.pem=d("./node_modules/asn1.js/lib/asn1/encoders/pem.js")},"./node_modules/asn1.js/lib/asn1/encoders/pem.js":(e,a,d)=>{var p=d("./node_modules/inherits/inherits.js"),t=d("./node_modules/asn1.js/lib/asn1/encoders/der.js");function i(e){t.call(this,e),this.enc="pem"}p(i,t),e.exports=i,i.prototype.encode=function(e,a){for(var d=t.prototype.encode.call(this,e).toString("base64"),p=["-----BEGIN "+a.label+"-----"],i=0;i<d.length;i+=64)p.push(d.slice(i,i+64));return p.push("-----END "+a.label+"-----"),p.join("\n")}},"./node_modules/bn.js/lib/bn.js":function(e,a,d){!function(e,a){"use strict";function p(e,a){if(!e)throw new Error(a||"Assertion failed")}function t(e,a){e.super_=a;var d=function(){};d.prototype=a.prototype,e.prototype=new d,e.prototype.constructor=e}function i(e,a,d){if(i.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==a&&"be"!==a||(d=a,a=10),this._init(e||0,a||10,d||"be"))}var r;"object"==typeof e?e.exports=i:a.BN=i,i.BN=i,i.wordSize=26;try{r="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:d("buffer").Buffer}catch(e){}function n(e,a){var d=e.charCodeAt(a);return d>=65&&d<=70?d-55:d>=97&&d<=102?d-87:d-48&15}function s(e,a,d){var p=n(e,d);return d-1>=a&&(p|=n(e,d-1)<<4),p}function o(e,a,d,p){for(var t=0,i=Math.min(e.length,d),r=a;r<i;r++){var n=e.charCodeAt(r)-48;t*=p,t+=n>=49?n-49+10:n>=17?n-17+10:n}return t}i.isBN=function(e){return e instanceof i||null!==e&&"object"==typeof e&&e.constructor.wordSize===i.wordSize&&Array.isArray(e.words)},i.max=function(e,a){return e.cmp(a)>0?e:a},i.min=function(e,a){return e.cmp(a)<0?e:a},i.prototype._init=function(e,a,d){if("number"==typeof e)return this._initNumber(e,a,d);if("object"==typeof e)return this._initArray(e,a,d);"hex"===a&&(a=16),p(a===(0|a)&&a>=2&&a<=36);var t=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(t++,this.negative=1),t<e.length&&(16===a?this._parseHex(e,t,d):(this._parseBase(e,a,t),"le"===d&&this._initArray(this.toArray(),a,d)))},i.prototype._initNumber=function(e,a,d){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(p(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),"le"===d&&this._initArray(this.toArray(),a,d)},i.prototype._initArray=function(e,a,d){if(p("number"==typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var t=0;t<this.length;t++)this.words[t]=0;var i,r,n=0;if("be"===d)for(t=e.length-1,i=0;t>=0;t-=3)r=e[t]|e[t-1]<<8|e[t-2]<<16,this.words[i]|=r<<n&67108863,this.words[i+1]=r>>>26-n&67108863,(n+=24)>=26&&(n-=26,i++);else if("le"===d)for(t=0,i=0;t<e.length;t+=3)r=e[t]|e[t+1]<<8|e[t+2]<<16,this.words[i]|=r<<n&67108863,this.words[i+1]=r>>>26-n&67108863,(n+=24)>=26&&(n-=26,i++);return this.strip()},i.prototype._parseHex=function(e,a,d){this.length=Math.ceil((e.length-a)/6),this.words=new Array(this.length);for(var p=0;p<this.length;p++)this.words[p]=0;var t,i=0,r=0;if("be"===d)for(p=e.length-1;p>=a;p-=2)t=s(e,a,p)<<i,this.words[r]|=67108863&t,i>=18?(i-=18,r+=1,this.words[r]|=t>>>26):i+=8;else for(p=(e.length-a)%2==0?a+1:a;p<e.length;p+=2)t=s(e,a,p)<<i,this.words[r]|=67108863&t,i>=18?(i-=18,r+=1,this.words[r]|=t>>>26):i+=8;this.strip()},i.prototype._parseBase=function(e,a,d){this.words=[0],this.length=1;for(var p=0,t=1;t<=67108863;t*=a)p++;p--,t=t/a|0;for(var i=e.length-d,r=i%p,n=Math.min(i,i-r)+d,s=0,l=d;l<n;l+=p)s=o(e,l,l+p,a),this.imuln(t),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s);if(0!==r){var m=1;for(s=o(e,l,e.length,a),l=0;l<r;l++)m*=a;this.imuln(m),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s)}this.strip()},i.prototype.copy=function(e){e.words=new Array(this.length);for(var a=0;a<this.length;a++)e.words[a]=this.words[a];e.length=this.length,e.negative=this.negative,e.red=this.red},i.prototype.clone=function(){var e=new i(null);return this.copy(e),e},i.prototype._expand=function(e){for(;this.length<e;)this.words[this.length++]=0;return this},i.prototype.strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},i.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],m=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],u=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(e,a,d){d.negative=a.negative^e.negative;var p=e.length+a.length|0;d.length=p,p=p-1|0;var t=0|e.words[0],i=0|a.words[0],r=t*i,n=67108863&r,s=r/67108864|0;d.words[0]=n;for(var o=1;o<p;o++){for(var l=s>>>26,m=67108863&s,u=Math.min(o,a.length-1),f=Math.max(0,o-e.length+1);f<=u;f++){var c=o-f|0;l+=(r=(t=0|e.words[c])*(i=0|a.words[f])+m)/67108864|0,m=67108863&r}d.words[o]=0|m,s=0|l}return 0!==s?d.words[o]=0|s:d.length--,d.strip()}i.prototype.toString=function(e,a){var d;if(a=0|a||1,16===(e=e||10)||"hex"===e){d="";for(var t=0,i=0,r=0;r<this.length;r++){var n=this.words[r],s=(16777215&(n<<t|i)).toString(16);d=0!=(i=n>>>24-t&16777215)||r!==this.length-1?l[6-s.length]+s+d:s+d,(t+=2)>=26&&(t-=26,r--)}for(0!==i&&(d=i.toString(16)+d);d.length%a!=0;)d="0"+d;return 0!==this.negative&&(d="-"+d),d}if(e===(0|e)&&e>=2&&e<=36){var o=m[e],f=u[e];d="";var c=this.clone();for(c.negative=0;!c.isZero();){var h=c.modn(f).toString(e);d=(c=c.idivn(f)).isZero()?h+d:l[o-h.length]+h+d}for(this.isZero()&&(d="0"+d);d.length%a!=0;)d="0"+d;return 0!==this.negative&&(d="-"+d),d}p(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&p(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toBuffer=function(e,a){return p(void 0!==r),this.toArrayLike(r,e,a)},i.prototype.toArray=function(e,a){return this.toArrayLike(Array,e,a)},i.prototype.toArrayLike=function(e,a,d){var t=this.byteLength(),i=d||Math.max(1,t);p(t<=i,"byte array longer than desired length"),p(i>0,"Requested array length <= 0"),this.strip();var r,n,s="le"===a,o=new e(i),l=this.clone();if(s){for(n=0;!l.isZero();n++)r=l.andln(255),l.iushrn(8),o[n]=r;for(;n<i;n++)o[n]=0}else{for(n=0;n<i-t;n++)o[n]=0;for(n=0;!l.isZero();n++)r=l.andln(255),l.iushrn(8),o[i-n-1]=r}return o},Math.clz32?i.prototype._countBits=function(e){return 32-Math.clz32(e)}:i.prototype._countBits=function(e){var a=e,d=0;return a>=4096&&(d+=13,a>>>=13),a>=64&&(d+=7,a>>>=7),a>=8&&(d+=4,a>>>=4),a>=2&&(d+=2,a>>>=2),d+a},i.prototype._zeroBits=function(e){if(0===e)return 26;var a=e,d=0;return 0==(8191&a)&&(d+=13,a>>>=13),0==(127&a)&&(d+=7,a>>>=7),0==(15&a)&&(d+=4,a>>>=4),0==(3&a)&&(d+=2,a>>>=2),0==(1&a)&&d++,d},i.prototype.bitLength=function(){var e=this.words[this.length-1],a=this._countBits(e);return 26*(this.length-1)+a},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,a=0;a<this.length;a++){var d=this._zeroBits(this.words[a]);if(e+=d,26!==d)break}return e},i.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},i.prototype.toTwos=function(e){return 0!==this.negative?this.abs().inotn(e).iaddn(1):this.clone()},i.prototype.fromTwos=function(e){return this.testn(e-1)?this.notn(e).iaddn(1).ineg():this.clone()},i.prototype.isNeg=function(){return 0!==this.negative},i.prototype.neg=function(){return this.clone().ineg()},i.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},i.prototype.iuor=function(e){for(;this.length<e.length;)this.words[this.length++]=0;for(var a=0;a<e.length;a++)this.words[a]=this.words[a]|e.words[a];return this.strip()},i.prototype.ior=function(e){return p(0==(this.negative|e.negative)),this.iuor(e)},i.prototype.or=function(e){return this.length>e.length?this.clone().ior(e):e.clone().ior(this)},i.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},i.prototype.iuand=function(e){var a;a=this.length>e.length?e:this;for(var d=0;d<a.length;d++)this.words[d]=this.words[d]&e.words[d];return this.length=a.length,this.strip()},i.prototype.iand=function(e){return p(0==(this.negative|e.negative)),this.iuand(e)},i.prototype.and=function(e){return this.length>e.length?this.clone().iand(e):e.clone().iand(this)},i.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},i.prototype.iuxor=function(e){var a,d;this.length>e.length?(a=this,d=e):(a=e,d=this);for(var p=0;p<d.length;p++)this.words[p]=a.words[p]^d.words[p];if(this!==a)for(;p<a.length;p++)this.words[p]=a.words[p];return this.length=a.length,this.strip()},i.prototype.ixor=function(e){return p(0==(this.negative|e.negative)),this.iuxor(e)},i.prototype.xor=function(e){return this.length>e.length?this.clone().ixor(e):e.clone().ixor(this)},i.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},i.prototype.inotn=function(e){p("number"==typeof e&&e>=0);var a=0|Math.ceil(e/26),d=e%26;this._expand(a),d>0&&a--;for(var t=0;t<a;t++)this.words[t]=67108863&~this.words[t];return d>0&&(this.words[t]=~this.words[t]&67108863>>26-d),this.strip()},i.prototype.notn=function(e){return this.clone().inotn(e)},i.prototype.setn=function(e,a){p("number"==typeof e&&e>=0);var d=e/26|0,t=e%26;return this._expand(d+1),this.words[d]=a?this.words[d]|1<<t:this.words[d]&~(1<<t),this.strip()},i.prototype.iadd=function(e){var a,d,p;if(0!==this.negative&&0===e.negative)return this.negative=0,a=this.isub(e),this.negative^=1,this._normSign();if(0===this.negative&&0!==e.negative)return e.negative=0,a=this.isub(e),e.negative=1,a._normSign();this.length>e.length?(d=this,p=e):(d=e,p=this);for(var t=0,i=0;i<p.length;i++)a=(0|d.words[i])+(0|p.words[i])+t,this.words[i]=67108863&a,t=a>>>26;for(;0!==t&&i<d.length;i++)a=(0|d.words[i])+t,this.words[i]=67108863&a,t=a>>>26;if(this.length=d.length,0!==t)this.words[this.length]=t,this.length++;else if(d!==this)for(;i<d.length;i++)this.words[i]=d.words[i];return this},i.prototype.add=function(e){var a;return 0!==e.negative&&0===this.negative?(e.negative=0,a=this.sub(e),e.negative^=1,a):0===e.negative&&0!==this.negative?(this.negative=0,a=e.sub(this),this.negative=1,a):this.length>e.length?this.clone().iadd(e):e.clone().iadd(this)},i.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var a=this.iadd(e);return e.negative=1,a._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var d,p,t=this.cmp(e);if(0===t)return this.negative=0,this.length=1,this.words[0]=0,this;t>0?(d=this,p=e):(d=e,p=this);for(var i=0,r=0;r<p.length;r++)i=(a=(0|d.words[r])-(0|p.words[r])+i)>>26,this.words[r]=67108863&a;for(;0!==i&&r<d.length;r++)i=(a=(0|d.words[r])+i)>>26,this.words[r]=67108863&a;if(0===i&&r<d.length&&d!==this)for(;r<d.length;r++)this.words[r]=d.words[r];return this.length=Math.max(this.length,r),d!==this&&(this.negative=1),this.strip()},i.prototype.sub=function(e){return this.clone().isub(e)};var c=function(e,a,d){var p,t,i,r=e.words,n=a.words,s=d.words,o=0,l=0|r[0],m=8191&l,u=l>>>13,f=0|r[1],c=8191&f,h=f>>>13,v=0|r[2],b=8191&v,w=v>>>13,y=0|r[3],g=8191&y,_=y>>>13,S=0|r[4],N=8191&S,M=S>>>13,x=0|r[5],D=8191&x,j=x>>>13,A=0|r[6],T=8191&A,V=A>>>13,E=0|r[7],k=8191&E,B=E>>>13,P=0|r[8],I=8191&P,C=P>>>13,R=0|r[9],O=8191&R,L=R>>>13,F=0|n[0],z=8191&F,q=F>>>13,U=0|n[1],H=8191&U,K=U>>>13,G=0|n[2],$=8191&G,Z=G>>>13,J=0|n[3],W=8191&J,X=J>>>13,Y=0|n[4],Q=8191&Y,ee=Y>>>13,ae=0|n[5],de=8191&ae,pe=ae>>>13,te=0|n[6],ie=8191&te,re=te>>>13,ne=0|n[7],se=8191&ne,oe=ne>>>13,le=0|n[8],me=8191&le,ue=le>>>13,fe=0|n[9],ce=8191&fe,he=fe>>>13;d.negative=e.negative^a.negative,d.length=19;var ve=(o+(p=Math.imul(m,z))|0)+((8191&(t=(t=Math.imul(m,q))+Math.imul(u,z)|0))<<13)|0;o=((i=Math.imul(u,q))+(t>>>13)|0)+(ve>>>26)|0,ve&=67108863,p=Math.imul(c,z),t=(t=Math.imul(c,q))+Math.imul(h,z)|0,i=Math.imul(h,q);var be=(o+(p=p+Math.imul(m,H)|0)|0)+((8191&(t=(t=t+Math.imul(m,K)|0)+Math.imul(u,H)|0))<<13)|0;o=((i=i+Math.imul(u,K)|0)+(t>>>13)|0)+(be>>>26)|0,be&=67108863,p=Math.imul(b,z),t=(t=Math.imul(b,q))+Math.imul(w,z)|0,i=Math.imul(w,q),p=p+Math.imul(c,H)|0,t=(t=t+Math.imul(c,K)|0)+Math.imul(h,H)|0,i=i+Math.imul(h,K)|0;var we=(o+(p=p+Math.imul(m,$)|0)|0)+((8191&(t=(t=t+Math.imul(m,Z)|0)+Math.imul(u,$)|0))<<13)|0;o=((i=i+Math.imul(u,Z)|0)+(t>>>13)|0)+(we>>>26)|0,we&=67108863,p=Math.imul(g,z),t=(t=Math.imul(g,q))+Math.imul(_,z)|0,i=Math.imul(_,q),p=p+Math.imul(b,H)|0,t=(t=t+Math.imul(b,K)|0)+Math.imul(w,H)|0,i=i+Math.imul(w,K)|0,p=p+Math.imul(c,$)|0,t=(t=t+Math.imul(c,Z)|0)+Math.imul(h,$)|0,i=i+Math.imul(h,Z)|0;var ye=(o+(p=p+Math.imul(m,W)|0)|0)+((8191&(t=(t=t+Math.imul(m,X)|0)+Math.imul(u,W)|0))<<13)|0;o=((i=i+Math.imul(u,X)|0)+(t>>>13)|0)+(ye>>>26)|0,ye&=67108863,p=Math.imul(N,z),t=(t=Math.imul(N,q))+Math.imul(M,z)|0,i=Math.imul(M,q),p=p+Math.imul(g,H)|0,t=(t=t+Math.imul(g,K)|0)+Math.imul(_,H)|0,i=i+Math.imul(_,K)|0,p=p+Math.imul(b,$)|0,t=(t=t+Math.imul(b,Z)|0)+Math.imul(w,$)|0,i=i+Math.imul(w,Z)|0,p=p+Math.imul(c,W)|0,t=(t=t+Math.imul(c,X)|0)+Math.imul(h,W)|0,i=i+Math.imul(h,X)|0;var ge=(o+(p=p+Math.imul(m,Q)|0)|0)+((8191&(t=(t=t+Math.imul(m,ee)|0)+Math.imul(u,Q)|0))<<13)|0;o=((i=i+Math.imul(u,ee)|0)+(t>>>13)|0)+(ge>>>26)|0,ge&=67108863,p=Math.imul(D,z),t=(t=Math.imul(D,q))+Math.imul(j,z)|0,i=Math.imul(j,q),p=p+Math.imul(N,H)|0,t=(t=t+Math.imul(N,K)|0)+Math.imul(M,H)|0,i=i+Math.imul(M,K)|0,p=p+Math.imul(g,$)|0,t=(t=t+Math.imul(g,Z)|0)+Math.imul(_,$)|0,i=i+Math.imul(_,Z)|0,p=p+Math.imul(b,W)|0,t=(t=t+Math.imul(b,X)|0)+Math.imul(w,W)|0,i=i+Math.imul(w,X)|0,p=p+Math.imul(c,Q)|0,t=(t=t+Math.imul(c,ee)|0)+Math.imul(h,Q)|0,i=i+Math.imul(h,ee)|0;var _e=(o+(p=p+Math.imul(m,de)|0)|0)+((8191&(t=(t=t+Math.imul(m,pe)|0)+Math.imul(u,de)|0))<<13)|0;o=((i=i+Math.imul(u,pe)|0)+(t>>>13)|0)+(_e>>>26)|0,_e&=67108863,p=Math.imul(T,z),t=(t=Math.imul(T,q))+Math.imul(V,z)|0,i=Math.imul(V,q),p=p+Math.imul(D,H)|0,t=(t=t+Math.imul(D,K)|0)+Math.imul(j,H)|0,i=i+Math.imul(j,K)|0,p=p+Math.imul(N,$)|0,t=(t=t+Math.imul(N,Z)|0)+Math.imul(M,$)|0,i=i+Math.imul(M,Z)|0,p=p+Math.imul(g,W)|0,t=(t=t+Math.imul(g,X)|0)+Math.imul(_,W)|0,i=i+Math.imul(_,X)|0,p=p+Math.imul(b,Q)|0,t=(t=t+Math.imul(b,ee)|0)+Math.imul(w,Q)|0,i=i+Math.imul(w,ee)|0,p=p+Math.imul(c,de)|0,t=(t=t+Math.imul(c,pe)|0)+Math.imul(h,de)|0,i=i+Math.imul(h,pe)|0;var Se=(o+(p=p+Math.imul(m,ie)|0)|0)+((8191&(t=(t=t+Math.imul(m,re)|0)+Math.imul(u,ie)|0))<<13)|0;o=((i=i+Math.imul(u,re)|0)+(t>>>13)|0)+(Se>>>26)|0,Se&=67108863,p=Math.imul(k,z),t=(t=Math.imul(k,q))+Math.imul(B,z)|0,i=Math.imul(B,q),p=p+Math.imul(T,H)|0,t=(t=t+Math.imul(T,K)|0)+Math.imul(V,H)|0,i=i+Math.imul(V,K)|0,p=p+Math.imul(D,$)|0,t=(t=t+Math.imul(D,Z)|0)+Math.imul(j,$)|0,i=i+Math.imul(j,Z)|0,p=p+Math.imul(N,W)|0,t=(t=t+Math.imul(N,X)|0)+Math.imul(M,W)|0,i=i+Math.imul(M,X)|0,p=p+Math.imul(g,Q)|0,t=(t=t+Math.imul(g,ee)|0)+Math.imul(_,Q)|0,i=i+Math.imul(_,ee)|0,p=p+Math.imul(b,de)|0,t=(t=t+Math.imul(b,pe)|0)+Math.imul(w,de)|0,i=i+Math.imul(w,pe)|0,p=p+Math.imul(c,ie)|0,t=(t=t+Math.imul(c,re)|0)+Math.imul(h,ie)|0,i=i+Math.imul(h,re)|0;var Ne=(o+(p=p+Math.imul(m,se)|0)|0)+((8191&(t=(t=t+Math.imul(m,oe)|0)+Math.imul(u,se)|0))<<13)|0;o=((i=i+Math.imul(u,oe)|0)+(t>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,p=Math.imul(I,z),t=(t=Math.imul(I,q))+Math.imul(C,z)|0,i=Math.imul(C,q),p=p+Math.imul(k,H)|0,t=(t=t+Math.imul(k,K)|0)+Math.imul(B,H)|0,i=i+Math.imul(B,K)|0,p=p+Math.imul(T,$)|0,t=(t=t+Math.imul(T,Z)|0)+Math.imul(V,$)|0,i=i+Math.imul(V,Z)|0,p=p+Math.imul(D,W)|0,t=(t=t+Math.imul(D,X)|0)+Math.imul(j,W)|0,i=i+Math.imul(j,X)|0,p=p+Math.imul(N,Q)|0,t=(t=t+Math.imul(N,ee)|0)+Math.imul(M,Q)|0,i=i+Math.imul(M,ee)|0,p=p+Math.imul(g,de)|0,t=(t=t+Math.imul(g,pe)|0)+Math.imul(_,de)|0,i=i+Math.imul(_,pe)|0,p=p+Math.imul(b,ie)|0,t=(t=t+Math.imul(b,re)|0)+Math.imul(w,ie)|0,i=i+Math.imul(w,re)|0,p=p+Math.imul(c,se)|0,t=(t=t+Math.imul(c,oe)|0)+Math.imul(h,se)|0,i=i+Math.imul(h,oe)|0;var Me=(o+(p=p+Math.imul(m,me)|0)|0)+((8191&(t=(t=t+Math.imul(m,ue)|0)+Math.imul(u,me)|0))<<13)|0;o=((i=i+Math.imul(u,ue)|0)+(t>>>13)|0)+(Me>>>26)|0,Me&=67108863,p=Math.imul(O,z),t=(t=Math.imul(O,q))+Math.imul(L,z)|0,i=Math.imul(L,q),p=p+Math.imul(I,H)|0,t=(t=t+Math.imul(I,K)|0)+Math.imul(C,H)|0,i=i+Math.imul(C,K)|0,p=p+Math.imul(k,$)|0,t=(t=t+Math.imul(k,Z)|0)+Math.imul(B,$)|0,i=i+Math.imul(B,Z)|0,p=p+Math.imul(T,W)|0,t=(t=t+Math.imul(T,X)|0)+Math.imul(V,W)|0,i=i+Math.imul(V,X)|0,p=p+Math.imul(D,Q)|0,t=(t=t+Math.imul(D,ee)|0)+Math.imul(j,Q)|0,i=i+Math.imul(j,ee)|0,p=p+Math.imul(N,de)|0,t=(t=t+Math.imul(N,pe)|0)+Math.imul(M,de)|0,i=i+Math.imul(M,pe)|0,p=p+Math.imul(g,ie)|0,t=(t=t+Math.imul(g,re)|0)+Math.imul(_,ie)|0,i=i+Math.imul(_,re)|0,p=p+Math.imul(b,se)|0,t=(t=t+Math.imul(b,oe)|0)+Math.imul(w,se)|0,i=i+Math.imul(w,oe)|0,p=p+Math.imul(c,me)|0,t=(t=t+Math.imul(c,ue)|0)+Math.imul(h,me)|0,i=i+Math.imul(h,ue)|0;var xe=(o+(p=p+Math.imul(m,ce)|0)|0)+((8191&(t=(t=t+Math.imul(m,he)|0)+Math.imul(u,ce)|0))<<13)|0;o=((i=i+Math.imul(u,he)|0)+(t>>>13)|0)+(xe>>>26)|0,xe&=67108863,p=Math.imul(O,H),t=(t=Math.imul(O,K))+Math.imul(L,H)|0,i=Math.imul(L,K),p=p+Math.imul(I,$)|0,t=(t=t+Math.imul(I,Z)|0)+Math.imul(C,$)|0,i=i+Math.imul(C,Z)|0,p=p+Math.imul(k,W)|0,t=(t=t+Math.imul(k,X)|0)+Math.imul(B,W)|0,i=i+Math.imul(B,X)|0,p=p+Math.imul(T,Q)|0,t=(t=t+Math.imul(T,ee)|0)+Math.imul(V,Q)|0,i=i+Math.imul(V,ee)|0,p=p+Math.imul(D,de)|0,t=(t=t+Math.imul(D,pe)|0)+Math.imul(j,de)|0,i=i+Math.imul(j,pe)|0,p=p+Math.imul(N,ie)|0,t=(t=t+Math.imul(N,re)|0)+Math.imul(M,ie)|0,i=i+Math.imul(M,re)|0,p=p+Math.imul(g,se)|0,t=(t=t+Math.imul(g,oe)|0)+Math.imul(_,se)|0,i=i+Math.imul(_,oe)|0,p=p+Math.imul(b,me)|0,t=(t=t+Math.imul(b,ue)|0)+Math.imul(w,me)|0,i=i+Math.imul(w,ue)|0;var De=(o+(p=p+Math.imul(c,ce)|0)|0)+((8191&(t=(t=t+Math.imul(c,he)|0)+Math.imul(h,ce)|0))<<13)|0;o=((i=i+Math.imul(h,he)|0)+(t>>>13)|0)+(De>>>26)|0,De&=67108863,p=Math.imul(O,$),t=(t=Math.imul(O,Z))+Math.imul(L,$)|0,i=Math.imul(L,Z),p=p+Math.imul(I,W)|0,t=(t=t+Math.imul(I,X)|0)+Math.imul(C,W)|0,i=i+Math.imul(C,X)|0,p=p+Math.imul(k,Q)|0,t=(t=t+Math.imul(k,ee)|0)+Math.imul(B,Q)|0,i=i+Math.imul(B,ee)|0,p=p+Math.imul(T,de)|0,t=(t=t+Math.imul(T,pe)|0)+Math.imul(V,de)|0,i=i+Math.imul(V,pe)|0,p=p+Math.imul(D,ie)|0,t=(t=t+Math.imul(D,re)|0)+Math.imul(j,ie)|0,i=i+Math.imul(j,re)|0,p=p+Math.imul(N,se)|0,t=(t=t+Math.imul(N,oe)|0)+Math.imul(M,se)|0,i=i+Math.imul(M,oe)|0,p=p+Math.imul(g,me)|0,t=(t=t+Math.imul(g,ue)|0)+Math.imul(_,me)|0,i=i+Math.imul(_,ue)|0;var je=(o+(p=p+Math.imul(b,ce)|0)|0)+((8191&(t=(t=t+Math.imul(b,he)|0)+Math.imul(w,ce)|0))<<13)|0;o=((i=i+Math.imul(w,he)|0)+(t>>>13)|0)+(je>>>26)|0,je&=67108863,p=Math.imul(O,W),t=(t=Math.imul(O,X))+Math.imul(L,W)|0,i=Math.imul(L,X),p=p+Math.imul(I,Q)|0,t=(t=t+Math.imul(I,ee)|0)+Math.imul(C,Q)|0,i=i+Math.imul(C,ee)|0,p=p+Math.imul(k,de)|0,t=(t=t+Math.imul(k,pe)|0)+Math.imul(B,de)|0,i=i+Math.imul(B,pe)|0,p=p+Math.imul(T,ie)|0,t=(t=t+Math.imul(T,re)|0)+Math.imul(V,ie)|0,i=i+Math.imul(V,re)|0,p=p+Math.imul(D,se)|0,t=(t=t+Math.imul(D,oe)|0)+Math.imul(j,se)|0,i=i+Math.imul(j,oe)|0,p=p+Math.imul(N,me)|0,t=(t=t+Math.imul(N,ue)|0)+Math.imul(M,me)|0,i=i+Math.imul(M,ue)|0;var Ae=(o+(p=p+Math.imul(g,ce)|0)|0)+((8191&(t=(t=t+Math.imul(g,he)|0)+Math.imul(_,ce)|0))<<13)|0;o=((i=i+Math.imul(_,he)|0)+(t>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,p=Math.imul(O,Q),t=(t=Math.imul(O,ee))+Math.imul(L,Q)|0,i=Math.imul(L,ee),p=p+Math.imul(I,de)|0,t=(t=t+Math.imul(I,pe)|0)+Math.imul(C,de)|0,i=i+Math.imul(C,pe)|0,p=p+Math.imul(k,ie)|0,t=(t=t+Math.imul(k,re)|0)+Math.imul(B,ie)|0,i=i+Math.imul(B,re)|0,p=p+Math.imul(T,se)|0,t=(t=t+Math.imul(T,oe)|0)+Math.imul(V,se)|0,i=i+Math.imul(V,oe)|0,p=p+Math.imul(D,me)|0,t=(t=t+Math.imul(D,ue)|0)+Math.imul(j,me)|0,i=i+Math.imul(j,ue)|0;var Te=(o+(p=p+Math.imul(N,ce)|0)|0)+((8191&(t=(t=t+Math.imul(N,he)|0)+Math.imul(M,ce)|0))<<13)|0;o=((i=i+Math.imul(M,he)|0)+(t>>>13)|0)+(Te>>>26)|0,Te&=67108863,p=Math.imul(O,de),t=(t=Math.imul(O,pe))+Math.imul(L,de)|0,i=Math.imul(L,pe),p=p+Math.imul(I,ie)|0,t=(t=t+Math.imul(I,re)|0)+Math.imul(C,ie)|0,i=i+Math.imul(C,re)|0,p=p+Math.imul(k,se)|0,t=(t=t+Math.imul(k,oe)|0)+Math.imul(B,se)|0,i=i+Math.imul(B,oe)|0,p=p+Math.imul(T,me)|0,t=(t=t+Math.imul(T,ue)|0)+Math.imul(V,me)|0,i=i+Math.imul(V,ue)|0;var Ve=(o+(p=p+Math.imul(D,ce)|0)|0)+((8191&(t=(t=t+Math.imul(D,he)|0)+Math.imul(j,ce)|0))<<13)|0;o=((i=i+Math.imul(j,he)|0)+(t>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,p=Math.imul(O,ie),t=(t=Math.imul(O,re))+Math.imul(L,ie)|0,i=Math.imul(L,re),p=p+Math.imul(I,se)|0,t=(t=t+Math.imul(I,oe)|0)+Math.imul(C,se)|0,i=i+Math.imul(C,oe)|0,p=p+Math.imul(k,me)|0,t=(t=t+Math.imul(k,ue)|0)+Math.imul(B,me)|0,i=i+Math.imul(B,ue)|0;var Ee=(o+(p=p+Math.imul(T,ce)|0)|0)+((8191&(t=(t=t+Math.imul(T,he)|0)+Math.imul(V,ce)|0))<<13)|0;o=((i=i+Math.imul(V,he)|0)+(t>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,p=Math.imul(O,se),t=(t=Math.imul(O,oe))+Math.imul(L,se)|0,i=Math.imul(L,oe),p=p+Math.imul(I,me)|0,t=(t=t+Math.imul(I,ue)|0)+Math.imul(C,me)|0,i=i+Math.imul(C,ue)|0;var ke=(o+(p=p+Math.imul(k,ce)|0)|0)+((8191&(t=(t=t+Math.imul(k,he)|0)+Math.imul(B,ce)|0))<<13)|0;o=((i=i+Math.imul(B,he)|0)+(t>>>13)|0)+(ke>>>26)|0,ke&=67108863,p=Math.imul(O,me),t=(t=Math.imul(O,ue))+Math.imul(L,me)|0,i=Math.imul(L,ue);var Be=(o+(p=p+Math.imul(I,ce)|0)|0)+((8191&(t=(t=t+Math.imul(I,he)|0)+Math.imul(C,ce)|0))<<13)|0;o=((i=i+Math.imul(C,he)|0)+(t>>>13)|0)+(Be>>>26)|0,Be&=67108863;var Pe=(o+(p=Math.imul(O,ce))|0)+((8191&(t=(t=Math.imul(O,he))+Math.imul(L,ce)|0))<<13)|0;return o=((i=Math.imul(L,he))+(t>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,s[0]=ve,s[1]=be,s[2]=we,s[3]=ye,s[4]=ge,s[5]=_e,s[6]=Se,s[7]=Ne,s[8]=Me,s[9]=xe,s[10]=De,s[11]=je,s[12]=Ae,s[13]=Te,s[14]=Ve,s[15]=Ee,s[16]=ke,s[17]=Be,s[18]=Pe,0!==o&&(s[19]=o,d.length++),d};function h(e,a,d){return(new v).mulp(e,a,d)}function v(e,a){this.x=e,this.y=a}Math.imul||(c=f),i.prototype.mulTo=function(e,a){var d,p=this.length+e.length;return d=10===this.length&&10===e.length?c(this,e,a):p<63?f(this,e,a):p<1024?function(e,a,d){d.negative=a.negative^e.negative,d.length=e.length+a.length;for(var p=0,t=0,i=0;i<d.length-1;i++){var r=t;t=0;for(var n=67108863&p,s=Math.min(i,a.length-1),o=Math.max(0,i-e.length+1);o<=s;o++){var l=i-o,m=(0|e.words[l])*(0|a.words[o]),u=67108863&m;n=67108863&(u=u+n|0),t+=(r=(r=r+(m/67108864|0)|0)+(u>>>26)|0)>>>26,r&=67108863}d.words[i]=n,p=r,r=t}return 0!==p?d.words[i]=p:d.length--,d.strip()}(this,e,a):h(this,e,a),d},v.prototype.makeRBT=function(e){for(var a=new Array(e),d=i.prototype._countBits(e)-1,p=0;p<e;p++)a[p]=this.revBin(p,d,e);return a},v.prototype.revBin=function(e,a,d){if(0===e||e===d-1)return e;for(var p=0,t=0;t<a;t++)p|=(1&e)<<a-t-1,e>>=1;return p},v.prototype.permute=function(e,a,d,p,t,i){for(var r=0;r<i;r++)p[r]=a[e[r]],t[r]=d[e[r]]},v.prototype.transform=function(e,a,d,p,t,i){this.permute(i,e,a,d,p,t);for(var r=1;r<t;r<<=1)for(var n=r<<1,s=Math.cos(2*Math.PI/n),o=Math.sin(2*Math.PI/n),l=0;l<t;l+=n)for(var m=s,u=o,f=0;f<r;f++){var c=d[l+f],h=p[l+f],v=d[l+f+r],b=p[l+f+r],w=m*v-u*b;b=m*b+u*v,v=w,d[l+f]=c+v,p[l+f]=h+b,d[l+f+r]=c-v,p[l+f+r]=h-b,f!==n&&(w=s*m-o*u,u=s*u+o*m,m=w)}},v.prototype.guessLen13b=function(e,a){var d=1|Math.max(a,e),p=1&d,t=0;for(d=d/2|0;d;d>>>=1)t++;return 1<<t+1+p},v.prototype.conjugate=function(e,a,d){if(!(d<=1))for(var p=0;p<d/2;p++){var t=e[p];e[p]=e[d-p-1],e[d-p-1]=t,t=a[p],a[p]=-a[d-p-1],a[d-p-1]=-t}},v.prototype.normalize13b=function(e,a){for(var d=0,p=0;p<a/2;p++){var t=8192*Math.round(e[2*p+1]/a)+Math.round(e[2*p]/a)+d;e[p]=67108863&t,d=t<67108864?0:t/67108864|0}return e},v.prototype.convert13b=function(e,a,d,t){for(var i=0,r=0;r<a;r++)i+=0|e[r],d[2*r]=8191&i,i>>>=13,d[2*r+1]=8191&i,i>>>=13;for(r=2*a;r<t;++r)d[r]=0;p(0===i),p(0==(-8192&i))},v.prototype.stub=function(e){for(var a=new Array(e),d=0;d<e;d++)a[d]=0;return a},v.prototype.mulp=function(e,a,d){var p=2*this.guessLen13b(e.length,a.length),t=this.makeRBT(p),i=this.stub(p),r=new Array(p),n=new Array(p),s=new Array(p),o=new Array(p),l=new Array(p),m=new Array(p),u=d.words;u.length=p,this.convert13b(e.words,e.length,r,p),this.convert13b(a.words,a.length,o,p),this.transform(r,i,n,s,p,t),this.transform(o,i,l,m,p,t);for(var f=0;f<p;f++){var c=n[f]*l[f]-s[f]*m[f];s[f]=n[f]*m[f]+s[f]*l[f],n[f]=c}return this.conjugate(n,s,p),this.transform(n,s,u,i,p,t),this.conjugate(u,i,p),this.normalize13b(u,p),d.negative=e.negative^a.negative,d.length=e.length+a.length,d.strip()},i.prototype.mul=function(e){var a=new i(null);return a.words=new Array(this.length+e.length),this.mulTo(e,a)},i.prototype.mulf=function(e){var a=new i(null);return a.words=new Array(this.length+e.length),h(this,e,a)},i.prototype.imul=function(e){return this.clone().mulTo(e,this)},i.prototype.imuln=function(e){p("number"==typeof e),p(e<67108864);for(var a=0,d=0;d<this.length;d++){var t=(0|this.words[d])*e,i=(67108863&t)+(67108863&a);a>>=26,a+=t/67108864|0,a+=i>>>26,this.words[d]=67108863&i}return 0!==a&&(this.words[d]=a,this.length++),this},i.prototype.muln=function(e){return this.clone().imuln(e)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(e){var a=function(e){for(var a=new Array(e.bitLength()),d=0;d<a.length;d++){var p=d/26|0,t=d%26;a[d]=(e.words[p]&1<<t)>>>t}return a}(e);if(0===a.length)return new i(1);for(var d=this,p=0;p<a.length&&0===a[p];p++,d=d.sqr());if(++p<a.length)for(var t=d.sqr();p<a.length;p++,t=t.sqr())0!==a[p]&&(d=d.mul(t));return d},i.prototype.iushln=function(e){p("number"==typeof e&&e>=0);var a,d=e%26,t=(e-d)/26,i=67108863>>>26-d<<26-d;if(0!==d){var r=0;for(a=0;a<this.length;a++){var n=this.words[a]&i,s=(0|this.words[a])-n<<d;this.words[a]=s|r,r=n>>>26-d}r&&(this.words[a]=r,this.length++)}if(0!==t){for(a=this.length-1;a>=0;a--)this.words[a+t]=this.words[a];for(a=0;a<t;a++)this.words[a]=0;this.length+=t}return this.strip()},i.prototype.ishln=function(e){return p(0===this.negative),this.iushln(e)},i.prototype.iushrn=function(e,a,d){var t;p("number"==typeof e&&e>=0),t=a?(a-a%26)/26:0;var i=e%26,r=Math.min((e-i)/26,this.length),n=67108863^67108863>>>i<<i,s=d;if(t-=r,t=Math.max(0,t),s){for(var o=0;o<r;o++)s.words[o]=this.words[o];s.length=r}if(0===r);else if(this.length>r)for(this.length-=r,o=0;o<this.length;o++)this.words[o]=this.words[o+r];else this.words[0]=0,this.length=1;var l=0;for(o=this.length-1;o>=0&&(0!==l||o>=t);o--){var m=0|this.words[o];this.words[o]=l<<26-i|m>>>i,l=m&n}return s&&0!==l&&(s.words[s.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.ishrn=function(e,a,d){return p(0===this.negative),this.iushrn(e,a,d)},i.prototype.shln=function(e){return this.clone().ishln(e)},i.prototype.ushln=function(e){return this.clone().iushln(e)},i.prototype.shrn=function(e){return this.clone().ishrn(e)},i.prototype.ushrn=function(e){return this.clone().iushrn(e)},i.prototype.testn=function(e){p("number"==typeof e&&e>=0);var a=e%26,d=(e-a)/26,t=1<<a;return!(this.length<=d||!(this.words[d]&t))},i.prototype.imaskn=function(e){p("number"==typeof e&&e>=0);var a=e%26,d=(e-a)/26;if(p(0===this.negative,"imaskn works only with positive numbers"),this.length<=d)return this;if(0!==a&&d++,this.length=Math.min(d,this.length),0!==a){var t=67108863^67108863>>>a<<a;this.words[this.length-1]&=t}return this.strip()},i.prototype.maskn=function(e){return this.clone().imaskn(e)},i.prototype.iaddn=function(e){return p("number"==typeof e),p(e<67108864),e<0?this.isubn(-e):0!==this.negative?1===this.length&&(0|this.words[0])<e?(this.words[0]=e-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(e),this.negative=1,this):this._iaddn(e)},i.prototype._iaddn=function(e){this.words[0]+=e;for(var a=0;a<this.length&&this.words[a]>=67108864;a++)this.words[a]-=67108864,a===this.length-1?this.words[a+1]=1:this.words[a+1]++;return this.length=Math.max(this.length,a+1),this},i.prototype.isubn=function(e){if(p("number"==typeof e),p(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var a=0;a<this.length&&this.words[a]<0;a++)this.words[a]+=67108864,this.words[a+1]-=1;return this.strip()},i.prototype.addn=function(e){return this.clone().iaddn(e)},i.prototype.subn=function(e){return this.clone().isubn(e)},i.prototype.iabs=function(){return this.negative=0,this},i.prototype.abs=function(){return this.clone().iabs()},i.prototype._ishlnsubmul=function(e,a,d){var t,i,r=e.length+d;this._expand(r);var n=0;for(t=0;t<e.length;t++){i=(0|this.words[t+d])+n;var s=(0|e.words[t])*a;n=((i-=67108863&s)>>26)-(s/67108864|0),this.words[t+d]=67108863&i}for(;t<this.length-d;t++)n=(i=(0|this.words[t+d])+n)>>26,this.words[t+d]=67108863&i;if(0===n)return this.strip();for(p(-1===n),n=0,t=0;t<this.length;t++)n=(i=-(0|this.words[t])+n)>>26,this.words[t]=67108863&i;return this.negative=1,this.strip()},i.prototype._wordDiv=function(e,a){var d=(this.length,e.length),p=this.clone(),t=e,r=0|t.words[t.length-1];0!=(d=26-this._countBits(r))&&(t=t.ushln(d),p.iushln(d),r=0|t.words[t.length-1]);var n,s=p.length-t.length;if("mod"!==a){(n=new i(null)).length=s+1,n.words=new Array(n.length);for(var o=0;o<n.length;o++)n.words[o]=0}var l=p.clone()._ishlnsubmul(t,1,s);0===l.negative&&(p=l,n&&(n.words[s]=1));for(var m=s-1;m>=0;m--){var u=67108864*(0|p.words[t.length+m])+(0|p.words[t.length+m-1]);for(u=Math.min(u/r|0,67108863),p._ishlnsubmul(t,u,m);0!==p.negative;)u--,p.negative=0,p._ishlnsubmul(t,1,m),p.isZero()||(p.negative^=1);n&&(n.words[m]=u)}return n&&n.strip(),p.strip(),"div"!==a&&0!==d&&p.iushrn(d),{div:n||null,mod:p}},i.prototype.divmod=function(e,a,d){return p(!e.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===e.negative?(n=this.neg().divmod(e,a),"mod"!==a&&(t=n.div.neg()),"div"!==a&&(r=n.mod.neg(),d&&0!==r.negative&&r.iadd(e)),{div:t,mod:r}):0===this.negative&&0!==e.negative?(n=this.divmod(e.neg(),a),"mod"!==a&&(t=n.div.neg()),{div:t,mod:n.mod}):0!=(this.negative&e.negative)?(n=this.neg().divmod(e.neg(),a),"div"!==a&&(r=n.mod.neg(),d&&0!==r.negative&&r.isub(e)),{div:n.div,mod:r}):e.length>this.length||this.cmp(e)<0?{div:new i(0),mod:this}:1===e.length?"div"===a?{div:this.divn(e.words[0]),mod:null}:"mod"===a?{div:null,mod:new i(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new i(this.modn(e.words[0]))}:this._wordDiv(e,a);var t,r,n},i.prototype.div=function(e){return this.divmod(e,"div",!1).div},i.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},i.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},i.prototype.divRound=function(e){var a=this.divmod(e);if(a.mod.isZero())return a.div;var d=0!==a.div.negative?a.mod.isub(e):a.mod,p=e.ushrn(1),t=e.andln(1),i=d.cmp(p);return i<0||1===t&&0===i?a.div:0!==a.div.negative?a.div.isubn(1):a.div.iaddn(1)},i.prototype.modn=function(e){p(e<=67108863);for(var a=(1<<26)%e,d=0,t=this.length-1;t>=0;t--)d=(a*d+(0|this.words[t]))%e;return d},i.prototype.idivn=function(e){p(e<=67108863);for(var a=0,d=this.length-1;d>=0;d--){var t=(0|this.words[d])+67108864*a;this.words[d]=t/e|0,a=t%e}return this.strip()},i.prototype.divn=function(e){return this.clone().idivn(e)},i.prototype.egcd=function(e){p(0===e.negative),p(!e.isZero());var a=this,d=e.clone();a=0!==a.negative?a.umod(e):a.clone();for(var t=new i(1),r=new i(0),n=new i(0),s=new i(1),o=0;a.isEven()&&d.isEven();)a.iushrn(1),d.iushrn(1),++o;for(var l=d.clone(),m=a.clone();!a.isZero();){for(var u=0,f=1;0==(a.words[0]&f)&&u<26;++u,f<<=1);if(u>0)for(a.iushrn(u);u-- >0;)(t.isOdd()||r.isOdd())&&(t.iadd(l),r.isub(m)),t.iushrn(1),r.iushrn(1);for(var c=0,h=1;0==(d.words[0]&h)&&c<26;++c,h<<=1);if(c>0)for(d.iushrn(c);c-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(l),s.isub(m)),n.iushrn(1),s.iushrn(1);a.cmp(d)>=0?(a.isub(d),t.isub(n),r.isub(s)):(d.isub(a),n.isub(t),s.isub(r))}return{a:n,b:s,gcd:d.iushln(o)}},i.prototype._invmp=function(e){p(0===e.negative),p(!e.isZero());var a=this,d=e.clone();a=0!==a.negative?a.umod(e):a.clone();for(var t,r=new i(1),n=new i(0),s=d.clone();a.cmpn(1)>0&&d.cmpn(1)>0;){for(var o=0,l=1;0==(a.words[0]&l)&&o<26;++o,l<<=1);if(o>0)for(a.iushrn(o);o-- >0;)r.isOdd()&&r.iadd(s),r.iushrn(1);for(var m=0,u=1;0==(d.words[0]&u)&&m<26;++m,u<<=1);if(m>0)for(d.iushrn(m);m-- >0;)n.isOdd()&&n.iadd(s),n.iushrn(1);a.cmp(d)>=0?(a.isub(d),r.isub(n)):(d.isub(a),n.isub(r))}return(t=0===a.cmpn(1)?r:n).cmpn(0)<0&&t.iadd(e),t},i.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var a=this.clone(),d=e.clone();a.negative=0,d.negative=0;for(var p=0;a.isEven()&&d.isEven();p++)a.iushrn(1),d.iushrn(1);for(;;){for(;a.isEven();)a.iushrn(1);for(;d.isEven();)d.iushrn(1);var t=a.cmp(d);if(t<0){var i=a;a=d,d=i}else if(0===t||0===d.cmpn(1))break;a.isub(d)}return d.iushln(p)},i.prototype.invm=function(e){return this.egcd(e).a.umod(e)},i.prototype.isEven=function(){return 0==(1&this.words[0])},i.prototype.isOdd=function(){return 1==(1&this.words[0])},i.prototype.andln=function(e){return this.words[0]&e},i.prototype.bincn=function(e){p("number"==typeof e);var a=e%26,d=(e-a)/26,t=1<<a;if(this.length<=d)return this._expand(d+1),this.words[d]|=t,this;for(var i=t,r=d;0!==i&&r<this.length;r++){var n=0|this.words[r];i=(n+=i)>>>26,n&=67108863,this.words[r]=n}return 0!==i&&(this.words[r]=i,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(e){var a,d=e<0;if(0!==this.negative&&!d)return-1;if(0===this.negative&&d)return 1;if(this.strip(),this.length>1)a=1;else{d&&(e=-e),p(e<=67108863,"Number is too big");var t=0|this.words[0];a=t===e?0:t<e?-1:1}return 0!==this.negative?0|-a:a},i.prototype.cmp=function(e){if(0!==this.negative&&0===e.negative)return-1;if(0===this.negative&&0!==e.negative)return 1;var a=this.ucmp(e);return 0!==this.negative?0|-a:a},i.prototype.ucmp=function(e){if(this.length>e.length)return 1;if(this.length<e.length)return-1;for(var a=0,d=this.length-1;d>=0;d--){var p=0|this.words[d],t=0|e.words[d];if(p!==t){p<t?a=-1:p>t&&(a=1);break}}return a},i.prototype.gtn=function(e){return 1===this.cmpn(e)},i.prototype.gt=function(e){return 1===this.cmp(e)},i.prototype.gten=function(e){return this.cmpn(e)>=0},i.prototype.gte=function(e){return this.cmp(e)>=0},i.prototype.ltn=function(e){return-1===this.cmpn(e)},i.prototype.lt=function(e){return-1===this.cmp(e)},i.prototype.lten=function(e){return this.cmpn(e)<=0},i.prototype.lte=function(e){return this.cmp(e)<=0},i.prototype.eqn=function(e){return 0===this.cmpn(e)},i.prototype.eq=function(e){return 0===this.cmp(e)},i.red=function(e){return new N(e)},i.prototype.toRed=function(e){return p(!this.red,"Already a number in reduction context"),p(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},i.prototype.fromRed=function(){return p(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(e){return this.red=e,this},i.prototype.forceRed=function(e){return p(!this.red,"Already a number in reduction context"),this._forceRed(e)},i.prototype.redAdd=function(e){return p(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},i.prototype.redIAdd=function(e){return p(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},i.prototype.redSub=function(e){return p(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},i.prototype.redISub=function(e){return p(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},i.prototype.redShl=function(e){return p(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},i.prototype.redMul=function(e){return p(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},i.prototype.redIMul=function(e){return p(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},i.prototype.redSqr=function(){return p(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return p(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return p(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return p(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return p(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(e){return p(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var b={k256:null,p224:null,p192:null,p25519:null};function w(e,a){this.name=e,this.p=new i(a,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function y(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function g(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function _(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function S(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function N(e){if("string"==typeof e){var a=i._prime(e);this.m=a.p,this.prime=a}else p(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function M(e){N.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var e=new i(null);return e.words=new Array(Math.ceil(this.n/13)),e},w.prototype.ireduce=function(e){var a,d=e;do{this.split(d,this.tmp),a=(d=(d=this.imulK(d)).iadd(this.tmp)).bitLength()}while(a>this.n);var p=a<this.n?-1:d.ucmp(this.p);return 0===p?(d.words[0]=0,d.length=1):p>0?d.isub(this.p):void 0!==d.strip?d.strip():d._strip(),d},w.prototype.split=function(e,a){e.iushrn(this.n,0,a)},w.prototype.imulK=function(e){return e.imul(this.k)},t(y,w),y.prototype.split=function(e,a){for(var d=4194303,p=Math.min(e.length,9),t=0;t<p;t++)a.words[t]=e.words[t];if(a.length=p,e.length<=9)return e.words[0]=0,void(e.length=1);var i=e.words[9];for(a.words[a.length++]=i&d,t=10;t<e.length;t++){var r=0|e.words[t];e.words[t-10]=(r&d)<<4|i>>>22,i=r}i>>>=22,e.words[t-10]=i,0===i&&e.length>10?e.length-=10:e.length-=9},y.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var a=0,d=0;d<e.length;d++){var p=0|e.words[d];a+=977*p,e.words[d]=67108863&a,a=64*p+(a/67108864|0)}return 0===e.words[e.length-1]&&(e.length--,0===e.words[e.length-1]&&e.length--),e},t(g,w),t(_,w),t(S,w),S.prototype.imulK=function(e){for(var a=0,d=0;d<e.length;d++){var p=19*(0|e.words[d])+a,t=67108863&p;p>>>=26,e.words[d]=t,a=p}return 0!==a&&(e.words[e.length++]=a),e},i._prime=function(e){if(b[e])return b[e];var a;if("k256"===e)a=new y;else if("p224"===e)a=new g;else if("p192"===e)a=new _;else{if("p25519"!==e)throw new Error("Unknown prime "+e);a=new S}return b[e]=a,a},N.prototype._verify1=function(e){p(0===e.negative,"red works only with positives"),p(e.red,"red works only with red numbers")},N.prototype._verify2=function(e,a){p(0==(e.negative|a.negative),"red works only with positives"),p(e.red&&e.red===a.red,"red works only with red numbers")},N.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},N.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},N.prototype.add=function(e,a){this._verify2(e,a);var d=e.add(a);return d.cmp(this.m)>=0&&d.isub(this.m),d._forceRed(this)},N.prototype.iadd=function(e,a){this._verify2(e,a);var d=e.iadd(a);return d.cmp(this.m)>=0&&d.isub(this.m),d},N.prototype.sub=function(e,a){this._verify2(e,a);var d=e.sub(a);return d.cmpn(0)<0&&d.iadd(this.m),d._forceRed(this)},N.prototype.isub=function(e,a){this._verify2(e,a);var d=e.isub(a);return d.cmpn(0)<0&&d.iadd(this.m),d},N.prototype.shl=function(e,a){return this._verify1(e),this.imod(e.ushln(a))},N.prototype.imul=function(e,a){return this._verify2(e,a),this.imod(e.imul(a))},N.prototype.mul=function(e,a){return this._verify2(e,a),this.imod(e.mul(a))},N.prototype.isqr=function(e){return this.imul(e,e.clone())},N.prototype.sqr=function(e){return this.mul(e,e)},N.prototype.sqrt=function(e){if(e.isZero())return e.clone();var a=this.m.andln(3);if(p(a%2==1),3===a){var d=this.m.add(new i(1)).iushrn(2);return this.pow(e,d)}for(var t=this.m.subn(1),r=0;!t.isZero()&&0===t.andln(1);)r++,t.iushrn(1);p(!t.isZero());var n=new i(1).toRed(this),s=n.redNeg(),o=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new i(2*l*l).toRed(this);0!==this.pow(l,o).cmp(s);)l.redIAdd(s);for(var m=this.pow(l,t),u=this.pow(e,t.addn(1).iushrn(1)),f=this.pow(e,t),c=r;0!==f.cmp(n);){for(var h=f,v=0;0!==h.cmp(n);v++)h=h.redSqr();p(v<c);var b=this.pow(m,new i(1).iushln(c-v-1));u=u.redMul(b),m=b.redSqr(),f=f.redMul(m),c=v}return u},N.prototype.invm=function(e){var a=e._invmp(this.m);return 0!==a.negative?(a.negative=0,this.imod(a).redNeg()):this.imod(a)},N.prototype.pow=function(e,a){if(a.isZero())return new i(1).toRed(this);if(0===a.cmpn(1))return e.clone();var d=new Array(16);d[0]=new i(1).toRed(this),d[1]=e;for(var p=2;p<d.length;p++)d[p]=this.mul(d[p-1],e);var t=d[0],r=0,n=0,s=a.bitLength()%26;for(0===s&&(s=26),p=a.length-1;p>=0;p--){for(var o=a.words[p],l=s-1;l>=0;l--){var m=o>>l&1;t!==d[0]&&(t=this.sqr(t)),0!==m||0!==r?(r<<=1,r|=m,(4==++n||0===p&&0===l)&&(t=this.mul(t,d[r]),n=0,r=0)):n=0}s=26}return t},N.prototype.convertTo=function(e){var a=e.umod(this.m);return a===e?a.clone():a},N.prototype.convertFrom=function(e){var a=e.clone();return a.red=null,a},i.mont=function(e){return new M(e)},t(M,N),M.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},M.prototype.convertFrom=function(e){var a=this.imod(e.mul(this.rinv));return a.red=null,a},M.prototype.imul=function(e,a){if(e.isZero()||a.isZero())return e.words[0]=0,e.length=1,e;var d=e.imul(a),p=d.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),t=d.isub(p).iushrn(this.shift),i=t;return t.cmp(this.m)>=0?i=t.isub(this.m):t.cmpn(0)<0&&(i=t.iadd(this.m)),i._forceRed(this)},M.prototype.mul=function(e,a){if(e.isZero()||a.isZero())return new i(0)._forceRed(this);var d=e.mul(a),p=d.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),t=d.isub(p).iushrn(this.shift),r=t;return t.cmp(this.m)>=0?r=t.isub(this.m):t.cmpn(0)<0&&(r=t.iadd(this.m)),r._forceRed(this)},M.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=d.nmd(e),this)},"./node_modules/brorand/index.js":(e,a,d)=>{var p;function t(e){this.rand=e}if(e.exports=function(e){return p||(p=new t(null)),p.generate(e)},e.exports.Rand=t,t.prototype.generate=function(e){return this._rand(e)},t.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var a=new Uint8Array(e),d=0;d<a.length;d++)a[d]=this.rand.getByte();return a},"object"==typeof self)self.crypto&&self.crypto.getRandomValues?t.prototype._rand=function(e){var a=new Uint8Array(e);return self.crypto.getRandomValues(a),a}:self.msCrypto&&self.msCrypto.getRandomValues?t.prototype._rand=function(e){var a=new Uint8Array(e);return self.msCrypto.getRandomValues(a),a}:"object"==typeof window&&(t.prototype._rand=function(){throw new Error("Not implemented yet")});else try{var i=d("crypto");if("function"!=typeof i.randomBytes)throw new Error("Not supported");t.prototype._rand=function(e){return i.randomBytes(e)}}catch(e){}},"./node_modules/elliptic/lib/elliptic.js":(e,a,d)=>{"use strict";var p=a;p.version=d("./node_modules/elliptic/package.json").version,p.utils=d("./node_modules/elliptic/lib/elliptic/utils.js"),p.rand=d("./node_modules/brorand/index.js"),p.curve=d("./node_modules/elliptic/lib/elliptic/curve/index.js"),p.curves=d("./node_modules/elliptic/lib/elliptic/curves.js"),p.ec=d("./node_modules/elliptic/lib/elliptic/ec/index.js"),p.eddsa=d("./node_modules/elliptic/lib/elliptic/eddsa/index.js")},"./node_modules/elliptic/lib/elliptic/curve/base.js":(e,a,d)=>{"use strict";var p=d("./node_modules/bn.js/lib/bn.js"),t=d("./node_modules/elliptic/lib/elliptic/utils.js"),i=t.getNAF,r=t.getJSF,n=t.assert;function s(e,a){this.type=e,this.p=new p(a.p,16),this.red=a.prime?p.red(a.prime):p.mont(this.p),this.zero=new p(0).toRed(this.red),this.one=new p(1).toRed(this.red),this.two=new p(2).toRed(this.red),this.n=a.n&&new p(a.n,16),this.g=a.g&&this.pointFromJSON(a.g,a.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var d=this.n&&this.p.div(this.n);!d||d.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function o(e,a){this.curve=e,this.type=a,this.precomputed=null}e.exports=s,s.prototype.point=function(){throw new Error("Not implemented")},s.prototype.validate=function(){throw new Error("Not implemented")},s.prototype._fixedNafMul=function(e,a){n(e.precomputed);var d=e._getDoubles(),p=i(a,1,this._bitLength),t=(1<<d.step+1)-(d.step%2==0?2:1);t/=3;var r,s,o=[];for(r=0;r<p.length;r+=d.step){s=0;for(var l=r+d.step-1;l>=r;l--)s=(s<<1)+p[l];o.push(s)}for(var m=this.jpoint(null,null,null),u=this.jpoint(null,null,null),f=t;f>0;f--){for(r=0;r<o.length;r++)(s=o[r])===f?u=u.mixedAdd(d.points[r]):s===-f&&(u=u.mixedAdd(d.points[r].neg()));m=m.add(u)}return m.toP()},s.prototype._wnafMul=function(e,a){var d=4,p=e._getNAFPoints(d);d=p.wnd;for(var t=p.points,r=i(a,d,this._bitLength),s=this.jpoint(null,null,null),o=r.length-1;o>=0;o--){for(var l=0;o>=0&&0===r[o];o--)l++;if(o>=0&&l++,s=s.dblp(l),o<0)break;var m=r[o];n(0!==m),s="affine"===e.type?m>0?s.mixedAdd(t[m-1>>1]):s.mixedAdd(t[-m-1>>1].neg()):m>0?s.add(t[m-1>>1]):s.add(t[-m-1>>1].neg())}return"affine"===e.type?s.toP():s},s.prototype._wnafMulAdd=function(e,a,d,p,t){var n,s,o,l=this._wnafT1,m=this._wnafT2,u=this._wnafT3,f=0;for(n=0;n<p;n++){var c=(o=a[n])._getNAFPoints(e);l[n]=c.wnd,m[n]=c.points}for(n=p-1;n>=1;n-=2){var h=n-1,v=n;if(1===l[h]&&1===l[v]){var b=[a[h],null,null,a[v]];0===a[h].y.cmp(a[v].y)?(b[1]=a[h].add(a[v]),b[2]=a[h].toJ().mixedAdd(a[v].neg())):0===a[h].y.cmp(a[v].y.redNeg())?(b[1]=a[h].toJ().mixedAdd(a[v]),b[2]=a[h].add(a[v].neg())):(b[1]=a[h].toJ().mixedAdd(a[v]),b[2]=a[h].toJ().mixedAdd(a[v].neg()));var w=[-3,-1,-5,-7,0,7,5,1,3],y=r(d[h],d[v]);for(f=Math.max(y[0].length,f),u[h]=new Array(f),u[v]=new Array(f),s=0;s<f;s++){var g=0|y[0][s],_=0|y[1][s];u[h][s]=w[3*(g+1)+(_+1)],u[v][s]=0,m[h]=b}}else u[h]=i(d[h],l[h],this._bitLength),u[v]=i(d[v],l[v],this._bitLength),f=Math.max(u[h].length,f),f=Math.max(u[v].length,f)}var S=this.jpoint(null,null,null),N=this._wnafT4;for(n=f;n>=0;n--){for(var M=0;n>=0;){var x=!0;for(s=0;s<p;s++)N[s]=0|u[s][n],0!==N[s]&&(x=!1);if(!x)break;M++,n--}if(n>=0&&M++,S=S.dblp(M),n<0)break;for(s=0;s<p;s++){var D=N[s];0!==D&&(D>0?o=m[s][D-1>>1]:D<0&&(o=m[s][-D-1>>1].neg()),S="affine"===o.type?S.mixedAdd(o):S.add(o))}}for(n=0;n<p;n++)m[n]=null;return t?S:S.toP()},s.BasePoint=o,o.prototype.eq=function(){throw new Error("Not implemented")},o.prototype.validate=function(){return this.curve.validate(this)},s.prototype.decodePoint=function(e,a){e=t.toArray(e,a);var d=this.p.byteLength();if((4===e[0]||6===e[0]||7===e[0])&&e.length-1==2*d)return 6===e[0]?n(e[e.length-1]%2==0):7===e[0]&&n(e[e.length-1]%2==1),this.point(e.slice(1,1+d),e.slice(1+d,1+2*d));if((2===e[0]||3===e[0])&&e.length-1===d)return this.pointFromX(e.slice(1,1+d),3===e[0]);throw new Error("Unknown point format")},o.prototype.encodeCompressed=function(e){return this.encode(e,!0)},o.prototype._encode=function(e){var a=this.curve.p.byteLength(),d=this.getX().toArray("be",a);return e?[this.getY().isEven()?2:3].concat(d):[4].concat(d,this.getY().toArray("be",a))},o.prototype.encode=function(e,a){return t.encode(this._encode(a),e)},o.prototype.precompute=function(e){if(this.precomputed)return this;var a={doubles:null,naf:null,beta:null};return a.naf=this._getNAFPoints(8),a.doubles=this._getDoubles(4,e),a.beta=this._getBeta(),this.precomputed=a,this},o.prototype._hasDoubles=function(e){if(!this.precomputed)return!1;var a=this.precomputed.doubles;return!!a&&a.points.length>=Math.ceil((e.bitLength()+1)/a.step)},o.prototype._getDoubles=function(e,a){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var d=[this],p=this,t=0;t<a;t+=e){for(var i=0;i<e;i++)p=p.dbl();d.push(p)}return{step:e,points:d}},o.prototype._getNAFPoints=function(e){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var a=[this],d=(1<<e)-1,p=1===d?null:this.dbl(),t=1;t<d;t++)a[t]=a[t-1].add(p);return{wnd:e,points:a}},o.prototype._getBeta=function(){return null},o.prototype.dblp=function(e){for(var a=this,d=0;d<e;d++)a=a.dbl();return a}},"./node_modules/elliptic/lib/elliptic/curve/edwards.js":(e,a,d)=>{"use strict";var p=d("./node_modules/elliptic/lib/elliptic/utils.js"),t=d("./node_modules/bn.js/lib/bn.js"),i=d("./node_modules/inherits/inherits.js"),r=d("./node_modules/elliptic/lib/elliptic/curve/base.js"),n=p.assert;function s(e){this.twisted=1!=(0|e.a),this.mOneA=this.twisted&&-1==(0|e.a),this.extended=this.mOneA,r.call(this,"edwards",e),this.a=new t(e.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new t(e.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new t(e.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),n(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|e.c)}function o(e,a,d,p,i){r.BasePoint.call(this,e,"projective"),null===a&&null===d&&null===p?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new t(a,16),this.y=new t(d,16),this.z=p?new t(p,16):this.curve.one,this.t=i&&new t(i,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}i(s,r),e.exports=s,s.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},s.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)},s.prototype.jpoint=function(e,a,d,p){return this.point(e,a,d,p)},s.prototype.pointFromX=function(e,a){(e=new t(e,16)).red||(e=e.toRed(this.red));var d=e.redSqr(),p=this.c2.redSub(this.a.redMul(d)),i=this.one.redSub(this.c2.redMul(this.d).redMul(d)),r=p.redMul(i.redInvm()),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var s=n.fromRed().isOdd();return(a&&!s||!a&&s)&&(n=n.redNeg()),this.point(e,n)},s.prototype.pointFromY=function(e,a){(e=new t(e,16)).red||(e=e.toRed(this.red));var d=e.redSqr(),p=d.redSub(this.c2),i=d.redMul(this.d).redMul(this.c2).redSub(this.a),r=p.redMul(i.redInvm());if(0===r.cmp(this.zero)){if(a)throw new Error("invalid point");return this.point(this.zero,e)}var n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");return n.fromRed().isOdd()!==a&&(n=n.redNeg()),this.point(n,e)},s.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var a=e.x.redSqr(),d=e.y.redSqr(),p=a.redMul(this.a).redAdd(d),t=this.c2.redMul(this.one.redAdd(this.d.redMul(a).redMul(d)));return 0===p.cmp(t)},i(o,r.BasePoint),s.prototype.pointFromJSON=function(e){return o.fromJSON(this,e)},s.prototype.point=function(e,a,d,p){return new o(this,e,a,d,p)},o.fromJSON=function(e,a){return new o(e,a[0],a[1],a[2])},o.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"},o.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},o.prototype._extDbl=function(){var e=this.x.redSqr(),a=this.y.redSqr(),d=this.z.redSqr();d=d.redIAdd(d);var p=this.curve._mulA(e),t=this.x.redAdd(this.y).redSqr().redISub(e).redISub(a),i=p.redAdd(a),r=i.redSub(d),n=p.redSub(a),s=t.redMul(r),o=i.redMul(n),l=t.redMul(n),m=r.redMul(i);return this.curve.point(s,o,m,l)},o.prototype._projDbl=function(){var e,a,d,p,t,i,r=this.x.redAdd(this.y).redSqr(),n=this.x.redSqr(),s=this.y.redSqr();if(this.curve.twisted){var o=(p=this.curve._mulA(n)).redAdd(s);this.zOne?(e=r.redSub(n).redSub(s).redMul(o.redSub(this.curve.two)),a=o.redMul(p.redSub(s)),d=o.redSqr().redSub(o).redSub(o)):(t=this.z.redSqr(),i=o.redSub(t).redISub(t),e=r.redSub(n).redISub(s).redMul(i),a=o.redMul(p.redSub(s)),d=o.redMul(i))}else p=n.redAdd(s),t=this.curve._mulC(this.z).redSqr(),i=p.redSub(t).redSub(t),e=this.curve._mulC(r.redISub(p)).redMul(i),a=this.curve._mulC(p).redMul(n.redISub(s)),d=p.redMul(i);return this.curve.point(e,a,d)},o.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},o.prototype._extAdd=function(e){var a=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),d=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),p=this.t.redMul(this.curve.dd).redMul(e.t),t=this.z.redMul(e.z.redAdd(e.z)),i=d.redSub(a),r=t.redSub(p),n=t.redAdd(p),s=d.redAdd(a),o=i.redMul(r),l=n.redMul(s),m=i.redMul(s),u=r.redMul(n);return this.curve.point(o,l,u,m)},o.prototype._projAdd=function(e){var a,d,p=this.z.redMul(e.z),t=p.redSqr(),i=this.x.redMul(e.x),r=this.y.redMul(e.y),n=this.curve.d.redMul(i).redMul(r),s=t.redSub(n),o=t.redAdd(n),l=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(i).redISub(r),m=p.redMul(s).redMul(l);return this.curve.twisted?(a=p.redMul(o).redMul(r.redSub(this.curve._mulA(i))),d=s.redMul(o)):(a=p.redMul(o).redMul(r.redSub(i)),d=this.curve._mulC(s).redMul(o)),this.curve.point(m,a,d)},o.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},o.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},o.prototype.mulAdd=function(e,a,d){return this.curve._wnafMulAdd(1,[this,a],[e,d],2,!1)},o.prototype.jmulAdd=function(e,a,d){return this.curve._wnafMulAdd(1,[this,a],[e,d],2,!0)},o.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},o.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},o.prototype.getX=function(){return this.normalize(),this.x.fromRed()},o.prototype.getY=function(){return this.normalize(),this.y.fromRed()},o.prototype.eq=function(e){return this===e||0===this.getX().cmp(e.getX())&&0===this.getY().cmp(e.getY())},o.prototype.eqXToP=function(e){var a=e.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(a))return!0;for(var d=e.clone(),p=this.curve.redN.redMul(this.z);;){if(d.iadd(this.curve.n),d.cmp(this.curve.p)>=0)return!1;if(a.redIAdd(p),0===this.x.cmp(a))return!0}},o.prototype.toP=o.prototype.normalize,o.prototype.mixedAdd=o.prototype.add},"./node_modules/elliptic/lib/elliptic/curve/index.js":(e,a,d)=>{"use strict";var p=a;p.base=d("./node_modules/elliptic/lib/elliptic/curve/base.js"),p.short=d("./node_modules/elliptic/lib/elliptic/curve/short.js"),p.mont=d("./node_modules/elliptic/lib/elliptic/curve/mont.js"),p.edwards=d("./node_modules/elliptic/lib/elliptic/curve/edwards.js")},"./node_modules/elliptic/lib/elliptic/curve/mont.js":(e,a,d)=>{"use strict";var p=d("./node_modules/bn.js/lib/bn.js"),t=d("./node_modules/inherits/inherits.js"),i=d("./node_modules/elliptic/lib/elliptic/curve/base.js"),r=d("./node_modules/elliptic/lib/elliptic/utils.js");function n(e){i.call(this,"mont",e),this.a=new p(e.a,16).toRed(this.red),this.b=new p(e.b,16).toRed(this.red),this.i4=new p(4).toRed(this.red).redInvm(),this.two=new p(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function s(e,a,d){i.BasePoint.call(this,e,"projective"),null===a&&null===d?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new p(a,16),this.z=new p(d,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}t(n,i),e.exports=n,n.prototype.validate=function(e){var a=e.normalize().x,d=a.redSqr(),p=d.redMul(a).redAdd(d.redMul(this.a)).redAdd(a);return 0===p.redSqrt().redSqr().cmp(p)},t(s,i.BasePoint),n.prototype.decodePoint=function(e,a){return this.point(r.toArray(e,a),1)},n.prototype.point=function(e,a){return new s(this,e,a)},n.prototype.pointFromJSON=function(e){return s.fromJSON(this,e)},s.prototype.precompute=function(){},s.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},s.fromJSON=function(e,a){return new s(e,a[0],a[1]||e.one)},s.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"},s.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},s.prototype.dbl=function(){var e=this.x.redAdd(this.z).redSqr(),a=this.x.redSub(this.z).redSqr(),d=e.redSub(a),p=e.redMul(a),t=d.redMul(a.redAdd(this.curve.a24.redMul(d)));return this.curve.point(p,t)},s.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},s.prototype.diffAdd=function(e,a){var d=this.x.redAdd(this.z),p=this.x.redSub(this.z),t=e.x.redAdd(e.z),i=e.x.redSub(e.z).redMul(d),r=t.redMul(p),n=a.z.redMul(i.redAdd(r).redSqr()),s=a.x.redMul(i.redISub(r).redSqr());return this.curve.point(n,s)},s.prototype.mul=function(e){for(var a=e.clone(),d=this,p=this.curve.point(null,null),t=[];0!==a.cmpn(0);a.iushrn(1))t.push(a.andln(1));for(var i=t.length-1;i>=0;i--)0===t[i]?(d=d.diffAdd(p,this),p=p.dbl()):(p=d.diffAdd(p,this),d=d.dbl());return p},s.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},s.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},s.prototype.eq=function(e){return 0===this.getX().cmp(e.getX())},s.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},s.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},"./node_modules/elliptic/lib/elliptic/curve/short.js":(e,a,d)=>{"use strict";var p=d("./node_modules/elliptic/lib/elliptic/utils.js"),t=d("./node_modules/bn.js/lib/bn.js"),i=d("./node_modules/inherits/inherits.js"),r=d("./node_modules/elliptic/lib/elliptic/curve/base.js"),n=p.assert;function s(e){r.call(this,"short",e),this.a=new t(e.a,16).toRed(this.red),this.b=new t(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(e),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function o(e,a,d,p){r.BasePoint.call(this,e,"affine"),null===a&&null===d?(this.x=null,this.y=null,this.inf=!0):(this.x=new t(a,16),this.y=new t(d,16),p&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function l(e,a,d,p){r.BasePoint.call(this,e,"jacobian"),null===a&&null===d&&null===p?(this.x=this.curve.one,this.y=this.curve.one,this.z=new t(0)):(this.x=new t(a,16),this.y=new t(d,16),this.z=new t(p,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}i(s,r),e.exports=s,s.prototype._getEndomorphism=function(e){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var a,d;if(e.beta)a=new t(e.beta,16).toRed(this.red);else{var p=this._getEndoRoots(this.p);a=(a=p[0].cmp(p[1])<0?p[0]:p[1]).toRed(this.red)}if(e.lambda)d=new t(e.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(a))?d=i[0]:(d=i[1],n(0===this.g.mul(d).x.cmp(this.g.x.redMul(a))))}return{beta:a,lambda:d,basis:e.basis?e.basis.map((function(e){return{a:new t(e.a,16),b:new t(e.b,16)}})):this._getEndoBasis(d)}}},s.prototype._getEndoRoots=function(e){var a=e===this.p?this.red:t.mont(e),d=new t(2).toRed(a).redInvm(),p=d.redNeg(),i=new t(3).toRed(a).redNeg().redSqrt().redMul(d);return[p.redAdd(i).fromRed(),p.redSub(i).fromRed()]},s.prototype._getEndoBasis=function(e){for(var a,d,p,i,r,n,s,o,l,m=this.n.ushrn(Math.floor(this.n.bitLength()/2)),u=e,f=this.n.clone(),c=new t(1),h=new t(0),v=new t(0),b=new t(1),w=0;0!==u.cmpn(0);){var y=f.div(u);o=f.sub(y.mul(u)),l=v.sub(y.mul(c));var g=b.sub(y.mul(h));if(!p&&o.cmp(m)<0)a=s.neg(),d=c,p=o.neg(),i=l;else if(p&&2==++w)break;s=o,f=u,u=o,v=c,c=l,b=h,h=g}r=o.neg(),n=l;var _=p.sqr().add(i.sqr());return r.sqr().add(n.sqr()).cmp(_)>=0&&(r=a,n=d),p.negative&&(p=p.neg(),i=i.neg()),r.negative&&(r=r.neg(),n=n.neg()),[{a:p,b:i},{a:r,b:n}]},s.prototype._endoSplit=function(e){var a=this.endo.basis,d=a[0],p=a[1],t=p.b.mul(e).divRound(this.n),i=d.b.neg().mul(e).divRound(this.n),r=t.mul(d.a),n=i.mul(p.a),s=t.mul(d.b),o=i.mul(p.b);return{k1:e.sub(r).sub(n),k2:s.add(o).neg()}},s.prototype.pointFromX=function(e,a){(e=new t(e,16)).red||(e=e.toRed(this.red));var d=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),p=d.redSqrt();if(0!==p.redSqr().redSub(d).cmp(this.zero))throw new Error("invalid point");var i=p.fromRed().isOdd();return(a&&!i||!a&&i)&&(p=p.redNeg()),this.point(e,p)},s.prototype.validate=function(e){if(e.inf)return!0;var a=e.x,d=e.y,p=this.a.redMul(a),t=a.redSqr().redMul(a).redIAdd(p).redIAdd(this.b);return 0===d.redSqr().redISub(t).cmpn(0)},s.prototype._endoWnafMulAdd=function(e,a,d){for(var p=this._endoWnafT1,t=this._endoWnafT2,i=0;i<e.length;i++){var r=this._endoSplit(a[i]),n=e[i],s=n._getBeta();r.k1.negative&&(r.k1.ineg(),n=n.neg(!0)),r.k2.negative&&(r.k2.ineg(),s=s.neg(!0)),p[2*i]=n,p[2*i+1]=s,t[2*i]=r.k1,t[2*i+1]=r.k2}for(var o=this._wnafMulAdd(1,p,t,2*i,d),l=0;l<2*i;l++)p[l]=null,t[l]=null;return o},i(o,r.BasePoint),s.prototype.point=function(e,a,d){return new o(this,e,a,d)},s.prototype.pointFromJSON=function(e,a){return o.fromJSON(this,e,a)},o.prototype._getBeta=function(){if(this.curve.endo){var e=this.precomputed;if(e&&e.beta)return e.beta;var a=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(e){var d=this.curve,p=function(e){return d.point(e.x.redMul(d.endo.beta),e.y)};e.beta=a,a.precomputed={beta:null,naf:e.naf&&{wnd:e.naf.wnd,points:e.naf.points.map(p)},doubles:e.doubles&&{step:e.doubles.step,points:e.doubles.points.map(p)}}}return a}},o.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},o.fromJSON=function(e,a,d){"string"==typeof a&&(a=JSON.parse(a));var p=e.point(a[0],a[1],d);if(!a[2])return p;function t(a){return e.point(a[0],a[1],d)}var i=a[2];return p.precomputed={beta:null,doubles:i.doubles&&{step:i.doubles.step,points:[p].concat(i.doubles.points.map(t))},naf:i.naf&&{wnd:i.naf.wnd,points:[p].concat(i.naf.points.map(t))}},p},o.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"},o.prototype.isInfinity=function(){return this.inf},o.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(0===this.x.cmp(e.x))return this.curve.point(null,null);var a=this.y.redSub(e.y);0!==a.cmpn(0)&&(a=a.redMul(this.x.redSub(e.x).redInvm()));var d=a.redSqr().redISub(this.x).redISub(e.x),p=a.redMul(this.x.redSub(d)).redISub(this.y);return this.curve.point(d,p)},o.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(0===e.cmpn(0))return this.curve.point(null,null);var a=this.curve.a,d=this.x.redSqr(),p=e.redInvm(),t=d.redAdd(d).redIAdd(d).redIAdd(a).redMul(p),i=t.redSqr().redISub(this.x.redAdd(this.x)),r=t.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,r)},o.prototype.getX=function(){return this.x.fromRed()},o.prototype.getY=function(){return this.y.fromRed()},o.prototype.mul=function(e){return e=new t(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},o.prototype.mulAdd=function(e,a,d){var p=[this,a],t=[e,d];return this.curve.endo?this.curve._endoWnafMulAdd(p,t):this.curve._wnafMulAdd(1,p,t,2)},o.prototype.jmulAdd=function(e,a,d){var p=[this,a],t=[e,d];return this.curve.endo?this.curve._endoWnafMulAdd(p,t,!0):this.curve._wnafMulAdd(1,p,t,2,!0)},o.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||0===this.x.cmp(e.x)&&0===this.y.cmp(e.y))},o.prototype.neg=function(e){if(this.inf)return this;var a=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var d=this.precomputed,p=function(e){return e.neg()};a.precomputed={naf:d.naf&&{wnd:d.naf.wnd,points:d.naf.points.map(p)},doubles:d.doubles&&{step:d.doubles.step,points:d.doubles.points.map(p)}}}return a},o.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},i(l,r.BasePoint),s.prototype.jpoint=function(e,a,d){return new l(this,e,a,d)},l.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),a=e.redSqr(),d=this.x.redMul(a),p=this.y.redMul(a).redMul(e);return this.curve.point(d,p)},l.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},l.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var a=e.z.redSqr(),d=this.z.redSqr(),p=this.x.redMul(a),t=e.x.redMul(d),i=this.y.redMul(a.redMul(e.z)),r=e.y.redMul(d.redMul(this.z)),n=p.redSub(t),s=i.redSub(r);if(0===n.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var o=n.redSqr(),l=o.redMul(n),m=p.redMul(o),u=s.redSqr().redIAdd(l).redISub(m).redISub(m),f=s.redMul(m.redISub(u)).redISub(i.redMul(l)),c=this.z.redMul(e.z).redMul(n);return this.curve.jpoint(u,f,c)},l.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var a=this.z.redSqr(),d=this.x,p=e.x.redMul(a),t=this.y,i=e.y.redMul(a).redMul(this.z),r=d.redSub(p),n=t.redSub(i);if(0===r.cmpn(0))return 0!==n.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var s=r.redSqr(),o=s.redMul(r),l=d.redMul(s),m=n.redSqr().redIAdd(o).redISub(l).redISub(l),u=n.redMul(l.redISub(m)).redISub(t.redMul(o)),f=this.z.redMul(r);return this.curve.jpoint(m,u,f)},l.prototype.dblp=function(e){if(0===e)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var a;if(this.curve.zeroA||this.curve.threeA){var d=this;for(a=0;a<e;a++)d=d.dbl();return d}var p=this.curve.a,t=this.curve.tinv,i=this.x,r=this.y,n=this.z,s=n.redSqr().redSqr(),o=r.redAdd(r);for(a=0;a<e;a++){var l=i.redSqr(),m=o.redSqr(),u=m.redSqr(),f=l.redAdd(l).redIAdd(l).redIAdd(p.redMul(s)),c=i.redMul(m),h=f.redSqr().redISub(c.redAdd(c)),v=c.redISub(h),b=f.redMul(v);b=b.redIAdd(b).redISub(u);var w=o.redMul(n);a+1<e&&(s=s.redMul(u)),i=h,n=w,o=b}return this.curve.jpoint(i,o.redMul(t),n)},l.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},l.prototype._zeroDbl=function(){var e,a,d;if(this.zOne){var p=this.x.redSqr(),t=this.y.redSqr(),i=t.redSqr(),r=this.x.redAdd(t).redSqr().redISub(p).redISub(i);r=r.redIAdd(r);var n=p.redAdd(p).redIAdd(p),s=n.redSqr().redISub(r).redISub(r),o=i.redIAdd(i);o=(o=o.redIAdd(o)).redIAdd(o),e=s,a=n.redMul(r.redISub(s)).redISub(o),d=this.y.redAdd(this.y)}else{var l=this.x.redSqr(),m=this.y.redSqr(),u=m.redSqr(),f=this.x.redAdd(m).redSqr().redISub(l).redISub(u);f=f.redIAdd(f);var c=l.redAdd(l).redIAdd(l),h=c.redSqr(),v=u.redIAdd(u);v=(v=v.redIAdd(v)).redIAdd(v),e=h.redISub(f).redISub(f),a=c.redMul(f.redISub(e)).redISub(v),d=(d=this.y.redMul(this.z)).redIAdd(d)}return this.curve.jpoint(e,a,d)},l.prototype._threeDbl=function(){var e,a,d;if(this.zOne){var p=this.x.redSqr(),t=this.y.redSqr(),i=t.redSqr(),r=this.x.redAdd(t).redSqr().redISub(p).redISub(i);r=r.redIAdd(r);var n=p.redAdd(p).redIAdd(p).redIAdd(this.curve.a),s=n.redSqr().redISub(r).redISub(r);e=s;var o=i.redIAdd(i);o=(o=o.redIAdd(o)).redIAdd(o),a=n.redMul(r.redISub(s)).redISub(o),d=this.y.redAdd(this.y)}else{var l=this.z.redSqr(),m=this.y.redSqr(),u=this.x.redMul(m),f=this.x.redSub(l).redMul(this.x.redAdd(l));f=f.redAdd(f).redIAdd(f);var c=u.redIAdd(u),h=(c=c.redIAdd(c)).redAdd(c);e=f.redSqr().redISub(h),d=this.y.redAdd(this.z).redSqr().redISub(m).redISub(l);var v=m.redSqr();v=(v=(v=v.redIAdd(v)).redIAdd(v)).redIAdd(v),a=f.redMul(c.redISub(e)).redISub(v)}return this.curve.jpoint(e,a,d)},l.prototype._dbl=function(){var e=this.curve.a,a=this.x,d=this.y,p=this.z,t=p.redSqr().redSqr(),i=a.redSqr(),r=d.redSqr(),n=i.redAdd(i).redIAdd(i).redIAdd(e.redMul(t)),s=a.redAdd(a),o=(s=s.redIAdd(s)).redMul(r),l=n.redSqr().redISub(o.redAdd(o)),m=o.redISub(l),u=r.redSqr();u=(u=(u=u.redIAdd(u)).redIAdd(u)).redIAdd(u);var f=n.redMul(m).redISub(u),c=d.redAdd(d).redMul(p);return this.curve.jpoint(l,f,c)},l.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var e=this.x.redSqr(),a=this.y.redSqr(),d=this.z.redSqr(),p=a.redSqr(),t=e.redAdd(e).redIAdd(e),i=t.redSqr(),r=this.x.redAdd(a).redSqr().redISub(e).redISub(p),n=(r=(r=(r=r.redIAdd(r)).redAdd(r).redIAdd(r)).redISub(i)).redSqr(),s=p.redIAdd(p);s=(s=(s=s.redIAdd(s)).redIAdd(s)).redIAdd(s);var o=t.redIAdd(r).redSqr().redISub(i).redISub(n).redISub(s),l=a.redMul(o);l=(l=l.redIAdd(l)).redIAdd(l);var m=this.x.redMul(n).redISub(l);m=(m=m.redIAdd(m)).redIAdd(m);var u=this.y.redMul(o.redMul(s.redISub(o)).redISub(r.redMul(n)));u=(u=(u=u.redIAdd(u)).redIAdd(u)).redIAdd(u);var f=this.z.redAdd(r).redSqr().redISub(d).redISub(n);return this.curve.jpoint(m,u,f)},l.prototype.mul=function(e,a){return e=new t(e,a),this.curve._wnafMul(this,e)},l.prototype.eq=function(e){if("affine"===e.type)return this.eq(e.toJ());if(this===e)return!0;var a=this.z.redSqr(),d=e.z.redSqr();if(0!==this.x.redMul(d).redISub(e.x.redMul(a)).cmpn(0))return!1;var p=a.redMul(this.z),t=d.redMul(e.z);return 0===this.y.redMul(t).redISub(e.y.redMul(p)).cmpn(0)},l.prototype.eqXToP=function(e){var a=this.z.redSqr(),d=e.toRed(this.curve.red).redMul(a);if(0===this.x.cmp(d))return!0;for(var p=e.clone(),t=this.curve.redN.redMul(a);;){if(p.iadd(this.curve.n),p.cmp(this.curve.p)>=0)return!1;if(d.redIAdd(t),0===this.x.cmp(d))return!0}},l.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"},l.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},"./node_modules/elliptic/lib/elliptic/curves.js":(e,a,d)=>{"use strict";var p,t=a,i=d("./node_modules/hash.js/lib/hash.js"),r=d("./node_modules/elliptic/lib/elliptic/curve/index.js"),n=d("./node_modules/elliptic/lib/elliptic/utils.js").assert;function s(e){"short"===e.type?this.curve=new r.short(e):"edwards"===e.type?this.curve=new r.edwards(e):this.curve=new r.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,n(this.g.validate(),"Invalid curve"),n(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function o(e,a){Object.defineProperty(t,e,{configurable:!0,enumerable:!0,get:function(){var d=new s(a);return Object.defineProperty(t,e,{configurable:!0,enumerable:!0,value:d}),d}})}t.PresetCurve=s,o("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:i.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),o("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:i.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),o("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:i.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),o("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:i.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),o("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:i.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),o("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:i.sha256,gRed:!1,g:["9"]}),o("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:i.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{p=d("./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js")}catch(e){p=void 0}o("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:i.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",p]})},"./node_modules/elliptic/lib/elliptic/ec/index.js":(e,a,d)=>{"use strict";var p=d("./node_modules/bn.js/lib/bn.js"),t=d("./node_modules/hmac-drbg/lib/hmac-drbg.js"),i=d("./node_modules/elliptic/lib/elliptic/utils.js"),r=d("./node_modules/elliptic/lib/elliptic/curves.js"),n=d("./node_modules/brorand/index.js"),s=i.assert,o=d("./node_modules/elliptic/lib/elliptic/ec/key.js"),l=d("./node_modules/elliptic/lib/elliptic/ec/signature.js");function m(e){if(!(this instanceof m))return new m(e);"string"==typeof e&&(s(Object.prototype.hasOwnProperty.call(r,e),"Unknown curve "+e),e=r[e]),e instanceof r.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}e.exports=m,m.prototype.keyPair=function(e){return new o(this,e)},m.prototype.keyFromPrivate=function(e,a){return o.fromPrivate(this,e,a)},m.prototype.keyFromPublic=function(e,a){return o.fromPublic(this,e,a)},m.prototype.genKeyPair=function(e){e||(e={});for(var a=new t({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||n(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),d=this.n.byteLength(),i=this.n.sub(new p(2));;){var r=new p(a.generate(d));if(!(r.cmp(i)>0))return r.iaddn(1),this.keyFromPrivate(r)}},m.prototype._truncateToN=function(e,a){var d=8*e.byteLength()-this.n.bitLength();return d>0&&(e=e.ushrn(d)),!a&&e.cmp(this.n)>=0?e.sub(this.n):e},m.prototype.sign=function(e,a,d,i){"object"==typeof d&&(i=d,d=null),i||(i={}),a=this.keyFromPrivate(a,d),e=this._truncateToN(new p(e,16));for(var r=this.n.byteLength(),n=a.getPrivate().toArray("be",r),s=e.toArray("be",r),o=new t({hash:this.hash,entropy:n,nonce:s,pers:i.pers,persEnc:i.persEnc||"utf8"}),m=this.n.sub(new p(1)),u=0;;u++){var f=i.k?i.k(u):new p(o.generate(this.n.byteLength()));if(!((f=this._truncateToN(f,!0)).cmpn(1)<=0||f.cmp(m)>=0)){var c=this.g.mul(f);if(!c.isInfinity()){var h=c.getX(),v=h.umod(this.n);if(0!==v.cmpn(0)){var b=f.invm(this.n).mul(v.mul(a.getPrivate()).iadd(e));if(0!==(b=b.umod(this.n)).cmpn(0)){var w=(c.getY().isOdd()?1:0)|(0!==h.cmp(v)?2:0);return i.canonical&&b.cmp(this.nh)>0&&(b=this.n.sub(b),w^=1),new l({r:v,s:b,recoveryParam:w})}}}}}},m.prototype.verify=function(e,a,d,t){e=this._truncateToN(new p(e,16)),d=this.keyFromPublic(d,t);var i=(a=new l(a,"hex")).r,r=a.s;if(i.cmpn(1)<0||i.cmp(this.n)>=0)return!1;if(r.cmpn(1)<0||r.cmp(this.n)>=0)return!1;var n,s=r.invm(this.n),o=s.mul(e).umod(this.n),m=s.mul(i).umod(this.n);return this.curve._maxwellTrick?!(n=this.g.jmulAdd(o,d.getPublic(),m)).isInfinity()&&n.eqXToP(i):!(n=this.g.mulAdd(o,d.getPublic(),m)).isInfinity()&&0===n.getX().umod(this.n).cmp(i)},m.prototype.recoverPubKey=function(e,a,d,t){s((3&d)===d,"The recovery param is more than two bits"),a=new l(a,t);var i=this.n,r=new p(e),n=a.r,o=a.s,m=1&d,u=d>>1;if(n.cmp(this.curve.p.umod(this.curve.n))>=0&&u)throw new Error("Unable to find sencond key candinate");n=u?this.curve.pointFromX(n.add(this.curve.n),m):this.curve.pointFromX(n,m);var f=a.r.invm(i),c=i.sub(r).mul(f).umod(i),h=o.mul(f).umod(i);return this.g.mulAdd(c,n,h)},m.prototype.getKeyRecoveryParam=function(e,a,d,p){if(null!==(a=new l(a,p)).recoveryParam)return a.recoveryParam;for(var t=0;t<4;t++){var i;try{i=this.recoverPubKey(e,a,t)}catch(e){continue}if(i.eq(d))return t}throw new Error("Unable to find valid recovery factor")}},"./node_modules/elliptic/lib/elliptic/ec/key.js":(e,a,d)=>{"use strict";var p=d("./node_modules/bn.js/lib/bn.js"),t=d("./node_modules/elliptic/lib/elliptic/utils.js").assert;function i(e,a){this.ec=e,this.priv=null,this.pub=null,a.priv&&this._importPrivate(a.priv,a.privEnc),a.pub&&this._importPublic(a.pub,a.pubEnc)}e.exports=i,i.fromPublic=function(e,a,d){return a instanceof i?a:new i(e,{pub:a,pubEnc:d})},i.fromPrivate=function(e,a,d){return a instanceof i?a:new i(e,{priv:a,privEnc:d})},i.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},i.prototype.getPublic=function(e,a){return"string"==typeof e&&(a=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),a?this.pub.encode(a,e):this.pub},i.prototype.getPrivate=function(e){return"hex"===e?this.priv.toString(16,2):this.priv},i.prototype._importPrivate=function(e,a){this.priv=new p(e,a||16),this.priv=this.priv.umod(this.ec.curve.n)},i.prototype._importPublic=function(e,a){if(e.x||e.y)return"mont"===this.ec.curve.type?t(e.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||t(e.x&&e.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(e.x,e.y));this.pub=this.ec.curve.decodePoint(e,a)},i.prototype.derive=function(e){return e.validate()||t(e.validate(),"public point not validated"),e.mul(this.priv).getX()},i.prototype.sign=function(e,a,d){return this.ec.sign(e,this,a,d)},i.prototype.verify=function(e,a){return this.ec.verify(e,a,this)},i.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"}},"./node_modules/elliptic/lib/elliptic/ec/signature.js":(e,a,d)=>{"use strict";var p=d("./node_modules/bn.js/lib/bn.js"),t=d("./node_modules/elliptic/lib/elliptic/utils.js"),i=t.assert;function r(e,a){if(e instanceof r)return e;this._importDER(e,a)||(i(e.r&&e.s,"Signature without r or s"),this.r=new p(e.r,16),this.s=new p(e.s,16),void 0===e.recoveryParam?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}function n(){this.place=0}function s(e,a){var d=e[a.place++];if(!(128&d))return d;var p=15&d;if(0===p||p>4)return!1;for(var t=0,i=0,r=a.place;i<p;i++,r++)t<<=8,t|=e[r],t>>>=0;return!(t<=127)&&(a.place=r,t)}function o(e){for(var a=0,d=e.length-1;!e[a]&&!(128&e[a+1])&&a<d;)a++;return 0===a?e:e.slice(a)}function l(e,a){if(a<128)e.push(a);else{var d=1+(Math.log(a)/Math.LN2>>>3);for(e.push(128|d);--d;)e.push(a>>>(d<<3)&255);e.push(a)}}e.exports=r,r.prototype._importDER=function(e,a){e=t.toArray(e,a);var d=new n;if(48!==e[d.place++])return!1;var i=s(e,d);if(!1===i)return!1;if(i+d.place!==e.length)return!1;if(2!==e[d.place++])return!1;var r=s(e,d);if(!1===r)return!1;var o=e.slice(d.place,r+d.place);if(d.place+=r,2!==e[d.place++])return!1;var l=s(e,d);if(!1===l)return!1;if(e.length!==l+d.place)return!1;var m=e.slice(d.place,l+d.place);if(0===o[0]){if(!(128&o[1]))return!1;o=o.slice(1)}if(0===m[0]){if(!(128&m[1]))return!1;m=m.slice(1)}return this.r=new p(o),this.s=new p(m),this.recoveryParam=null,!0},r.prototype.toDER=function(e){var a=this.r.toArray(),d=this.s.toArray();for(128&a[0]&&(a=[0].concat(a)),128&d[0]&&(d=[0].concat(d)),a=o(a),d=o(d);!(d[0]||128&d[1]);)d=d.slice(1);var p=[2];l(p,a.length),(p=p.concat(a)).push(2),l(p,d.length);var i=p.concat(d),r=[48];return l(r,i.length),r=r.concat(i),t.encode(r,e)}},"./node_modules/elliptic/lib/elliptic/eddsa/index.js":(e,a,d)=>{"use strict";var p=d("./node_modules/hash.js/lib/hash.js"),t=d("./node_modules/elliptic/lib/elliptic/curves.js"),i=d("./node_modules/elliptic/lib/elliptic/utils.js"),r=i.assert,n=i.parseBytes,s=d("./node_modules/elliptic/lib/elliptic/eddsa/key.js"),o=d("./node_modules/elliptic/lib/elliptic/eddsa/signature.js");function l(e){if(r("ed25519"===e,"only tested with ed25519 so far"),!(this instanceof l))return new l(e);e=t[e].curve,this.curve=e,this.g=e.g,this.g.precompute(e.n.bitLength()+1),this.pointClass=e.point().constructor,this.encodingLength=Math.ceil(e.n.bitLength()/8),this.hash=p.sha512}e.exports=l,l.prototype.sign=function(e,a){e=n(e);var d=this.keyFromSecret(a),p=this.hashInt(d.messagePrefix(),e),t=this.g.mul(p),i=this.encodePoint(t),r=this.hashInt(i,d.pubBytes(),e).mul(d.priv()),s=p.add(r).umod(this.curve.n);return this.makeSignature({R:t,S:s,Rencoded:i})},l.prototype.verify=function(e,a,d){e=n(e),a=this.makeSignature(a);var p=this.keyFromPublic(d),t=this.hashInt(a.Rencoded(),p.pubBytes(),e),i=this.g.mul(a.S());return a.R().add(p.pub().mul(t)).eq(i)},l.prototype.hashInt=function(){for(var e=this.hash(),a=0;a<arguments.length;a++)e.update(arguments[a]);return i.intFromLE(e.digest()).umod(this.curve.n)},l.prototype.keyFromPublic=function(e){return s.fromPublic(this,e)},l.prototype.keyFromSecret=function(e){return s.fromSecret(this,e)},l.prototype.makeSignature=function(e){return e instanceof o?e:new o(this,e)},l.prototype.encodePoint=function(e){var a=e.getY().toArray("le",this.encodingLength);return a[this.encodingLength-1]|=e.getX().isOdd()?128:0,a},l.prototype.decodePoint=function(e){var a=(e=i.parseBytes(e)).length-1,d=e.slice(0,a).concat(-129&e[a]),p=0!=(128&e[a]),t=i.intFromLE(d);return this.curve.pointFromY(t,p)},l.prototype.encodeInt=function(e){return e.toArray("le",this.encodingLength)},l.prototype.decodeInt=function(e){return i.intFromLE(e)},l.prototype.isPoint=function(e){return e instanceof this.pointClass}},"./node_modules/elliptic/lib/elliptic/eddsa/key.js":(e,a,d)=>{"use strict";var p=d("./node_modules/elliptic/lib/elliptic/utils.js"),t=p.assert,i=p.parseBytes,r=p.cachedProperty;function n(e,a){this.eddsa=e,this._secret=i(a.secret),e.isPoint(a.pub)?this._pub=a.pub:this._pubBytes=i(a.pub)}n.fromPublic=function(e,a){return a instanceof n?a:new n(e,{pub:a})},n.fromSecret=function(e,a){return a instanceof n?a:new n(e,{secret:a})},n.prototype.secret=function(){return this._secret},r(n,"pubBytes",(function(){return this.eddsa.encodePoint(this.pub())})),r(n,"pub",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),r(n,"privBytes",(function(){var e=this.eddsa,a=this.hash(),d=e.encodingLength-1,p=a.slice(0,e.encodingLength);return p[0]&=248,p[d]&=127,p[d]|=64,p})),r(n,"priv",(function(){return this.eddsa.decodeInt(this.privBytes())})),r(n,"hash",(function(){return this.eddsa.hash().update(this.secret()).digest()})),r(n,"messagePrefix",(function(){return this.hash().slice(this.eddsa.encodingLength)})),n.prototype.sign=function(e){return t(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)},n.prototype.verify=function(e,a){return this.eddsa.verify(e,a,this)},n.prototype.getSecret=function(e){return t(this._secret,"KeyPair is public only"),p.encode(this.secret(),e)},n.prototype.getPublic=function(e){return p.encode(this.pubBytes(),e)},e.exports=n},"./node_modules/elliptic/lib/elliptic/eddsa/signature.js":(e,a,d)=>{"use strict";var p=d("./node_modules/bn.js/lib/bn.js"),t=d("./node_modules/elliptic/lib/elliptic/utils.js"),i=t.assert,r=t.cachedProperty,n=t.parseBytes;function s(e,a){this.eddsa=e,"object"!=typeof a&&(a=n(a)),Array.isArray(a)&&(a={R:a.slice(0,e.encodingLength),S:a.slice(e.encodingLength)}),i(a.R&&a.S,"Signature without R or S"),e.isPoint(a.R)&&(this._R=a.R),a.S instanceof p&&(this._S=a.S),this._Rencoded=Array.isArray(a.R)?a.R:a.Rencoded,this._Sencoded=Array.isArray(a.S)?a.S:a.Sencoded}r(s,"S",(function(){return this.eddsa.decodeInt(this.Sencoded())})),r(s,"R",(function(){return this.eddsa.decodePoint(this.Rencoded())})),r(s,"Rencoded",(function(){return this.eddsa.encodePoint(this.R())})),r(s,"Sencoded",(function(){return this.eddsa.encodeInt(this.S())})),s.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},s.prototype.toHex=function(){return t.encode(this.toBytes(),"hex").toUpperCase()},e.exports=s},"./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js":e=>{e.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}},"./node_modules/elliptic/lib/elliptic/utils.js":(e,a,d)=>{"use strict";var p=a,t=d("./node_modules/bn.js/lib/bn.js"),i=d("./node_modules/minimalistic-assert/index.js"),r=d("./node_modules/minimalistic-crypto-utils/lib/utils.js");p.assert=i,p.toArray=r.toArray,p.zero2=r.zero2,p.toHex=r.toHex,p.encode=r.encode,p.getNAF=function(e,a,d){var p=new Array(Math.max(e.bitLength(),d)+1);p.fill(0);for(var t=1<<a+1,i=e.clone(),r=0;r<p.length;r++){var n,s=i.andln(t-1);i.isOdd()?(n=s>(t>>1)-1?(t>>1)-s:s,i.isubn(n)):n=0,p[r]=n,i.iushrn(1)}return p},p.getJSF=function(e,a){var d=[[],[]];e=e.clone(),a=a.clone();for(var p,t=0,i=0;e.cmpn(-t)>0||a.cmpn(-i)>0;){var r,n,s=e.andln(3)+t&3,o=a.andln(3)+i&3;3===s&&(s=-1),3===o&&(o=-1),r=0==(1&s)?0:3!=(p=e.andln(7)+t&7)&&5!==p||2!==o?s:-s,d[0].push(r),n=0==(1&o)?0:3!=(p=a.andln(7)+i&7)&&5!==p||2!==s?o:-o,d[1].push(n),2*t===r+1&&(t=1-t),2*i===n+1&&(i=1-i),e.iushrn(1),a.iushrn(1)}return d},p.cachedProperty=function(e,a,d){var p="_"+a;e.prototype[a]=function(){return void 0!==this[p]?this[p]:this[p]=d.call(this)}},p.parseBytes=function(e){return"string"==typeof e?p.toArray(e,"hex"):e},p.intFromLE=function(e){return new t(e,"hex","le")}},"./node_modules/hash.js/lib/hash.js":(e,a,d)=>{var p=a;p.utils=d("./node_modules/hash.js/lib/hash/utils.js"),p.common=d("./node_modules/hash.js/lib/hash/common.js"),p.sha=d("./node_modules/hash.js/lib/hash/sha.js"),p.ripemd=d("./node_modules/hash.js/lib/hash/ripemd.js"),p.hmac=d("./node_modules/hash.js/lib/hash/hmac.js"),p.sha1=p.sha.sha1,p.sha256=p.sha.sha256,p.sha224=p.sha.sha224,p.sha384=p.sha.sha384,p.sha512=p.sha.sha512,p.ripemd160=p.ripemd.ripemd160},"./node_modules/hash.js/lib/hash/common.js":(e,a,d)=>{"use strict";var p=d("./node_modules/hash.js/lib/hash/utils.js"),t=d("./node_modules/minimalistic-assert/index.js");function i(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}a.BlockHash=i,i.prototype.update=function(e,a){if(e=p.toArray(e,a),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var d=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-d,e.length),0===this.pending.length&&(this.pending=null),e=p.join32(e,0,e.length-d,this.endian);for(var t=0;t<e.length;t+=this._delta32)this._update(e,t,t+this._delta32)}return this},i.prototype.digest=function(e){return this.update(this._pad()),t(null===this.pending),this._digest(e)},i.prototype._pad=function(){var e=this.pendingTotal,a=this._delta8,d=a-(e+this.padLength)%a,p=new Array(d+this.padLength);p[0]=128;for(var t=1;t<d;t++)p[t]=0;if(e<<=3,"big"===this.endian){for(var i=8;i<this.padLength;i++)p[t++]=0;p[t++]=0,p[t++]=0,p[t++]=0,p[t++]=0,p[t++]=e>>>24&255,p[t++]=e>>>16&255,p[t++]=e>>>8&255,p[t++]=255&e}else for(p[t++]=255&e,p[t++]=e>>>8&255,p[t++]=e>>>16&255,p[t++]=e>>>24&255,p[t++]=0,p[t++]=0,p[t++]=0,p[t++]=0,i=8;i<this.padLength;i++)p[t++]=0;return p}},"./node_modules/hash.js/lib/hash/hmac.js":(e,a,d)=>{"use strict";var p=d("./node_modules/hash.js/lib/hash/utils.js"),t=d("./node_modules/minimalistic-assert/index.js");function i(e,a,d){if(!(this instanceof i))return new i(e,a,d);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(p.toArray(a,d))}e.exports=i,i.prototype._init=function(e){e.length>this.blockSize&&(e=(new this.Hash).update(e).digest()),t(e.length<=this.blockSize);for(var a=e.length;a<this.blockSize;a++)e.push(0);for(a=0;a<e.length;a++)e[a]^=54;for(this.inner=(new this.Hash).update(e),a=0;a<e.length;a++)e[a]^=106;this.outer=(new this.Hash).update(e)},i.prototype.update=function(e,a){return this.inner.update(e,a),this},i.prototype.digest=function(e){return this.outer.update(this.inner.digest()),this.outer.digest(e)}},"./node_modules/hash.js/lib/hash/ripemd.js":(e,a,d)=>{"use strict";var p=d("./node_modules/hash.js/lib/hash/utils.js"),t=d("./node_modules/hash.js/lib/hash/common.js"),i=p.rotl32,r=p.sum32,n=p.sum32_3,s=p.sum32_4,o=t.BlockHash;function l(){if(!(this instanceof l))return new l;o.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function m(e,a,d,p){return e<=15?a^d^p:e<=31?a&d|~a&p:e<=47?(a|~d)^p:e<=63?a&p|d&~p:a^(d|~p)}function u(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function f(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}p.inherits(l,o),a.ripemd160=l,l.blockSize=512,l.outSize=160,l.hmacStrength=192,l.padLength=64,l.prototype._update=function(e,a){for(var d=this.h[0],p=this.h[1],t=this.h[2],o=this.h[3],l=this.h[4],w=d,y=p,g=t,_=o,S=l,N=0;N<80;N++){var M=r(i(s(d,m(N,p,t,o),e[c[N]+a],u(N)),v[N]),l);d=l,l=o,o=i(t,10),t=p,p=M,M=r(i(s(w,m(79-N,y,g,_),e[h[N]+a],f(N)),b[N]),S),w=S,S=_,_=i(g,10),g=y,y=M}M=n(this.h[1],t,_),this.h[1]=n(this.h[2],o,S),this.h[2]=n(this.h[3],l,w),this.h[3]=n(this.h[4],d,y),this.h[4]=n(this.h[0],p,g),this.h[0]=M},l.prototype._digest=function(e){return"hex"===e?p.toHex32(this.h,"little"):p.split32(this.h,"little")};var c=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],h=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],v=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],b=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},"./node_modules/hash.js/lib/hash/sha.js":(e,a,d)=>{"use strict";a.sha1=d("./node_modules/hash.js/lib/hash/sha/1.js"),a.sha224=d("./node_modules/hash.js/lib/hash/sha/224.js"),a.sha256=d("./node_modules/hash.js/lib/hash/sha/256.js"),a.sha384=d("./node_modules/hash.js/lib/hash/sha/384.js"),a.sha512=d("./node_modules/hash.js/lib/hash/sha/512.js")},"./node_modules/hash.js/lib/hash/sha/1.js":(e,a,d)=>{"use strict";var p=d("./node_modules/hash.js/lib/hash/utils.js"),t=d("./node_modules/hash.js/lib/hash/common.js"),i=d("./node_modules/hash.js/lib/hash/sha/common.js"),r=p.rotl32,n=p.sum32,s=p.sum32_5,o=i.ft_1,l=t.BlockHash,m=[1518500249,1859775393,2400959708,3395469782];function u(){if(!(this instanceof u))return new u;l.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}p.inherits(u,l),e.exports=u,u.blockSize=512,u.outSize=160,u.hmacStrength=80,u.padLength=64,u.prototype._update=function(e,a){for(var d=this.W,p=0;p<16;p++)d[p]=e[a+p];for(;p<d.length;p++)d[p]=r(d[p-3]^d[p-8]^d[p-14]^d[p-16],1);var t=this.h[0],i=this.h[1],l=this.h[2],u=this.h[3],f=this.h[4];for(p=0;p<d.length;p++){var c=~~(p/20),h=s(r(t,5),o(c,i,l,u),f,d[p],m[c]);f=u,u=l,l=r(i,30),i=t,t=h}this.h[0]=n(this.h[0],t),this.h[1]=n(this.h[1],i),this.h[2]=n(this.h[2],l),this.h[3]=n(this.h[3],u),this.h[4]=n(this.h[4],f)},u.prototype._digest=function(e){return"hex"===e?p.toHex32(this.h,"big"):p.split32(this.h,"big")}},"./node_modules/hash.js/lib/hash/sha/224.js":(e,a,d)=>{"use strict";var p=d("./node_modules/hash.js/lib/hash/utils.js"),t=d("./node_modules/hash.js/lib/hash/sha/256.js");function i(){if(!(this instanceof i))return new i;t.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}p.inherits(i,t),e.exports=i,i.blockSize=512,i.outSize=224,i.hmacStrength=192,i.padLength=64,i.prototype._digest=function(e){return"hex"===e?p.toHex32(this.h.slice(0,7),"big"):p.split32(this.h.slice(0,7),"big")}},"./node_modules/hash.js/lib/hash/sha/256.js":(e,a,d)=>{"use strict";var p=d("./node_modules/hash.js/lib/hash/utils.js"),t=d("./node_modules/hash.js/lib/hash/common.js"),i=d("./node_modules/hash.js/lib/hash/sha/common.js"),r=d("./node_modules/minimalistic-assert/index.js"),n=p.sum32,s=p.sum32_4,o=p.sum32_5,l=i.ch32,m=i.maj32,u=i.s0_256,f=i.s1_256,c=i.g0_256,h=i.g1_256,v=t.BlockHash,b=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function w(){if(!(this instanceof w))return new w;v.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=b,this.W=new Array(64)}p.inherits(w,v),e.exports=w,w.blockSize=512,w.outSize=256,w.hmacStrength=192,w.padLength=64,w.prototype._update=function(e,a){for(var d=this.W,p=0;p<16;p++)d[p]=e[a+p];for(;p<d.length;p++)d[p]=s(h(d[p-2]),d[p-7],c(d[p-15]),d[p-16]);var t=this.h[0],i=this.h[1],v=this.h[2],b=this.h[3],w=this.h[4],y=this.h[5],g=this.h[6],_=this.h[7];for(r(this.k.length===d.length),p=0;p<d.length;p++){var S=o(_,f(w),l(w,y,g),this.k[p],d[p]),N=n(u(t),m(t,i,v));_=g,g=y,y=w,w=n(b,S),b=v,v=i,i=t,t=n(S,N)}this.h[0]=n(this.h[0],t),this.h[1]=n(this.h[1],i),this.h[2]=n(this.h[2],v),this.h[3]=n(this.h[3],b),this.h[4]=n(this.h[4],w),this.h[5]=n(this.h[5],y),this.h[6]=n(this.h[6],g),this.h[7]=n(this.h[7],_)},w.prototype._digest=function(e){return"hex"===e?p.toHex32(this.h,"big"):p.split32(this.h,"big")}},"./node_modules/hash.js/lib/hash/sha/384.js":(e,a,d)=>{"use strict";var p=d("./node_modules/hash.js/lib/hash/utils.js"),t=d("./node_modules/hash.js/lib/hash/sha/512.js");function i(){if(!(this instanceof i))return new i;t.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}p.inherits(i,t),e.exports=i,i.blockSize=1024,i.outSize=384,i.hmacStrength=192,i.padLength=128,i.prototype._digest=function(e){return"hex"===e?p.toHex32(this.h.slice(0,12),"big"):p.split32(this.h.slice(0,12),"big")}},"./node_modules/hash.js/lib/hash/sha/512.js":(e,a,d)=>{"use strict";var p=d("./node_modules/hash.js/lib/hash/utils.js"),t=d("./node_modules/hash.js/lib/hash/common.js"),i=d("./node_modules/minimalistic-assert/index.js"),r=p.rotr64_hi,n=p.rotr64_lo,s=p.shr64_hi,o=p.shr64_lo,l=p.sum64,m=p.sum64_hi,u=p.sum64_lo,f=p.sum64_4_hi,c=p.sum64_4_lo,h=p.sum64_5_hi,v=p.sum64_5_lo,b=t.BlockHash,w=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function y(){if(!(this instanceof y))return new y;b.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=w,this.W=new Array(160)}function g(e,a,d,p,t){var i=e&d^~e&t;return i<0&&(i+=4294967296),i}function _(e,a,d,p,t,i){var r=a&p^~a&i;return r<0&&(r+=4294967296),r}function S(e,a,d,p,t){var i=e&d^e&t^d&t;return i<0&&(i+=4294967296),i}function N(e,a,d,p,t,i){var r=a&p^a&i^p&i;return r<0&&(r+=4294967296),r}function M(e,a){var d=r(e,a,28)^r(a,e,2)^r(a,e,7);return d<0&&(d+=4294967296),d}function x(e,a){var d=n(e,a,28)^n(a,e,2)^n(a,e,7);return d<0&&(d+=4294967296),d}function D(e,a){var d=n(e,a,14)^n(e,a,18)^n(a,e,9);return d<0&&(d+=4294967296),d}function j(e,a){var d=r(e,a,1)^r(e,a,8)^s(e,a,7);return d<0&&(d+=4294967296),d}function A(e,a){var d=n(e,a,1)^n(e,a,8)^o(e,a,7);return d<0&&(d+=4294967296),d}function T(e,a){var d=n(e,a,19)^n(a,e,29)^o(e,a,6);return d<0&&(d+=4294967296),d}p.inherits(y,b),e.exports=y,y.blockSize=1024,y.outSize=512,y.hmacStrength=192,y.padLength=128,y.prototype._prepareBlock=function(e,a){for(var d=this.W,p=0;p<32;p++)d[p]=e[a+p];for(;p<d.length;p+=2){var t=(v=d[p-4],b=d[p-3],w=void 0,(w=r(v,b,19)^r(b,v,29)^s(v,b,6))<0&&(w+=4294967296),w),i=T(d[p-4],d[p-3]),n=d[p-14],o=d[p-13],l=j(d[p-30],d[p-29]),m=A(d[p-30],d[p-29]),u=d[p-32],h=d[p-31];d[p]=f(t,i,n,o,l,m,u,h),d[p+1]=c(t,i,n,o,l,m,u,h)}var v,b,w},y.prototype._update=function(e,a){this._prepareBlock(e,a);var d,p,t,n=this.W,s=this.h[0],o=this.h[1],f=this.h[2],c=this.h[3],b=this.h[4],w=this.h[5],y=this.h[6],j=this.h[7],A=this.h[8],T=this.h[9],V=this.h[10],E=this.h[11],k=this.h[12],B=this.h[13],P=this.h[14],I=this.h[15];i(this.k.length===n.length);for(var C=0;C<n.length;C+=2){var R=P,O=I,L=(t=void 0,(t=r(d=A,p=T,14)^r(d,p,18)^r(p,d,9))<0&&(t+=4294967296),t),F=D(A,T),z=g(A,0,V,0,k),q=_(0,T,0,E,0,B),U=this.k[C],H=this.k[C+1],K=n[C],G=n[C+1],$=h(R,O,L,F,z,q,U,H,K,G),Z=v(R,O,L,F,z,q,U,H,K,G);R=M(s,o),O=x(s,o),L=S(s,0,f,0,b),F=N(0,o,0,c,0,w);var J=m(R,O,L,F),W=u(R,O,L,F);P=k,I=B,k=V,B=E,V=A,E=T,A=m(y,j,$,Z),T=u(j,j,$,Z),y=b,j=w,b=f,w=c,f=s,c=o,s=m($,Z,J,W),o=u($,Z,J,W)}l(this.h,0,s,o),l(this.h,2,f,c),l(this.h,4,b,w),l(this.h,6,y,j),l(this.h,8,A,T),l(this.h,10,V,E),l(this.h,12,k,B),l(this.h,14,P,I)},y.prototype._digest=function(e){return"hex"===e?p.toHex32(this.h,"big"):p.split32(this.h,"big")}},"./node_modules/hash.js/lib/hash/sha/common.js":(e,a,d)=>{"use strict";var p=d("./node_modules/hash.js/lib/hash/utils.js").rotr32;function t(e,a,d){return e&a^~e&d}function i(e,a,d){return e&a^e&d^a&d}function r(e,a,d){return e^a^d}a.ft_1=function(e,a,d,p){return 0===e?t(a,d,p):1===e||3===e?r(a,d,p):2===e?i(a,d,p):void 0},a.ch32=t,a.maj32=i,a.p32=r,a.s0_256=function(e){return p(e,2)^p(e,13)^p(e,22)},a.s1_256=function(e){return p(e,6)^p(e,11)^p(e,25)},a.g0_256=function(e){return p(e,7)^p(e,18)^e>>>3},a.g1_256=function(e){return p(e,17)^p(e,19)^e>>>10}},"./node_modules/hash.js/lib/hash/utils.js":(e,a,d)=>{"use strict";var p=d("./node_modules/minimalistic-assert/index.js"),t=d("./node_modules/inherits/inherits.js");function i(e,a){return 55296==(64512&e.charCodeAt(a))&&!(a<0||a+1>=e.length)&&56320==(64512&e.charCodeAt(a+1))}function r(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function n(e){return 1===e.length?"0"+e:e}function s(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}a.inherits=t,a.toArray=function(e,a){if(Array.isArray(e))return e.slice();if(!e)return[];var d=[];if("string"==typeof e)if(a){if("hex"===a)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),t=0;t<e.length;t+=2)d.push(parseInt(e[t]+e[t+1],16))}else for(var p=0,t=0;t<e.length;t++){var r=e.charCodeAt(t);r<128?d[p++]=r:r<2048?(d[p++]=r>>6|192,d[p++]=63&r|128):i(e,t)?(r=65536+((1023&r)<<10)+(1023&e.charCodeAt(++t)),d[p++]=r>>18|240,d[p++]=r>>12&63|128,d[p++]=r>>6&63|128,d[p++]=63&r|128):(d[p++]=r>>12|224,d[p++]=r>>6&63|128,d[p++]=63&r|128)}else for(t=0;t<e.length;t++)d[t]=0|e[t];return d},a.toHex=function(e){for(var a="",d=0;d<e.length;d++)a+=n(e[d].toString(16));return a},a.htonl=r,a.toHex32=function(e,a){for(var d="",p=0;p<e.length;p++){var t=e[p];"little"===a&&(t=r(t)),d+=s(t.toString(16))}return d},a.zero2=n,a.zero8=s,a.join32=function(e,a,d,t){var i=d-a;p(i%4==0);for(var r=new Array(i/4),n=0,s=a;n<r.length;n++,s+=4){var o;o="big"===t?e[s]<<24|e[s+1]<<16|e[s+2]<<8|e[s+3]:e[s+3]<<24|e[s+2]<<16|e[s+1]<<8|e[s],r[n]=o>>>0}return r},a.split32=function(e,a){for(var d=new Array(4*e.length),p=0,t=0;p<e.length;p++,t+=4){var i=e[p];"big"===a?(d[t]=i>>>24,d[t+1]=i>>>16&255,d[t+2]=i>>>8&255,d[t+3]=255&i):(d[t+3]=i>>>24,d[t+2]=i>>>16&255,d[t+1]=i>>>8&255,d[t]=255&i)}return d},a.rotr32=function(e,a){return e>>>a|e<<32-a},a.rotl32=function(e,a){return e<<a|e>>>32-a},a.sum32=function(e,a){return e+a>>>0},a.sum32_3=function(e,a,d){return e+a+d>>>0},a.sum32_4=function(e,a,d,p){return e+a+d+p>>>0},a.sum32_5=function(e,a,d,p,t){return e+a+d+p+t>>>0},a.sum64=function(e,a,d,p){var t=e[a],i=p+e[a+1]>>>0,r=(i<p?1:0)+d+t;e[a]=r>>>0,e[a+1]=i},a.sum64_hi=function(e,a,d,p){return(a+p>>>0<a?1:0)+e+d>>>0},a.sum64_lo=function(e,a,d,p){return a+p>>>0},a.sum64_4_hi=function(e,a,d,p,t,i,r,n){var s=0,o=a;return s+=(o=o+p>>>0)<a?1:0,s+=(o=o+i>>>0)<i?1:0,e+d+t+r+(s+=(o=o+n>>>0)<n?1:0)>>>0},a.sum64_4_lo=function(e,a,d,p,t,i,r,n){return a+p+i+n>>>0},a.sum64_5_hi=function(e,a,d,p,t,i,r,n,s,o){var l=0,m=a;return l+=(m=m+p>>>0)<a?1:0,l+=(m=m+i>>>0)<i?1:0,l+=(m=m+n>>>0)<n?1:0,e+d+t+r+s+(l+=(m=m+o>>>0)<o?1:0)>>>0},a.sum64_5_lo=function(e,a,d,p,t,i,r,n,s,o){return a+p+i+n+o>>>0},a.rotr64_hi=function(e,a,d){return(a<<32-d|e>>>d)>>>0},a.rotr64_lo=function(e,a,d){return(e<<32-d|a>>>d)>>>0},a.shr64_hi=function(e,a,d){return e>>>d},a.shr64_lo=function(e,a,d){return(e<<32-d|a>>>d)>>>0}},"./node_modules/hmac-drbg/lib/hmac-drbg.js":(e,a,d)=>{"use strict";var p=d("./node_modules/hash.js/lib/hash.js"),t=d("./node_modules/minimalistic-crypto-utils/lib/utils.js"),i=d("./node_modules/minimalistic-assert/index.js");function r(e){if(!(this instanceof r))return new r(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var a=t.toArray(e.entropy,e.entropyEnc||"hex"),d=t.toArray(e.nonce,e.nonceEnc||"hex"),p=t.toArray(e.pers,e.persEnc||"hex");i(a.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(a,d,p)}e.exports=r,r.prototype._init=function(e,a,d){var p=e.concat(a).concat(d);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var t=0;t<this.V.length;t++)this.K[t]=0,this.V[t]=1;this._update(p),this._reseed=1,this.reseedInterval=281474976710656},r.prototype._hmac=function(){return new p.hmac(this.hash,this.K)},r.prototype._update=function(e){var a=this._hmac().update(this.V).update([0]);e&&(a=a.update(e)),this.K=a.digest(),this.V=this._hmac().update(this.V).digest(),e&&(this.K=this._hmac().update(this.V).update([1]).update(e).digest(),this.V=this._hmac().update(this.V).digest())},r.prototype.reseed=function(e,a,d,p){"string"!=typeof a&&(p=d,d=a,a=null),e=t.toArray(e,a),d=t.toArray(d,p),i(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(d||[])),this._reseed=1},r.prototype.generate=function(e,a,d,p){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof a&&(p=d,d=a,a=null),d&&(d=t.toArray(d,p||"hex"),this._update(d));for(var i=[];i.length<e;)this.V=this._hmac().update(this.V).digest(),i=i.concat(this.V);var r=i.slice(0,e);return this._update(d),this._reseed++,t.encode(r,a)}},"./node_modules/inherits/inherits.js":(e,a,d)=>{try{var p=d("util");if("function"!=typeof p.inherits)throw"";e.exports=p.inherits}catch(a){e.exports=d("./node_modules/inherits/inherits_browser.js")}},"./node_modules/inherits/inherits_browser.js":e=>{"function"==typeof Object.create?e.exports=function(e,a){a&&(e.super_=a,e.prototype=Object.create(a.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,a){if(a){e.super_=a;var d=function(){};d.prototype=a.prototype,e.prototype=new d,e.prototype.constructor=e}}},"./node_modules/minimalistic-assert/index.js":e=>{function a(e,a){if(!e)throw new Error(a||"Assertion failed")}e.exports=a,a.equal=function(e,a,d){if(e!=a)throw new Error(d||"Assertion failed: "+e+" != "+a)}},"./node_modules/minimalistic-crypto-utils/lib/utils.js":(e,a)=>{"use strict";var d=a;function p(e){return 1===e.length?"0"+e:e}function t(e){for(var a="",d=0;d<e.length;d++)a+=p(e[d].toString(16));return a}d.toArray=function(e,a){if(Array.isArray(e))return e.slice();if(!e)return[];var d=[];if("string"!=typeof e){for(var p=0;p<e.length;p++)d[p]=0|e[p];return d}if("hex"===a)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),p=0;p<e.length;p+=2)d.push(parseInt(e[p]+e[p+1],16));else for(p=0;p<e.length;p++){var t=e.charCodeAt(p),i=t>>8,r=255&t;i?d.push(i,r):d.push(r)}return d},d.zero2=p,d.toHex=t,d.encode=function(e,a){return"hex"===a?t(e):e}},"./node_modules/node-gyp-build/index.js":(e,a,d)=>{var p=d("fs"),t=d("path"),i=d("os"),r=require,n=process.config&&process.config.variables||{},s=!!process.env.PREBUILDS_ONLY,o=process.versions.modules,l=process.versions&&process.versions.electron||process.env.ELECTRON_RUN_AS_NODE||"undefined"!=typeof window&&window.process&&"renderer"===window.process.type?"electron":process.versions&&process.versions.nw?"node-webkit":"node",m=process.env.npm_config_arch||i.arch(),u=process.env.npm_config_platform||i.platform(),f=process.env.LIBC||(function(e){return"linux"===e&&p.existsSync("/etc/alpine-release")}(u)?"musl":"glibc"),c=process.env.ARM_VERSION||("arm64"===m?"8":n.arm_version)||"",h=(process.versions.uv||"").split(".")[0];function v(e){return r(v.path(e))}function b(e){try{return p.readdirSync(e)}catch(e){return[]}}function w(e,a){var d=b(e).filter(a);return d[0]&&t.join(e,d[0])}function y(e){return/\.node$/.test(e)}function g(e){var a=e.split("-");if(2===a.length){var d=a[0],p=a[1].split("+");if(d&&p.length&&p.every(Boolean))return{name:e,platform:d,architectures:p}}}function _(e,a){return function(d){return null!=d&&d.platform===e&&d.architectures.includes(a)}}function S(e,a){return e.architectures.length-a.architectures.length}function N(e){var a=e.split("."),d={file:e,specificity:0};if("node"===a.pop()){for(var p=0;p<a.length;p++){var t=a[p];if("node"===t||"electron"===t||"node-webkit"===t)d.runtime=t;else if("napi"===t)d.napi=!0;else if("abi"===t.slice(0,3))d.abi=t.slice(3);else if("uv"===t.slice(0,2))d.uv=t.slice(2);else if("armv"===t.slice(0,4))d.armv=t.slice(4);else{if("glibc"!==t&&"musl"!==t)continue;d.libc=t}d.specificity++}return d}}function M(e,a){return function(d){return!(null==d||d.runtime!==e&&!function(e){return"node"===e.runtime&&e.napi}(d)||d.abi!==a&&!d.napi||d.uv&&d.uv!==h||d.armv&&d.armv!==c||d.libc&&d.libc!==f)}}function x(e){return function(a,d){return a.runtime!==d.runtime?a.runtime===e?-1:1:a.abi!==d.abi?a.abi?-1:1:a.specificity!==d.specificity?a.specificity>d.specificity?-1:1:0}}e.exports=v,v.path=function(e){e=t.resolve(e||".");try{var a=r(t.join(e,"package.json")).name.toUpperCase().replace(/-/g,"_");process.env[a+"_PREBUILD"]&&(e=process.env[a+"_PREBUILD"])}catch(e){}if(!s){var d=w(t.join(e,"build/Release"),y);if(d)return d;var p=w(t.join(e,"build/Debug"),y);if(p)return p}var i=D(e);if(i)return i;var n=D(t.dirname(process.execPath));if(n)return n;var v=["platform="+u,"arch="+m,"runtime="+l,"abi="+o,"uv="+h,c?"armv="+c:"","libc="+f,"node="+process.versions.node,process.versions.electron?"electron="+process.versions.electron:"","webpack=true"].filter(Boolean).join(" ");throw new Error("No native build was found for "+v+"\n loaded from: "+e+"\n");function D(e){var a=b(t.join(e,"prebuilds")).map(g).filter(_(u,m)).sort(S)[0];if(a){var d=t.join(e,"prebuilds",a.name),p=b(d).map(N).filter(M(l,o)).sort(x(l))[0];return p?t.join(d,p.file):void 0}}},v.parseTags=N,v.matchTags=M,v.compareTags=x,v.parseTuple=g,v.matchTuple=_,v.compareTuples=S},"./node_modules/secp256k1/bindings.js":(e,a,d)=>{const p=d("./node_modules/node-gyp-build/index.js")(__dirname);e.exports=d("./node_modules/secp256k1/lib/index.js")(new p.Secp256k1)},"./node_modules/secp256k1/elliptic.js":(e,a,d)=>{e.exports=d("./node_modules/secp256k1/lib/index.js")(d("./node_modules/secp256k1/lib/elliptic.js"))},"./node_modules/secp256k1/index.js":(e,a,d)=>{try{e.exports=d("./node_modules/secp256k1/bindings.js")}catch(a){e.exports=d("./node_modules/secp256k1/elliptic.js")}},"./node_modules/secp256k1/lib/elliptic.js":(e,a,d)=>{const p=new(0,d("./node_modules/elliptic/lib/elliptic.js").ec)("secp256k1"),t=p.curve,i=t.n.constructor;function r(e){const a=e[0];switch(a){case 2:case 3:return 33!==e.length?null:function(e,a){let d=new i(a);if(d.cmp(t.p)>=0)return null;d=d.toRed(t.red);let r=d.redSqr().redIMul(d).redIAdd(t.b).redSqrt();return 3===e!==r.isOdd()&&(r=r.redNeg()),p.keyPair({pub:{x:d,y:r}})}(a,e.subarray(1,33));case 4:case 6:case 7:return 65!==e.length?null:function(e,a,d){let r=new i(a),n=new i(d);if(r.cmp(t.p)>=0||n.cmp(t.p)>=0)return null;if(r=r.toRed(t.red),n=n.toRed(t.red),(6===e||7===e)&&n.isOdd()!==(7===e))return null;const s=r.redSqr().redIMul(r);return n.redSqr().redISub(s.redIAdd(t.b)).isZero()?p.keyPair({pub:{x:r,y:n}}):null}(a,e.subarray(1,33),e.subarray(33,65));default:return null}}function n(e,a){const d=a.encode(null,33===e.length);for(let a=0;a<e.length;++a)e[a]=d[a]}e.exports={contextRandomize:()=>0,privateKeyVerify(e){const a=new i(e);return a.cmp(t.n)<0&&!a.isZero()?0:1},privateKeyNegate(e){const a=new i(e),d=t.n.sub(a).umod(t.n).toArrayLike(Uint8Array,"be",32);return e.set(d),0},privateKeyTweakAdd(e,a){const d=new i(a);if(d.cmp(t.n)>=0)return 1;if(d.iadd(new i(e)),d.cmp(t.n)>=0&&d.isub(t.n),d.isZero())return 1;const p=d.toArrayLike(Uint8Array,"be",32);return e.set(p),0},privateKeyTweakMul(e,a){let d=new i(a);if(d.cmp(t.n)>=0||d.isZero())return 1;d.imul(new i(e)),d.cmp(t.n)>=0&&(d=d.umod(t.n));const p=d.toArrayLike(Uint8Array,"be",32);return e.set(p),0},publicKeyVerify:e=>null===r(e)?1:0,publicKeyCreate(e,a){const d=new i(a);return d.cmp(t.n)>=0||d.isZero()?1:(n(e,p.keyFromPrivate(a).getPublic()),0)},publicKeyConvert(e,a){const d=r(a);return null===d?1:(n(e,d.getPublic()),0)},publicKeyNegate(e,a){const d=r(a);if(null===d)return 1;const p=d.getPublic();return p.y=p.y.redNeg(),n(e,p),0},publicKeyCombine(e,a){const d=new Array(a.length);for(let e=0;e<a.length;++e)if(d[e]=r(a[e]),null===d[e])return 1;let p=d[0].getPublic();for(let e=1;e<d.length;++e)p=p.add(d[e].pub);return p.isInfinity()?2:(n(e,p),0)},publicKeyTweakAdd(e,a,d){const p=r(a);if(null===p)return 1;if((d=new i(d)).cmp(t.n)>=0)return 2;const s=p.getPublic().add(t.g.mul(d));return s.isInfinity()?2:(n(e,s),0)},publicKeyTweakMul(e,a,d){const p=r(a);return null===p?1:(d=new i(d)).cmp(t.n)>=0||d.isZero()?2:(n(e,p.getPublic().mul(d)),0)},signatureNormalize(e){const a=new i(e.subarray(0,32)),d=new i(e.subarray(32,64));return a.cmp(t.n)>=0||d.cmp(t.n)>=0?1:(1===d.cmp(p.nh)&&e.set(t.n.sub(d).toArrayLike(Uint8Array,"be",32),32),0)},signatureExport(e,a){const d=a.subarray(0,32),p=a.subarray(32,64);if(new i(d).cmp(t.n)>=0)return 1;if(new i(p).cmp(t.n)>=0)return 1;const{output:r}=e;let n=r.subarray(4,37);n[0]=0,n.set(d,1);let s=33,o=0;for(;s>1&&0===n[o]&&!(128&n[o+1]);--s,++o);if(n=n.subarray(o),128&n[0])return 1;if(s>1&&0===n[0]&&!(128&n[1]))return 1;let l=r.subarray(39,72);l[0]=0,l.set(p,1);let m=33,u=0;for(;m>1&&0===l[u]&&!(128&l[u+1]);--m,++u);return l=l.subarray(u),128&l[0]||m>1&&0===l[0]&&!(128&l[1])?1:(e.outputlen=6+s+m,r[0]=48,r[1]=e.outputlen-2,r[2]=2,r[3]=n.length,r.set(n,4),r[4+s]=2,r[5+s]=l.length,r.set(l,6+s),0)},signatureImport(e,a){if(a.length<8)return 1;if(a.length>72)return 1;if(48!==a[0])return 1;if(a[1]!==a.length-2)return 1;if(2!==a[2])return 1;const d=a[3];if(0===d)return 1;if(5+d>=a.length)return 1;if(2!==a[4+d])return 1;const p=a[5+d];if(0===p)return 1;if(6+d+p!==a.length)return 1;if(128&a[4])return 1;if(d>1&&0===a[4]&&!(128&a[5]))return 1;if(128&a[d+6])return 1;if(p>1&&0===a[d+6]&&!(128&a[d+7]))return 1;let r=a.subarray(4,4+d);if(33===r.length&&0===r[0]&&(r=r.subarray(1)),r.length>32)return 1;let n=a.subarray(6+d);if(33===n.length&&0===n[0]&&(n=n.slice(1)),n.length>32)throw new Error("S length is too long");let s=new i(r);s.cmp(t.n)>=0&&(s=new i(0));let o=new i(a.subarray(6+d));return o.cmp(t.n)>=0&&(o=new i(0)),e.set(s.toArrayLike(Uint8Array,"be",32),0),e.set(o.toArrayLike(Uint8Array,"be",32),32),0},ecdsaSign(e,a,d,r,n){if(n){const e=n;n=p=>{const t=e(a,d,null,r,p);if(!(t instanceof Uint8Array&&32===t.length))throw new Error("This is the way");return new i(t)}}const s=new i(d);if(s.cmp(t.n)>=0||s.isZero())return 1;let o;try{o=p.sign(a,d,{canonical:!0,k:n,pers:r})}catch(e){return 1}return e.signature.set(o.r.toArrayLike(Uint8Array,"be",32),0),e.signature.set(o.s.toArrayLike(Uint8Array,"be",32),32),e.recid=o.recoveryParam,0},ecdsaVerify(e,a,d){const n={r:e.subarray(0,32),s:e.subarray(32,64)},s=new i(n.r),o=new i(n.s);if(s.cmp(t.n)>=0||o.cmp(t.n)>=0)return 1;if(1===o.cmp(p.nh)||s.isZero()||o.isZero())return 3;const l=r(d);if(null===l)return 2;const m=l.getPublic();return p.verify(a,n,m)?0:3},ecdsaRecover(e,a,d,r){const s={r:a.slice(0,32),s:a.slice(32,64)},o=new i(s.r),l=new i(s.s);if(o.cmp(t.n)>=0||l.cmp(t.n)>=0)return 1;if(o.isZero()||l.isZero())return 2;let m;try{m=p.recoverPubKey(r,s,d)}catch(e){return 2}return n(e,m),0},ecdh(e,a,d,n,s,o,l){const m=r(a);if(null===m)return 1;const u=new i(d);if(u.cmp(t.n)>=0||u.isZero())return 2;const f=m.getPublic().mul(u);if(void 0===s){const a=f.encode(null,!0),d=p.hash().update(a).digest();for(let a=0;a<32;++a)e[a]=d[a]}else{o||(o=new Uint8Array(32));const a=f.getX().toArray("be",32);for(let e=0;e<32;++e)o[e]=a[e];l||(l=new Uint8Array(32));const d=f.getY().toArray("be",32);for(let e=0;e<32;++e)l[e]=d[e];const p=s(o,l,n);if(!(p instanceof Uint8Array&&p.length===e.length))return 2;e.set(p)}return 0}}},"./node_modules/secp256k1/lib/index.js":e=>{const a="Impossible case. Please create issue.",d="The tweak was out of range or the resulted private key is invalid",p="The tweak was out of range or equal to zero",t="Public Key could not be parsed",i="Public Key serialization error",r="Signature could not be parsed";function n(e,a){if(!e)throw new Error(a)}function s(e,a,d){if(n(a instanceof Uint8Array,`Expected ${e} to be an Uint8Array`),void 0!==d)if(Array.isArray(d)){const p=`Expected ${e} to be an Uint8Array with length [${d.join(", ")}]`;n(d.includes(a.length),p)}else{const p=`Expected ${e} to be an Uint8Array with length ${d}`;n(a.length===d,p)}}function o(e){n("Boolean"===m(e),"Expected compressed to be a Boolean")}function l(e=(e=>new Uint8Array(e)),a){return"function"==typeof e&&(e=e(a)),s("output",e,a),e}function m(e){return Object.prototype.toString.call(e).slice(8,-1)}e.exports=e=>({contextRandomize(a){if(n(null===a||a instanceof Uint8Array,"Expected seed to be an Uint8Array or null"),null!==a&&s("seed",a,32),1===e.contextRandomize(a))throw new Error("Unknow error on context randomization")},privateKeyVerify:a=>(s("private key",a,32),0===e.privateKeyVerify(a)),privateKeyNegate(d){switch(s("private key",d,32),e.privateKeyNegate(d)){case 0:return d;case 1:throw new Error(a)}},privateKeyTweakAdd(a,p){switch(s("private key",a,32),s("tweak",p,32),e.privateKeyTweakAdd(a,p)){case 0:return a;case 1:throw new Error(d)}},privateKeyTweakMul(a,d){switch(s("private key",a,32),s("tweak",d,32),e.privateKeyTweakMul(a,d)){case 0:return a;case 1:throw new Error(p)}},publicKeyVerify:a=>(s("public key",a,[33,65]),0===e.publicKeyVerify(a)),publicKeyCreate(a,d=!0,p){switch(s("private key",a,32),o(d),p=l(p,d?33:65),e.publicKeyCreate(p,a)){case 0:return p;case 1:throw new Error("Private Key is invalid");case 2:throw new Error(i)}},publicKeyConvert(a,d=!0,p){switch(s("public key",a,[33,65]),o(d),p=l(p,d?33:65),e.publicKeyConvert(p,a)){case 0:return p;case 1:throw new Error(t);case 2:throw new Error(i)}},publicKeyNegate(d,p=!0,r){switch(s("public key",d,[33,65]),o(p),r=l(r,p?33:65),e.publicKeyNegate(r,d)){case 0:return r;case 1:throw new Error(t);case 2:throw new Error(a);case 3:throw new Error(i)}},publicKeyCombine(a,d=!0,p){n(Array.isArray(a),"Expected public keys to be an Array"),n(a.length>0,"Expected public keys array will have more than zero items");for(const e of a)s("public key",e,[33,65]);switch(o(d),p=l(p,d?33:65),e.publicKeyCombine(p,a)){case 0:return p;case 1:throw new Error(t);case 2:throw new Error("The sum of the public keys is not valid");case 3:throw new Error(i)}},publicKeyTweakAdd(a,p,i=!0,r){switch(s("public key",a,[33,65]),s("tweak",p,32),o(i),r=l(r,i?33:65),e.publicKeyTweakAdd(r,a,p)){case 0:return r;case 1:throw new Error(t);case 2:throw new Error(d)}},publicKeyTweakMul(a,d,i=!0,r){switch(s("public key",a,[33,65]),s("tweak",d,32),o(i),r=l(r,i?33:65),e.publicKeyTweakMul(r,a,d)){case 0:return r;case 1:throw new Error(t);case 2:throw new Error(p)}},signatureNormalize(a){switch(s("signature",a,64),e.signatureNormalize(a)){case 0:return a;case 1:throw new Error(r)}},signatureExport(d,p){s("signature",d,64);const t={output:p=l(p,72),outputlen:72};switch(e.signatureExport(t,d)){case 0:return p.slice(0,t.outputlen);case 1:throw new Error(r);case 2:throw new Error(a)}},signatureImport(d,p){switch(s("signature",d),p=l(p,64),e.signatureImport(p,d)){case 0:return p;case 1:throw new Error(r);case 2:throw new Error(a)}},ecdsaSign(d,p,t={},i){s("message",d,32),s("private key",p,32),n("Object"===m(t),"Expected options to be an Object"),void 0!==t.data&&s("options.data",t.data),void 0!==t.noncefn&&n("Function"===m(t.noncefn),"Expected options.noncefn to be a Function");const r={signature:i=l(i,64),recid:null};switch(e.ecdsaSign(r,d,p,t.data,t.noncefn)){case 0:return r;case 1:throw new Error("The nonce generation function failed, or the private key was invalid");case 2:throw new Error(a)}},ecdsaVerify(a,d,p){switch(s("signature",a,64),s("message",d,32),s("public key",p,[33,65]),e.ecdsaVerify(a,d,p)){case 0:return!0;case 3:return!1;case 1:throw new Error(r);case 2:throw new Error(t)}},ecdsaRecover(d,p,t,i=!0,u){switch(s("signature",d,64),n("Number"===m(p)&&p>=0&&p<=3,"Expected recovery id to be a Number within interval [0, 3]"),s("message",t,32),o(i),u=l(u,i?33:65),e.ecdsaRecover(u,d,p,t)){case 0:return u;case 1:throw new Error(r);case 2:throw new Error("Public key could not be recover");case 3:throw new Error(a)}},ecdh(a,d,p={},i){switch(s("public key",a,[33,65]),s("private key",d,32),n("Object"===m(p),"Expected options to be an Object"),void 0!==p.data&&s("options.data",p.data),void 0!==p.hashfn?(n("Function"===m(p.hashfn),"Expected options.hashfn to be a Function"),void 0!==p.xbuf&&s("options.xbuf",p.xbuf,32),void 0!==p.ybuf&&s("options.ybuf",p.ybuf,32),s("output",i)):i=l(i,32),e.ecdh(i,a,d,p.data,p.hashfn,p.xbuf,p.ybuf)){case 0:return i;case 1:throw new Error(t);case 2:throw new Error("Scalar was invalid (zero or overflow)")}}})},"./node_modules/tr46/index.js":(e,a,d)=>{"use strict";var p=d("punycode"),t=d("./node_modules/tr46/lib/mappingTable.json"),i={TRANSITIONAL:0,NONTRANSITIONAL:1};function r(e){return e.split("\0").map((function(e){return e.normalize("NFC")})).join("\0")}function n(e){for(var a=0,d=t.length-1;a<=d;){var p=Math.floor((a+d)/2),i=t[p];if(i[0][0]<=e&&i[0][1]>=e)return i;i[0][0]>e?d=p-1:a=p+1}return null}var s=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;function o(e){return e.replace(s,"_").length}var l=/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/;function m(e,a){"xn--"===e.substr(0,4)&&(e=p.toUnicode(e));var d=!1;(r(e)!==e||"-"===e[3]&&"-"===e[4]||"-"===e[0]||"-"===e[e.length-1]||-1!==e.indexOf(".")||0===e.search(l))&&(d=!0);for(var t=o(e),s=0;s<t;++s){var m=n(e.codePointAt(s));if(u===i.TRANSITIONAL&&"valid"!==m[1]||u===i.NONTRANSITIONAL&&"valid"!==m[1]&&"deviation"!==m[1]){d=!0;break}}return{label:e,error:d}}function u(e,a,d){var p=function(e,a,d){for(var p=!1,t="",r=o(e),s=0;s<r;++s){var l=e.codePointAt(s),m=n(l);switch(m[1]){case"disallowed":p=!0,t+=String.fromCodePoint(l);break;case"ignored":break;case"mapped":t+=String.fromCodePoint.apply(String,m[2]);break;case"deviation":t+=d===i.TRANSITIONAL?String.fromCodePoint.apply(String,m[2]):String.fromCodePoint(l);break;case"valid":t+=String.fromCodePoint(l);break;case"disallowed_STD3_mapped":a?(p=!0,t+=String.fromCodePoint(l)):t+=String.fromCodePoint.apply(String,m[2]);break;case"disallowed_STD3_valid":a&&(p=!0),t+=String.fromCodePoint(l)}}return{string:t,error:p}}(e,a,d);p.string=r(p.string);for(var t=p.string.split("."),s=0;s<t.length;++s)try{var l=m(t[s]);t[s]=l.label,p.error=p.error||l.error}catch(e){p.error=!0}return{string:t.join("."),error:p.error}}e.exports.toASCII=function(e,a,d,t){var i=u(e,a,d),r=i.string.split(".");if(r=r.map((function(e){try{return p.toASCII(e)}catch(a){return i.error=!0,e}})),t){var n=r.slice(0,r.length-1).join(".").length;(n.length>253||0===n.length)&&(i.error=!0);for(var s=0;s<r.length;++s)if(r.length>63||0===r.length){i.error=!0;break}}return i.error?null:r.join(".")},e.exports.toUnicode=function(e,a){var d=u(e,a,i.NONTRANSITIONAL);return{domain:d.string,error:d.error}},e.exports.PROCESSING_OPTIONS=i},"./index.ts":(e,a,d)=>{"use strict";d.r(a),d.d(a,{chromiaClient:()=>u,encryption:()=>l,formatter:()=>t,gtv:()=>p,gtx:()=>i,gtxClient:()=>r,logger:()=>s,merkle:()=>o,restClient:()=>n,restClientutil:()=>m});var p=d("./src/gtv/index.ts"),t=d("./src/formatter.ts"),i=d("./src/gtx/gtx.ts"),r=d("./src/gtx/gtxclient.ts"),n=d("./src/restclient/restclient.ts"),s=d("./src/logger.ts"),o=d("./src/merkle/merkleHelper.ts"),l=d("./src/encryption/encryption.ts"),m=d("./src/restclient/restclientutil.ts"),u=d("./src/chromia/chromiaClientProvider.ts")},"./src/chromia/chromiaClientProvider.ts":(e,a,d)=>{"use strict";d.r(a),d.d(a,{chromiaClientProvider:()=>i});var p=d("./index.ts"),t=d("./src/chromia/errors.ts");function i(e,a){var d=p.gtxClient.createClient(a,e,[]);return{blockchainConnection:function(e){return a=this,i=void 0,n=function(){var a,i;return function(e,a){var d,p,t,i,r={label:0,sent:function(){if(1&t[0])throw t[1];return t[1]},trys:[],ops:[]};return i={next:n(0),throw:n(1),return:n(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function n(n){return function(s){return function(n){if(d)throw new TypeError("Generator is already executing.");for(;i&&(i=0,n[0]&&(r=0)),r;)try{if(d=1,p&&(t=2&n[0]?p.return:n[0]?p.throw||((t=p.return)&&t.call(p),0):p.next)&&!(t=t.call(p,n[1])).done)return t;switch(p=0,t&&(n=[2&n[0],t.value]),n[0]){case 0:case 1:t=n;break;case 4:return r.label++,{value:n[1],done:!1};case 5:r.label++,p=n[1],n=[0];continue;case 7:n=r.ops.pop(),r.trys.pop();continue;default:if(!((t=(t=r.trys).length>0&&t[t.length-1])||6!==n[0]&&2!==n[0])){r=0;continue}if(3===n[0]&&(!t||n[1]>t[0]&&n[1]<t[3])){r.label=n[1];break}if(6===n[0]&&r.label<t[1]){r.label=t[1],t=n;break}if(t&&r.label<t[2]){r.label=t[2],r.ops.push(n);break}t[2]&&r.ops.pop(),r.trys.pop();continue}n=a.call(e,r)}catch(e){n=[6,e],p=0}finally{d=t=0}if(5&n[0])throw n[1];return{value:n[0]?n[1]:void 0,done:!0}}([n,s])}}}(this,(function(r){switch(r.label){case 0:return a={type:"cm_get_blockchain_api_urls",blockchain_rid:e},[4,d.query(a)];case 1:if(!(i=r.sent()).length)throw new t.BlockchainUrlUndefinedException(e);return[2,p.restClient.createRestClient(i,e)]}}))},new((r=void 0)||(r=Promise))((function(e,d){function p(e){try{s(n.next(e))}catch(e){d(e)}}function t(e){try{s(n.throw(e))}catch(e){d(e)}}function s(a){var d;a.done?e(a.value):(d=a.value,d instanceof r?d:new r((function(e){e(d)}))).then(p,t)}s((n=n.apply(a,i||[])).next())}));var a,i,r,n}}}},"./src/chromia/errors.ts":(e,a,d)=>{"use strict";d.r(a),d.d(a,{BlockchainUrlUndefinedException:()=>i});var p,t=(p=function(e,a){return p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,a){e.__proto__=a}||function(e,a){for(var d in a)Object.prototype.hasOwnProperty.call(a,d)&&(e[d]=a[d])},p(e,a)},function(e,a){if("function"!=typeof a&&null!==a)throw new TypeError("Class extends value "+String(a)+" is not a constructor or null");function d(){this.constructor=e}p(e,a),e.prototype=null===a?Object.create(a):(d.prototype=a.prototype,new d)}),i=function(e){function a(a){return e.call(this,"Cannot find nodes hosting the blockchain with RID ".concat(a))||this}return t(a,e),a}(Error)},"./src/encryption/encryption.ts":(e,a,d)=>{"use strict";d.r(a),d.d(a,{checkDigestSignature:()=>f,checkSignature:()=>u,createPublicKey:()=>n,hash256:()=>l,hashConcat:()=>m,makeKeyPair:()=>v,makeTuid:()=>b,randomBytes:()=>s,sha256:()=>o,sign:()=>c,signDigest:()=>h,verifyKeyPair:()=>w});var p=d("crypto"),t=d("./node_modules/secp256k1/index.js"),i=d("./src/formatter.ts"),r=d("./src/encryption/errors.ts");function n(e){return y(e),Buffer.from(t.publicKeyCreate(e,!0).buffer)}function s(e){return p.randomBytes(e)}function o(e){return p.createHash("sha256").update(e).digest()}var l=o;function m(e){return l(Buffer.concat(e))}function u(e,a,d){return f(l(e),a,d)}function f(e,a,d){return t.ecdsaVerify(d,e,a)}function c(e,a){return y(a),h(o(e),a)}function h(e,a){return Buffer.from(t.ecdsaSign(e,a).signature)}function v(e){var a;if(e)a=n(e=(0,i.ensureBuffer)(e));else{do{e=s(32)}while(!t.privateKeyVerify(e));a=Buffer.from(t.publicKeyCreate(e).buffer)}return{pubKey:a,privKey:e}}function b(){return s(16).toString("hex")}function w(e){return y(e),{pubKey:Buffer.from(t.publicKeyCreate(e).buffer),privKey:e}}function y(e){if(!e)throw new r.MissingPrivKeyArgumentException;if(!Buffer.isBuffer(e)||32!==e.length)throw new r.PrivKeyFormatException(e)}},"./src/encryption/errors.ts":(e,a,d)=>{"use strict";d.r(a),d.d(a,{MissingPrivKeyArgumentException:()=>r,PrivKeyFormatException:()=>i});var p,t=(p=function(e,a){return p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,a){e.__proto__=a}||function(e,a){for(var d in a)Object.prototype.hasOwnProperty.call(a,d)&&(e[d]=a[d])},p(e,a)},function(e,a){if("function"!=typeof a&&null!==a)throw new TypeError("Class extends value "+String(a)+" is not a constructor or null");function d(){this.constructor=e}p(e,a),e.prototype=null===a?Object.create(a):(d.prototype=a.prototype,new d)}),i=function(e){function a(a){return e.call(this,"Invalid key length. Expected 32, but got ".concat(a.length))||this}return t(a,e),a}(Error),r=function(e){function a(){return e.call(this,"Missing argument privKey")||this}return t(a,e),a}(Error)},"./src/formatter.ts":(e,a,d)=>{"use strict";d.r(a),d.d(a,{PgBytesInputException:()=>s,checkGtvType:()=>l,checkGtxType:()=>u,ensureBuffer:()=>o,pgBytes:()=>i,rawGtxToGtx:()=>m,removeDuplicateSigners:()=>f,toBuffer:()=>r,toString:()=>n});var p,t=(p=function(e,a){return p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,a){e.__proto__=a}||function(e,a){for(var d in a)Object.prototype.hasOwnProperty.call(a,d)&&(e[d]=a[d])},p(e,a)},function(e,a){if("function"!=typeof a&&null!==a)throw new TypeError("Class extends value "+String(a)+" is not a constructor or null");function d(){this.constructor=e}p(e,a),e.prototype=null===a?Object.create(a):(d.prototype=a.prototype,new d)});function i(e){if(!Buffer.isBuffer(e))throw new s(e);return"\\x"+e.toString("hex")}function r(e){return Buffer.from(e,"hex")}function n(e){return e.toString("hex")}var s=function(e){function a(a){return e.call(this,"util.pgBytes expects a buffer, but got ".concat(typeof a))||this}return t(a,e),a}(Error);function o(e){return e instanceof Buffer?e:r(e)}function l(e){try{if(null==e)return!0;if(Buffer.isBuffer(e))return!0;if("string"==typeof e)return!0;if("number"==typeof e){if(!Number.isInteger(e))throw Error("User error: Only integers are supported");return!0}if("bigint"==typeof e)return!0;if(e.constructor===Array)return e.map((function(e){return l(e)})),!0;if("object"==typeof e)return Object.keys(e).map((function(a){l(e[a])})),!0}catch(e){throw new Error("Failed to check type: ".concat(e))}return!1}function m(e){var a=e[0],d=e[1],p={blockchainRID:a[0],operations:a[1].map((function(e){return{opName:e[0],args:e[1]}})),signers:a[2]};return{blockchainRID:p.blockchainRID,operations:p.operations,signers:p.signers,signatures:d}}function u(e){try{return m(e),!0}catch(e){return!1}}function f(e){var a=[];e.forEach((function(e){var d=e.toString("hex");a.includes(d)||a.push(d)}));var d=[];return a.forEach((function(e){d.push(Buffer.from(e,"hex"))})),d}},"./src/gtv/definition.ts":(e,a,d)=>{"use strict";d.r(a),d.d(a,{ASNBuffer:()=>r,ASNDictPair:()=>t,rawGTV:()=>i});var p=d("./node_modules/asn1.js/lib/asn1.js"),t=p.define("DictPair",(function(){this.seq().obj(this.key("name").utf8str(),this.key("value").use(i))})),i=p.define("GtvValue",(function(){this.choice({null:this.explicit(0).null_(),byteArray:this.explicit(1).octstr(),string:this.explicit(2).utf8str(),integer:this.explicit(3).int(),dict:this.explicit(4).seqof(t),array:this.explicit(5).seqof(i),bigInteger:this.explicit(6).int()})})),r=p.define("Buffer",(function(){this.octstr()}))},"./src/gtv/index.ts":(e,a,d)=>{"use strict";d.r(a),d.d(a,{decode:()=>o,encode:()=>s,gtvHash:()=>n});var p=d("./src/merkle/merklehashcalculator.js"),t=d("./src/merkle/proof/merkleproof.js"),i=d("./src/gtx/serialization.ts"),r=new p.MerkleHashCalculator(new p.CryptoSystem),n=function(e){return(0,t.merkleHashSummary)(e,r).merkleHash},s=i.encodeValue,o=i.decodeValue},"./src/gtx/errors.ts":(e,a,d)=>{"use strict";d.r(a),d.d(a,{AlreadySignedTransactionException:()=>n,MissingGtxException:()=>r,MissingSignerException:()=>o,NumberOfSignersAndSignaturesException:()=>s,UnexpectedArgumentTypeError:()=>i});var p,t=(p=function(e,a){return p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,a){e.__proto__=a}||function(e,a){for(var d in a)Object.prototype.hasOwnProperty.call(a,d)&&(e[d]=a[d])},p(e,a)},function(e,a){if("function"!=typeof a&&null!==a)throw new TypeError("Class extends value "+String(a)+" is not a constructor or null");function d(){this.constructor=e}p(e,a),e.prototype=null===a?Object.create(a):(d.prototype=a.prototype,new d)}),i=function(e){function a(a){return e.call(this,"Cannot parse typedArg ".concat(a,". Unknown type ").concat(a.type))||this}return t(a,e),a}(Error),r=function(e){function a(){return e.call(this,"Missing instance of gtx protocol (used for communicating with postchain) to add operation to")||this}return t(a,e),a}(Error),n=function(e){function a(a){return e.call(this,"Cannot add ".concat(a," calls to an already signed gtx"))||this}return t(a,e),a}(Error),s=function(e){function a(){return e.call(this,"Not matching number of signers and signatures")||this}return t(a,e),a}(Error),o=function(e){function a(){return e.call(this,"No such signer, remember to call addSignerToGtx() before adding a signature")||this}return t(a,e),a}(Error)},"./src/gtx/gtx.ts":(e,a,d)=>{"use strict";d.r(a),d.d(a,{addSignature:()=>c,addSignerToGtx:()=>o,addTransactionToGtx:()=>s,checkGTXSignatures:()=>b,deserialize:()=>v,emptyGtx:()=>n,getDigestToSign:()=>l,gtvTxBody:()=>m,serialize:()=>h,sign:()=>u,signRawTransaction:()=>f});var p=d("./src/gtv/index.ts"),t=d("./src/encryption/encryption.ts"),i=d("./src/gtx/errors.ts"),r=d("./src/gtx/index.ts");function n(e){return{blockchainRID:e,operations:[],signers:[]}}function s(e,a,d){if(null==d)throw new i.MissingGtxException;if(d.signatures)throw new i.AlreadySignedTransactionException("function");return d.operations.push({opName:e,args:a}),d}function o(e,a){if(a.signatures)throw new i.AlreadySignedTransactionException("signer");a.signers.push(e)}function l(e){return p.gtvHash(m(e))}function m(e){return[e.blockchainRID,e.operations.map((function(e){return[e.opName,e.args]})),e.signers]}function u(e,a,d){var p=l(d);c(a,(0,t.signDigest)(p,e),d)}function f(e,a){throw Error("TODO")}function c(e,a,d){if(d.signatures||(d.signatures=Array(d.signers.length).fill(Buffer.alloc(64))),d.signers.length!==d.signatures.length)throw new i.NumberOfSignersAndSignaturesException;var p=d.signers.findIndex((function(a){return e.equals(a)}));if(-1===p)throw new i.MissingSignerException;d.signatures[p]=a}function h(e){return e.signatures||(e.signatures=[]),(0,r.encode)([m(e),e.signatures])}function v(e){var a=(0,r.decode)(e),d=a[0],p={blockchainRID:d[0],operations:d[1].map((function(e){return{opName:e[0],args:e[1]}})),signers:d[2]},t=a[1];return{blockchainRID:p.blockchainRID,operations:p.operations,signers:p.signers,signatures:t}}function b(e,a){for(var d in a.signers){var p=(0,t.checkDigestSignature)(e,a.signers[d],a.signatures[d]);if(!p)return p}return!0}},"./src/gtx/gtxclient.ts":(e,a,d)=>{"use strict";d.r(a),d.d(a,{createClient:()=>n});var p=d("./src/gtx/gtx.ts"),t=d("./src/logger.ts"),i=d("./src/formatter.ts"),r=d("./node_modules/secp256k1/index.js");function n(e,a,d){function n(a){return{gtx:a,sign:function(e,a){var d=a;d||(t.debug("pubKey not provided, will instead be generated using secp256k1"),d=Buffer.from(r.publicKeyCreate(e))),t.debug("signing transaction with privKey: ".concat(e,", pubKey: ").concat(d)),p.sign(e,d,this.gtx)},getTxRID:function(){return this.getDigestToSign()},getDigestToSign:function(){return p.getDigestToSign(this.gtx)},addSignature:function(e,a){p.addSignature(e,a,this.gtx)},addOperation:function(e){for(var a=[],d=1;d<arguments.length;d++)a[d-1]=arguments[d];p.addTransactionToGtx(e,a,this.gtx)},postAndWaitConfirmation:function(){return e.postAndWaitConfirmation(p.serialize(this.gtx),this.getTxRID())},send:function(a){var d=p.serialize(this.gtx);e.postTransaction(d,a),this.gtx=null,this.gtxBytes=d},encode:function(){return p.serialize(this.gtx)}}}function s(e){d.forEach((function(a){e[a]=function(){for(var e=[],d=0;d<arguments.length;d++)e[d]=arguments[d];p.addTransactionToGtx(a,e,this.gtx)}}))}return d.push("message"),{newTransaction:function(e){e=(0,i.removeDuplicateSigners)(e);var d=p.emptyGtx(Buffer.from(a,"hex"));e.forEach((function(e){return p.addSignerToGtx(e,d)}));var t=n(d);return s(t),t},transactionFromRawTransaction:function(e){var a=p.deserialize(e);t.debug("Output from deserializing a raw transaction: ".concat(a));var d=n(a);return s(d),d},query:function(a,d){return e.query(a,d)}}}},"./src/gtx/index.ts":(e,a,d)=>{"use strict";d.r(a),d.d(a,{decode:()=>i,encode:()=>t});var p=d("./src/gtx/serialization.ts"),t=p.encodeValueGtx,i=p.decodeValueGtx},"./src/gtx/serialization.ts":(e,a,d)=>{"use strict";d.r(a),d.d(a,{createTypedArg:()=>u,decodeValue:()=>o,decodeValueGtx:()=>l,encodeValue:()=>n,encodeValueGtx:()=>s});var p=d("./src/gtv/definition.ts"),t=d("./node_modules/bn.js/lib/bn.js"),i=d("./src/gtx/errors.ts"),r=d("./src/formatter.ts");function n(e){return p.rawGTV.encode(u(e))}function s(e){return n(e)}function o(e){return m(p.rawGTV.decode(e))}function l(e){var a=o(e);if(!(0,r.checkGtxType)(a))throw new Error("Unexpected type of value: ".concat(a,", expected decoded value to be of type RawGtx"));return a}function m(e){if("null"===e.type)return null;if("byteArray"===e.type)return e.value;if("string"===e.type)return e.value;if("integer"===e.type)return e.value.toNumber();if("array"===e.type)return e.value.map((function(e){return m(e)}));if("bigInteger"===e.type)return BigInt(e.value);if("dict"===e.type){var a={};return e.value.forEach((function(e){a[e.name]=m(e.value)})),a}throw new i.UnexpectedArgumentTypeError(e)}function u(e){try{if(null==e)return{type:"null",value:null};if(Buffer.isBuffer(e))return{type:"byteArray",value:e};if("string"==typeof e)return{type:"string",value:e};if("number"==typeof e){if(!Number.isInteger(e))throw Error("User error: Only integers are supported");return{type:"integer",value:new t.BN(e)}}if("bigint"==typeof e)return{type:"bigInteger",value:new t.BN(Number(e))};if(e.constructor===Array)return{type:"array",value:e.map((function(e){return u(e)}))};if("object"==typeof e)return{type:"dict",value:Object.keys(e).map((function(a){return{name:a,value:u(e[a])}}))}}catch(a){throw new Error("Failed to encode ".concat(e.toString(),": ").concat(a))}throw new Error("value ".concat(e," have unsupported type: ").concat(typeof e))}},"./src/logger.ts":(e,a,d)=>{"use strict";var p,t;d.r(a),d.d(a,{debug:()=>n,error:()=>o,info:()=>s,setLogLevel:()=>r,warning:()=>l}),function(e){e.debug="DEBUG",e.info="INFO",e.error="ERROR",e.warning="WARNING"}(p||(p={})),function(e){e.red="",e.green="",e.blue="",e.yellow="",e.stopColor=""}(t||(t={}));var i=1;function r(e){i=e}function n(e){i>=3&&m(p.debug,e,t.blue)}function s(e){i>=2&&m(p.info,e,t.green)}function o(e){-1!=i&&m(p.error,e,t.red)}function l(e){i>=1&&m(p.warning,e,t.yellow)}function m(e,a,d){var p,i,r=(p=function(e,a){return void 0===a&&(a=2),"".concat(new Array(a).fill(0)).concat(e).slice(-a)},i=new Date,"".concat(p(i.getHours()),":").concat(p(i.getMinutes()),":").concat(p(i.getSeconds()),":").concat(p(i.getMilliseconds(),3)));console.log("[".concat(r,"] ").concat(d).concat(e,":").concat(t.stopColor," ").concat(a))}},"./src/merkle/merkleHelper.ts":(e,a,d)=>{"use strict";d.r(a),d.d(a,{calculateRoot:()=>n,merklePath:()=>o,validateMerklePath:()=>l});var p=d("./src/encryption/encryption.ts"),t=Buffer.alloc(1,0),i=Buffer.alloc(1,1),r=Buffer.alloc(32);function n(e,a,d){var s=e.length;if(0===s)return Buffer.alloc(32);if(void 0===a&&(a=0),d||(d=Math.ceil(Math.log2(s))),a===d)return e[0];var o=Math.pow(2,d-a-1),l=a===d-1?i:t;if(s<=o){var m=n(e,a+1,d);return(0,p.hashConcat)([l,m,r])}m=n(e.slice(0,o),a+1,d);var u=n(e.slice(o),a+1,d);return(0,p.hashConcat)([l,m,l,u])}function s(e,a,d,p){var t=e.length;if(d===p)return[];var i=Math.pow(2,p-d-1);if(t<=i)return(o=s(e,a,d+1,p)).push({side:1,hash:r}),o;if(a<i){var o=s(e.slice(0,i),a,d+1,p),l=n(e.slice(i),d+1,p);o.push({side:1,hash:l})}else{var m=n(e.slice(0,i),d+1,p);(o=s(e.slice(i),a-i,d+1,p)).push({side:0,hash:m})}return o}function o(e,a){if(!e||0==e.length)throw new Error("Cannot make merkle path from empty transaction set");for(var d=-1,p=0;p<e.length;p++)if(e[p].equals(a)){d=p;break}if(-1===d)throw new Error("Target is not in list of hashes");return s(e,d,0,Math.ceil(Math.log2(e.length)))}function l(e,a,d){for(var t=a,i=0;i<e.length;i++){var n=e[i],s=0===i?Buffer.from([1]):Buffer.from([0]);t=0===n.side?(0,p.hashConcat)([s,n.hash,s,t]):n.hash.equals(r)?(0,p.hashConcat)([s,t,r]):(0,p.hashConcat)([s,t,s,n.hash])}return d.equals(t)}},"./src/restclient/errors.ts":(e,a,d)=>{"use strict";d.r(a),d.d(a,{EmptyListOfUrlsException:()=>u,GetBridFromChainException:()=>m,InvalidBlochchainRIDException:()=>f,LostMessageError:()=>n,SerializedTransactionFormatException:()=>l,TxRejectedError:()=>i,UnexpectedResponseError:()=>s,UnexpectedStatusError:()=>r,UnvalidTxRidException:()=>o});var p,t=(p=function(e,a){return p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,a){e.__proto__=a}||function(e,a){for(var d in a)Object.prototype.hasOwnProperty.call(a,d)&&(e[d]=a[d])},p(e,a)},function(e,a){if("function"!=typeof a&&null!==a)throw new TypeError("Class extends value "+String(a)+" is not a constructor or null");function d(){this.constructor=e}p(e,a),e.prototype=null===a?Object.create(a):(d.prototype=a.prototype,new d)}),i=function(e){function a(a){var d=e.call(this,"Transaction was rejected")||this;d.name="TxRejectedError",d.fullReason=a;var p=a.match(/^\[(.+)\] Operation '(.+)' failed: (.+)$/);return p&&(d.shortReason=p[3],d.rellLine=p[1],d.operation=p[2]),d}return t(a,e),a}(Error),r=function(e){function a(a){return e.call(this,"Unexpected status code from server: ".concat(a))||this}return t(a,e),a}(Error),n=function(e){function a(){return e.call(this,"Server lost our message")||this}return t(a,e),a}(Error),s=function(e){function a(){return e.call(this,"got unexpected response from server")||this}return t(a,e),a}(Error),o=function(e){function a(a){return e.call(this,"expected length 32 of txRID, but got ".concat(a.length))||this}return t(a,e),a}(Error),l=function(e){function a(){return e.call(this,"messageHash is not a Buffer")||this}return t(a,e),a}(Error),m=function(e){function a(a,d){return e.call(this,"Error resolving BRID for chainId ".concat(a,", reason: ").concat(d))||this}return t(a,e),a}(Error),u=function(e){function a(){return e.call(this,"Failed to initialize rest client with empty list of urls")||this}return t(a,e),a}(Error),f=function(e){function a(){return e.call(this,"Failed to initialize rest client with blockchain RID that is not 32 bytes")||this}return t(a,e),a}(Error)},"./src/restclient/restclient.ts":(e,a,d)=>{"use strict";d.r(a),d.d(a,{createRestClient:()=>m});var p=d("./node_modules/node-fetch/lib/index.mjs"),t=d("./src/restclient/types.ts"),i=d("./src/logger.ts"),r=d("./src/restclient/errors.ts"),n=d("./src/formatter.ts"),s=d("./src/restclient/restclientutil.ts"),o=function(e,a,d,p){return new(d||(d=Promise))((function(t,i){function r(e){try{s(p.next(e))}catch(e){i(e)}}function n(e){try{s(p.throw(e))}catch(e){i(e)}}function s(e){var a;e.done?t(e.value):(a=e.value,a instanceof d?a:new d((function(e){e(a)}))).then(r,n)}s((p=p.apply(e,a||[])).next())}))},l=function(e,a){var d,p,t,i,r={label:0,sent:function(){if(1&t[0])throw t[1];return t[1]},trys:[],ops:[]};return i={next:n(0),throw:n(1),return:n(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function n(n){return function(s){return function(n){if(d)throw new TypeError("Generator is already executing.");for(;i&&(i=0,n[0]&&(r=0)),r;)try{if(d=1,p&&(t=2&n[0]?p.return:n[0]?p.throw||((t=p.return)&&t.call(p),0):p.next)&&!(t=t.call(p,n[1])).done)return t;switch(p=0,t&&(n=[2&n[0],t.value]),n[0]){case 0:case 1:t=n;break;case 4:return r.label++,{value:n[1],done:!1};case 5:r.label++,p=n[1],n=[0];continue;case 7:n=r.ops.pop(),r.trys.pop();continue;default:if(!((t=(t=r.trys).length>0&&t[t.length-1])||6!==n[0]&&2!==n[0])){r=0;continue}if(3===n[0]&&(!t||n[1]>t[0]&&n[1]<t[3])){r.label=n[1];break}if(6===n[0]&&r.label<t[1]){r.label=t[1],t=n;break}if(t&&r.label<t[2]){r.label=t[2],r.ops.push(n);break}t[2]&&r.ops.pop(),r.trys.pop();continue}n=a.call(e,r)}catch(e){n=[6,e],p=0}finally{d=t=0}if(5&n[0])throw n[1];return{value:n[0]?n[1]:void 0,done:!0}}([n,s])}}};function m(e,a,d,p,s){return void 0===d&&(d=10),void 0===p&&(p=500),function(e,a){if(!e.length)throw new r.EmptyListOfUrlsException;(null==a?void 0:a.attemptsPerEndpoint)<1&&(i.debug("Attempts can not be 0 or below, setting it to 1"),a.attemptsPerEndpoint=1)}(e,s),{config:{endpointPool:e,pool:{maxSockets:d},pollingInterval:p,attemptsPerEndpoint:(null==s?void 0:s.attemptsPerEndpoint)||3,attemptInterval:(null==s?void 0:s.attemptInterval)||500},getTransaction:function(e,d){return o(this,void 0,void 0,(function(){var p,i,s,o;return l(this,(function(l){switch(l.label){case 0:return c(e)?[3,1]:(d(new r.UnvalidTxRidException(e),null),[3,3]);case 1:return[4,b(t.Method.GET,"tx/"+a+"/"+e.toString("hex"),this.config)];case 2:p=l.sent(),i=p.error,s=p.statusCode,o=p.rspBody,h(i,s,200===s?(0,n.toBuffer)(o.tx):o,d),l.label=3;case 3:return[2]}}))}))},postTransaction:function(e,d){return o(this,void 0,void 0,(function(){var p,i,n,s,o;return l(this,(function(l){switch(l.label){case 0:if(!Buffer.isBuffer(e))throw new r.SerializedTransactionFormatException;return p={tx:e.toString("hex")},[4,b(t.Method.POST,"tx/"+a,this.config,p)];case 1:return i=l.sent(),n=i.error,s=i.statusCode,o=i.rspBody,v(n,s,o,d),[2]}}))}))},getConfirmationProof:function(e,d){return o(this,void 0,void 0,(function(){var p,i,s,o,m;return l(this,(function(l){switch(l.label){case 0:return c(e)?[3,1]:(d(new r.UnvalidTxRidException(e),null),[3,3]);case 1:return[4,b(t.Method.GET,"tx/"+a+"/"+e.toString("hex")+"/confirmationProof",this.config)];case 2:p=l.sent(),i=p.error,s=p.statusCode,o=p.rspBody,m={hash:void 0,blockHeader:void 0,signatures:[],merklePath:[]},200!==s&&503!==s||(m.hash=(0,n.toBuffer)(o.hash),m.blockHeader=(0,n.toBuffer)(o.blockHeader),o.signatures&&(m.signatures=o.signatures.map((function(e){return{pubKey:(0,n.toBuffer)(e.pubKey),signature:(0,n.toBuffer)(e.signature)}}))),o.merklePath&&(m.merklePath=o.merklePath.map((function(e){return{side:e.side,hash:(0,n.toBuffer)(e.hash)}})))),h(i,s,m,d),l.label=3;case 3:return[2]}}))}))},status:function(e,d){return o(this,void 0,void 0,(function(){var p,i,n,s;return l(this,(function(o){switch(o.label){case 0:return c(e)?[3,1]:(d(new r.UnvalidTxRidException(e),null),[3,3]);case 1:return[4,b(t.Method.GET,"tx/"+a+"/"+e.toString("hex")+"/status",this.config)];case 2:p=o.sent(),i=p.error,n=p.statusCode,s=p.rspBody,h(i,n,s,d),o.label=3;case 3:return[2]}}))}))},query:function(e){return o(this,void 0,void 0,(function(){var d=this;return l(this,(function(p){return[2,new Promise((function(p,i){return o(d,void 0,void 0,(function(){var d,r,n,s,o;return l(this,(function(l){switch(l.label){case 0:return d=function(e,a){e?i(e):p(a)},[4,b(t.Method.POST,"query/".concat(a),this.config,e)];case 1:return r=l.sent(),n=r.error,s=r.statusCode,o=r.rspBody,v(n,s,o,d),[2]}}))}))}))]}))}))},waitConfirmation:function(e){var a=this;return new Promise((function(d,p){a.status(e,(function(n,s){if(n)p(n);else{var o=s.status;switch(o){case t.ResponseStatus.Confirmed:d(null);break;case t.ResponseStatus.Rejected:p(new r.TxRejectedError(s.rejectReason));break;case t.ResponseStatus.Unknown:p(new r.LostMessageError);break;case t.ResponseStatus.Waiting:setTimeout((function(){return a.waitConfirmation(e).then(d,p)}),a.config.pollingInterval);break;default:i.error(o),p(new r.UnexpectedResponseError)}}}))}))},postAndWaitConfirmation:function(e,a,d){var p=this;return!0===d?Promise.reject("Automatic validation is not yet implemented"):new Promise((function(d,t){p.postTransaction(e,(function(e){e?t(e):setTimeout((function(){return p.waitConfirmation(a).then(d,t)}),1011)}))}))},getEndpointPool:function(){return this.config.endpointPool}}}function u(e,a){return o(this,void 0,void 0,(function(){var d,t,r;return l(this,(function(n){switch(n.label){case 0:i.debug("GET URL "+new URL(e,a).href),d=null,n.label=1;case 1:return n.trys.push([1,4,,5]),[4,(0,p.default)(new URL(e,a).href)];case 2:return 404==(d=n.sent()).status?[2,{error:null,statusCode:d.status,rspBody:null}]:[4,d.json()];case 3:return t=n.sent(),[2,{error:null,statusCode:d.status,rspBody:t}];case 4:return r=n.sent(),i.error(r.message),[2,{error:r,statusCode:d.status,rspBody:null}];case 5:return[2]}}))}))}function f(e,a,d){return o(this,void 0,void 0,(function(){var t,r;return l(this,(function(n){switch(n.label){case 0:return i.debug("POST URL "+new URL(e,a).href),i.debug("POST body "+JSON.stringify(d)),[4,(0,p.default)(new URL(e,a).href,{method:"post",body:JSON.stringify(d),headers:{"Content-Type":"application/json"}})];case 1:t=n.sent(),n.label=2;case 2:return n.trys.push([2,4,,5]),[4,t.json()];case 3:return r=n.sent(),[2,{error:null,statusCode:t.status,rspBody:r}];case 4:return[2,{error:n.sent(),statusCode:t.status,rspBody:null}];case 5:return[2]}}))}))}function c(e){if(32!=e.length){var a=new r.UnvalidTxRidException(e);return i.error(a.toString()),!1}return!0}function h(e,a,d,p){try{e?p(e,null):404===a?(i.error("404 received"),p(null,null)):p(200!=a?new r.UnexpectedStatusError(a):null,d)}catch(e){i.error("restclient.handleGetResponse(): Failed to call callback function "+e)}}function v(e,a,d,p){try{e?(i.error("In restclient post(). ".concat(e)),p(e)):200!=a?(i.error("Unexpected status code from server: ".concat(a)),p(new r.UnexpectedStatusError(a),d)):(i.info("Calling responseCallback with responseObject: ".concat(JSON.stringify(d))),p(null,d))}catch(e){i.error("restclient.handlePostResponse(): Failed to call callback function "+e)}}function b(e,a,d,p){return o(this,void 0,void 0,(function(){var t,r,n,o,m,u,f,c;return l(this,(function(l){switch(l.label){case 0:o=[200,400,409,500],m=0,l.label=1;case 1:if(!(m<d.endpointPool.length))return[3,8];u=(0,s.nextEndpoint)(d.endpointPool),f=0,l.label=2;case 2:return f<d.attemptsPerEndpoint?[4,w(e,a,u,p)]:[3,6];case 3:return c=l.sent(),n=c.error,t=c.statusCode,r=c.rspBody,o.includes(t)?[2,{error:n,statusCode:t,rspBody:r}]:503==t?[3,6]:(i.info("".concat(e," request failed on ").concat(u,". Attempt: ").concat(f+1," / ").concat(d.attemptsPerEndpoint)),[4,(0,s.sleep)(d.attemptInterval)]);case 4:l.sent(),l.label=5;case 5:return f++,[3,2];case 6:return[2,{error:n,statusCode:t,rspBody:r}];case 7:return m++,[3,1];case 8:return[2]}}))}))}function w(e,a,d,p){return o(this,void 0,void 0,(function(){return l(this,(function(i){switch(i.label){case 0:return e!=t.Method.GET?[3,2]:[4,u(a,d)];case 1:case 3:return[2,i.sent()];case 2:return[4,f(a,d,p)]}}))}))}},"./src/restclient/restclientutil.ts":(e,a,d)=>{"use strict";d.r(a),d.d(a,{getBrid:()=>i,nextEndpoint:()=>r,sleep:()=>n});var p=d("./node_modules/node-fetch/lib/index.mjs"),t=d("./src/restclient/errors.ts");function i(e,a){if(a>=0){var d="".concat(e,"/brid/iid_").concat(a);return(0,p.default)(d).then((function(e){if(e.ok)return e.text();throw new t.GetBridFromChainException(a,e.statusText)}))}return d="".concat(e,"/_debug"),(0,p.default)(d).then((function(e){if(e.ok)return e.json().then((function(e){return e.blockchain[e.blockchain.length-1].brid}));throw new t.GetBridFromChainException(a,e.statusText)}))}function r(e){return e[Math.floor(Math.random()*e.length)]}var n=function(e){return new Promise((function(a){return setTimeout(a,e)}))}},"./src/restclient/types.ts":(e,a,d)=>{"use strict";var p,t;d.r(a),d.d(a,{Method:()=>t,ResponseStatus:()=>p}),function(e){e.Confirmed="confirmed",e.Rejected="rejected",e.Unknown="unknown",e.Waiting="waiting"}(p||(p={})),function(e){e.GET="get",e.POST="post"}(t||(t={}))},"./node_modules/webidl-conversions/lib/index.js":e=>{"use strict";var a={};function d(e){return e<0?-1:1}function p(e,a){a.unsigned||--e;const p=a.unsigned?0:-Math.pow(2,e),t=Math.pow(2,e)-1,i=a.moduloBitLength?Math.pow(2,a.moduloBitLength):Math.pow(2,e),r=a.moduloBitLength?Math.pow(2,a.moduloBitLength-1):Math.pow(2,e-1);return function(e,n){n||(n={});let s=+e;if(n.enforceRange){if(!Number.isFinite(s))throw new TypeError("Argument is not a finite number");if(s=d(s)*Math.floor(Math.abs(s)),s<p||s>t)throw new TypeError("Argument is not in byte range");return s}if(!isNaN(s)&&n.clamp)return s=function(e){return e%1==.5&&0==(1&e)?Math.floor(e):Math.round(e)}(s),s<p&&(s=p),s>t&&(s=t),s;if(!Number.isFinite(s)||0===s)return 0;if(s=d(s)*Math.floor(Math.abs(s)),s%=i,!a.unsigned&&s>=r)return s-i;if(a.unsigned)if(s<0)s+=i;else if(-0===s)return 0;return s}}e.exports=a,a.void=function(){},a.boolean=function(e){return!!e},a.byte=p(8,{unsigned:!1}),a.octet=p(8,{unsigned:!0}),a.short=p(16,{unsigned:!1}),a["unsigned short"]=p(16,{unsigned:!0}),a.long=p(32,{unsigned:!1}),a["unsigned long"]=p(32,{unsigned:!0}),a["long long"]=p(32,{unsigned:!1,moduloBitLength:64}),a["unsigned long long"]=p(32,{unsigned:!0,moduloBitLength:64}),a.double=function(e){const a=+e;if(!Number.isFinite(a))throw new TypeError("Argument is not a finite floating-point value");return a},a["unrestricted double"]=function(e){const a=+e;if(isNaN(a))throw new TypeError("Argument is NaN");return a},a.float=a.double,a["unrestricted float"]=a["unrestricted double"],a.DOMString=function(e,a){return a||(a={}),a.treatNullAsEmptyString&&null===e?"":String(e)},a.ByteString=function(e,a){const d=String(e);let p;for(let e=0;void 0!==(p=d.codePointAt(e));++e)if(p>255)throw new TypeError("Argument is not a valid bytestring");return d},a.USVString=function(e){const a=String(e),d=a.length,p=[];for(let e=0;e<d;++e){const t=a.charCodeAt(e);if(t<55296||t>57343)p.push(String.fromCodePoint(t));else if(56320<=t&&t<=57343)p.push(String.fromCodePoint(65533));else if(e===d-1)p.push(String.fromCodePoint(65533));else{const d=a.charCodeAt(e+1);if(56320<=d&&d<=57343){const a=1023&t,i=1023&d;p.push(String.fromCodePoint(65536+1024*a+i)),++e}else p.push(String.fromCodePoint(65533))}}return p.join("")},a.Date=function(e,a){if(!(e instanceof Date))throw new TypeError("Argument is not a Date object");if(!isNaN(e))return e},a.RegExp=function(e,a){return e instanceof RegExp||(e=new RegExp(e)),e}},"./node_modules/whatwg-url/lib/URL-impl.js":(e,a,d)=>{"use strict";const p=d("./node_modules/whatwg-url/lib/url-state-machine.js");a.implementation=class{constructor(e){const a=e[0],d=e[1];let t=null;if(void 0!==d&&(t=p.basicURLParse(d),"failure"===t))throw new TypeError("Invalid base URL");const i=p.basicURLParse(a,{baseURL:t});if("failure"===i)throw new TypeError("Invalid URL");this._url=i}get href(){return p.serializeURL(this._url)}set href(e){const a=p.basicURLParse(e);if("failure"===a)throw new TypeError("Invalid URL");this._url=a}get origin(){return p.serializeURLOrigin(this._url)}get protocol(){return this._url.scheme+":"}set protocol(e){p.basicURLParse(e+":",{url:this._url,stateOverride:"scheme start"})}get username(){return this._url.username}set username(e){p.cannotHaveAUsernamePasswordPort(this._url)||p.setTheUsername(this._url,e)}get password(){return this._url.password}set password(e){p.cannotHaveAUsernamePasswordPort(this._url)||p.setThePassword(this._url,e)}get host(){const e=this._url;return null===e.host?"":null===e.port?p.serializeHost(e.host):p.serializeHost(e.host)+":"+p.serializeInteger(e.port)}set host(e){this._url.cannotBeABaseURL||p.basicURLParse(e,{url:this._url,stateOverride:"host"})}get hostname(){return null===this._url.host?"":p.serializeHost(this._url.host)}set hostname(e){this._url.cannotBeABaseURL||p.basicURLParse(e,{url:this._url,stateOverride:"hostname"})}get port(){return null===this._url.port?"":p.serializeInteger(this._url.port)}set port(e){p.cannotHaveAUsernamePasswordPort(this._url)||(""===e?this._url.port=null:p.basicURLParse(e,{url:this._url,stateOverride:"port"}))}get pathname(){return this._url.cannotBeABaseURL?this._url.path[0]:0===this._url.path.length?"":"/"+this._url.path.join("/")}set pathname(e){this._url.cannotBeABaseURL||(this._url.path=[],p.basicURLParse(e,{url:this._url,stateOverride:"path start"}))}get search(){return null===this._url.query||""===this._url.query?"":"?"+this._url.query}set search(e){const a=this._url;if(""===e)return void(a.query=null);const d="?"===e[0]?e.substring(1):e;a.query="",p.basicURLParse(d,{url:a,stateOverride:"query"})}get hash(){return null===this._url.fragment||""===this._url.fragment?"":"#"+this._url.fragment}set hash(e){if(""===e)return void(this._url.fragment=null);const a="#"===e[0]?e.substring(1):e;this._url.fragment="",p.basicURLParse(a,{url:this._url,stateOverride:"fragment"})}toJSON(){return this.href}}},"./node_modules/whatwg-url/lib/URL.js":(e,a,d)=>{"use strict";const p=d("./node_modules/webidl-conversions/lib/index.js"),t=d("./node_modules/whatwg-url/lib/utils.js"),i=d("./node_modules/whatwg-url/lib/URL-impl.js"),r=t.implSymbol;function n(a){if(!this||this[r]||!(this instanceof n))throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");if(arguments.length<1)throw new TypeError("Failed to construct 'URL': 1 argument required, but only "+arguments.length+" present.");const d=[];for(let e=0;e<arguments.length&&e<2;++e)d[e]=arguments[e];d[0]=p.USVString(d[0]),void 0!==d[1]&&(d[1]=p.USVString(d[1])),e.exports.setup(this,d)}n.prototype.toJSON=function(){if(!this||!e.exports.is(this))throw new TypeError("Illegal invocation");const a=[];for(let e=0;e<arguments.length&&e<0;++e)a[e]=arguments[e];return this[r].toJSON.apply(this[r],a)},Object.defineProperty(n.prototype,"href",{get(){return this[r].href},set(e){e=p.USVString(e),this[r].href=e},enumerable:!0,configurable:!0}),n.prototype.toString=function(){if(!this||!e.exports.is(this))throw new TypeError("Illegal invocation");return this.href},Object.defineProperty(n.prototype,"origin",{get(){return this[r].origin},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"protocol",{get(){return this[r].protocol},set(e){e=p.USVString(e),this[r].protocol=e},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"username",{get(){return this[r].username},set(e){e=p.USVString(e),this[r].username=e},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"password",{get(){return this[r].password},set(e){e=p.USVString(e),this[r].password=e},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"host",{get(){return this[r].host},set(e){e=p.USVString(e),this[r].host=e},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"hostname",{get(){return this[r].hostname},set(e){e=p.USVString(e),this[r].hostname=e},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"port",{get(){return this[r].port},set(e){e=p.USVString(e),this[r].port=e},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"pathname",{get(){return this[r].pathname},set(e){e=p.USVString(e),this[r].pathname=e},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"search",{get(){return this[r].search},set(e){e=p.USVString(e),this[r].search=e},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"hash",{get(){return this[r].hash},set(e){e=p.USVString(e),this[r].hash=e},enumerable:!0,configurable:!0}),e.exports={is:e=>!!e&&e[r]instanceof i.implementation,create(e,a){let d=Object.create(n.prototype);return this.setup(d,e,a),d},setup(e,a,d){d||(d={}),d.wrapper=e,e[r]=new i.implementation(a,d),e[r][t.wrapperSymbol]=e},interface:n,expose:{Window:{URL:n},Worker:{URL:n}}}},"./node_modules/whatwg-url/lib/public-api.js":(e,a,d)=>{"use strict";a.URL=d("./node_modules/whatwg-url/lib/URL.js").interface,a.serializeURL=d("./node_modules/whatwg-url/lib/url-state-machine.js").serializeURL,a.serializeURLOrigin=d("./node_modules/whatwg-url/lib/url-state-machine.js").serializeURLOrigin,a.basicURLParse=d("./node_modules/whatwg-url/lib/url-state-machine.js").basicURLParse,a.setTheUsername=d("./node_modules/whatwg-url/lib/url-state-machine.js").setTheUsername,a.setThePassword=d("./node_modules/whatwg-url/lib/url-state-machine.js").setThePassword,a.serializeHost=d("./node_modules/whatwg-url/lib/url-state-machine.js").serializeHost,a.serializeInteger=d("./node_modules/whatwg-url/lib/url-state-machine.js").serializeInteger,a.parseURL=d("./node_modules/whatwg-url/lib/url-state-machine.js").parseURL},"./node_modules/whatwg-url/lib/url-state-machine.js":(e,a,d)=>{"use strict";const p=d("punycode"),t=d("./node_modules/tr46/index.js"),i={ftp:21,file:null,gopher:70,http:80,https:443,ws:80,wss:443},r=Symbol("failure");function n(e){return p.ucs2.decode(e).length}function s(e,a){const d=e[a];return isNaN(d)?void 0:String.fromCodePoint(d)}function o(e){return e>=48&&e<=57}function l(e){return e>=65&&e<=90||e>=97&&e<=122}function m(e){return o(e)||e>=65&&e<=70||e>=97&&e<=102}function u(e){return"."===e||"%2e"===e.toLowerCase()}function f(e){return 2===e.length&&l(e.codePointAt(0))&&(":"===e[1]||"|"===e[1])}function c(e){return void 0!==i[e]}function h(e){return c(e.scheme)}function v(e){let a=e.toString(16).toUpperCase();return 1===a.length&&(a="0"+a),"%"+a}function b(e){return e<=31||e>126}const w=new Set([32,34,35,60,62,63,96,123,125]);function y(e){return b(e)||w.has(e)}const g=new Set([47,58,59,61,64,91,92,93,94,124]);function _(e){return y(e)||g.has(e)}function S(e,a){const d=String.fromCodePoint(e);return a(e)?function(e){const a=new Buffer(e);let d="";for(let e=0;e<a.length;++e)d+=v(a[e]);return d}(d):d}function N(e){let a=10;return e.length>=2&&"0"===e.charAt(0)&&"x"===e.charAt(1).toLowerCase()?(e=e.substring(2),a=16):e.length>=2&&"0"===e.charAt(0)&&(e=e.substring(1),a=8),""===e?0:(10===a?/[^0-9]/:16===a?/[^0-9A-Fa-f]/:/[^0-7]/).test(e)?r:parseInt(e,a)}function M(e,a){if("["===e[0])return"]"!==e[e.length-1]?r:function(e){const a=[0,0,0,0,0,0,0,0];let d=0,t=null,i=0;if(58===(e=p.ucs2.decode(e))[i]){if(58!==e[i+1])return r;i+=2,++d,t=d}for(;i<e.length;){if(8===d)return r;if(58===e[i]){if(null!==t)return r;++i,++d,t=d;continue}let p=0,n=0;for(;n<4&&m(e[i]);)p=16*p+parseInt(s(e,i),16),++i,++n;if(46===e[i]){if(0===n)return r;if(i-=n,d>6)return r;let p=0;for(;void 0!==e[i];){let t=null;if(p>0){if(!(46===e[i]&&p<4))return r;++i}if(!o(e[i]))return r;for(;o(e[i]);){const a=parseInt(s(e,i));if(null===t)t=a;else{if(0===t)return r;t=10*t+a}if(t>255)return r;++i}a[d]=256*a[d]+t,++p,2!==p&&4!==p||++d}if(4!==p)return r;break}if(58===e[i]){if(++i,void 0===e[i])return r}else if(void 0!==e[i])return r;a[d]=p,++d}if(null!==t){let e=d-t;for(d=7;0!==d&&e>0;){const p=a[t+e-1];a[t+e-1]=a[d],a[d]=p,--d,--e}}else if(null===t&&8!==d)return r;return a}(e.substring(1,e.length-1));if(!a)return function(e){if(-1!==e.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/))return r;let a="";const d=p.ucs2.decode(e);for(let e=0;e<d.length;++e)a+=S(d[e],b);return a}(e);const d=function(e){const a=new Buffer(e),d=[];for(let e=0;e<a.length;++e)37!==a[e]?d.push(a[e]):37===a[e]&&m(a[e+1])&&m(a[e+2])?(d.push(parseInt(a.slice(e+1,e+3).toString(),16)),e+=2):d.push(a[e]);return new Buffer(d).toString()}(e),i=t.toASCII(d,!1,t.PROCESSING_OPTIONS.NONTRANSITIONAL,!1);if(null===i)return r;if(-1!==i.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/))return r;const n=function(e){const a=e.split(".");if(""===a[a.length-1]&&a.length>1&&a.pop(),a.length>4)return e;const d=[];for(const p of a){if(""===p)return e;const a=N(p);if(a===r)return e;d.push(a)}for(let e=0;e<d.length-1;++e)if(d[e]>255)return r;if(d[d.length-1]>=Math.pow(256,5-d.length))return r;let p=d.pop(),t=0;for(const e of d)p+=e*Math.pow(256,3-t),++t;return p}(i);return"number"==typeof n||n===r?n:i}function x(e){return"number"==typeof e?function(e){let a="",d=e;for(let e=1;e<=4;++e)a=String(d%256)+a,4!==e&&(a="."+a),d=Math.floor(d/256);return a}(e):e instanceof Array?"["+function(e){let a="";const d=function(e){let a=null,d=1,p=null,t=0;for(let i=0;i<e.length;++i)0!==e[i]?(t>d&&(a=p,d=t),p=null,t=0):(null===p&&(p=i),++t);return t>d&&(a=p,d=t),{idx:a,len:d}}(e).idx;let p=!1;for(let t=0;t<=7;++t)p&&0===e[t]||(p&&(p=!1),d!==t?(a+=e[t].toString(16),7!==t&&(a+=":")):(a+=0===t?"::":":",p=!0));return a}(e)+"]":e}function D(e){const a=e.path;var d;0!==a.length&&("file"===e.scheme&&1===a.length&&(d=a[0],/^[A-Za-z]:$/.test(d))||a.pop())}function j(e){return""!==e.username||""!==e.password}function A(e,a,d,t,i){if(this.pointer=0,this.input=e,this.base=a||null,this.encodingOverride=d||"utf-8",this.stateOverride=i,this.url=t,this.failure=!1,this.parseError=!1,!this.url){this.url={scheme:"",username:"",password:"",host:null,port:null,path:[],query:null,fragment:null,cannotBeABaseURL:!1};const e=function(e){return e.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g,"")}(this.input);e!==this.input&&(this.parseError=!0),this.input=e}const n=function(e){return e.replace(/\u0009|\u000A|\u000D/g,"")}(this.input);for(n!==this.input&&(this.parseError=!0),this.input=n,this.state=i||"scheme start",this.buffer="",this.atFlag=!1,this.arrFlag=!1,this.passwordTokenSeenFlag=!1,this.input=p.ucs2.decode(this.input);this.pointer<=this.input.length;++this.pointer){const e=this.input[this.pointer],a=isNaN(e)?void 0:String.fromCodePoint(e),d=this["parse "+this.state](e,a);if(!d)break;if(d===r){this.failure=!0;break}}}A.prototype["parse scheme start"]=function(e,a){if(l(e))this.buffer+=a.toLowerCase(),this.state="scheme";else{if(this.stateOverride)return this.parseError=!0,r;this.state="no scheme",--this.pointer}return!0},A.prototype["parse scheme"]=function(e,a){if(function(e){return l(e)||o(e)}(e)||43===e||45===e||46===e)this.buffer+=a.toLowerCase();else if(58===e){if(this.stateOverride){if(h(this.url)&&!c(this.buffer))return!1;if(!h(this.url)&&c(this.buffer))return!1;if((j(this.url)||null!==this.url.port)&&"file"===this.buffer)return!1;if("file"===this.url.scheme&&(""===this.url.host||null===this.url.host))return!1}if(this.url.scheme=this.buffer,this.buffer="",this.stateOverride)return!1;"file"===this.url.scheme?(47===this.input[this.pointer+1]&&47===this.input[this.pointer+2]||(this.parseError=!0),this.state="file"):h(this.url)&&null!==this.base&&this.base.scheme===this.url.scheme?this.state="special relative or authority":h(this.url)?this.state="special authority slashes":47===this.input[this.pointer+1]?(this.state="path or authority",++this.pointer):(this.url.cannotBeABaseURL=!0,this.url.path.push(""),this.state="cannot-be-a-base-URL path")}else{if(this.stateOverride)return this.parseError=!0,r;this.buffer="",this.state="no scheme",this.pointer=-1}return!0},A.prototype["parse no scheme"]=function(e){return null===this.base||this.base.cannotBeABaseURL&&35!==e?r:(this.base.cannotBeABaseURL&&35===e?(this.url.scheme=this.base.scheme,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.url.cannotBeABaseURL=!0,this.state="fragment"):"file"===this.base.scheme?(this.state="file",--this.pointer):(this.state="relative",--this.pointer),!0)},A.prototype["parse special relative or authority"]=function(e){return 47===e&&47===this.input[this.pointer+1]?(this.state="special authority ignore slashes",++this.pointer):(this.parseError=!0,this.state="relative",--this.pointer),!0},A.prototype["parse path or authority"]=function(e){return 47===e?this.state="authority":(this.state="path",--this.pointer),!0},A.prototype["parse relative"]=function(e){return this.url.scheme=this.base.scheme,isNaN(e)?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query):47===e?this.state="relative slash":63===e?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query="",this.state="query"):35===e?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.state="fragment"):h(this.url)&&92===e?(this.parseError=!0,this.state="relative slash"):(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(0,this.base.path.length-1),this.state="path",--this.pointer),!0},A.prototype["parse relative slash"]=function(e){return!h(this.url)||47!==e&&92!==e?47===e?this.state="authority":(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.state="path",--this.pointer):(92===e&&(this.parseError=!0),this.state="special authority ignore slashes"),!0},A.prototype["parse special authority slashes"]=function(e){return 47===e&&47===this.input[this.pointer+1]?(this.state="special authority ignore slashes",++this.pointer):(this.parseError=!0,this.state="special authority ignore slashes",--this.pointer),!0},A.prototype["parse special authority ignore slashes"]=function(e){return 47!==e&&92!==e?(this.state="authority",--this.pointer):this.parseError=!0,!0},A.prototype["parse authority"]=function(e,a){if(64===e){this.parseError=!0,this.atFlag&&(this.buffer="%40"+this.buffer),this.atFlag=!0;const e=n(this.buffer);for(let a=0;a<e;++a){const e=this.buffer.codePointAt(a);if(58===e&&!this.passwordTokenSeenFlag){this.passwordTokenSeenFlag=!0;continue}const d=S(e,_);this.passwordTokenSeenFlag?this.url.password+=d:this.url.username+=d}this.buffer=""}else if(isNaN(e)||47===e||63===e||35===e||h(this.url)&&92===e){if(this.atFlag&&""===this.buffer)return this.parseError=!0,r;this.pointer-=n(this.buffer)+1,this.buffer="",this.state="host"}else this.buffer+=a;return!0},A.prototype["parse hostname"]=A.prototype["parse host"]=function(e,a){if(this.stateOverride&&"file"===this.url.scheme)--this.pointer,this.state="file host";else if(58!==e||this.arrFlag)if(isNaN(e)||47===e||63===e||35===e||h(this.url)&&92===e){if(--this.pointer,h(this.url)&&""===this.buffer)return this.parseError=!0,r;if(this.stateOverride&&""===this.buffer&&(j(this.url)||null!==this.url.port))return this.parseError=!0,!1;const e=M(this.buffer,h(this.url));if(e===r)return r;if(this.url.host=e,this.buffer="",this.state="path start",this.stateOverride)return!1}else 91===e?this.arrFlag=!0:93===e&&(this.arrFlag=!1),this.buffer+=a;else{if(""===this.buffer)return this.parseError=!0,r;const e=M(this.buffer,h(this.url));if(e===r)return r;if(this.url.host=e,this.buffer="",this.state="port","hostname"===this.stateOverride)return!1}return!0},A.prototype["parse port"]=function(e,a){if(o(e))this.buffer+=a;else{if(!(isNaN(e)||47===e||63===e||35===e||h(this.url)&&92===e||this.stateOverride))return this.parseError=!0,r;if(""!==this.buffer){const e=parseInt(this.buffer);if(e>Math.pow(2,16)-1)return this.parseError=!0,r;this.url.port=e===(d=this.url.scheme,i[d])?null:e,this.buffer=""}if(this.stateOverride)return!1;this.state="path start",--this.pointer}var d;return!0};const T=new Set([47,92,63,35]);A.prototype["parse file"]=function(e){var a,d;return this.url.scheme="file",47===e||92===e?(92===e&&(this.parseError=!0),this.state="file slash"):null!==this.base&&"file"===this.base.scheme?isNaN(e)?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query):63===e?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query="",this.state="query"):35===e?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.state="fragment"):(this.input.length-this.pointer-1==0||(a=e,d=this.input[this.pointer+1],!l(a)||58!==d&&124!==d)||this.input.length-this.pointer-1>=2&&!T.has(this.input[this.pointer+2])?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),D(this.url)):this.parseError=!0,this.state="path",--this.pointer):(this.state="path",--this.pointer),!0},A.prototype["parse file slash"]=function(e){var a;return 47===e||92===e?(92===e&&(this.parseError=!0),this.state="file host"):(null!==this.base&&"file"===this.base.scheme&&(2===(a=this.base.path[0]).length&&l(a.codePointAt(0))&&":"===a[1]?this.url.path.push(this.base.path[0]):this.url.host=this.base.host),this.state="path",--this.pointer),!0},A.prototype["parse file host"]=function(e,a){if(isNaN(e)||47===e||92===e||63===e||35===e)if(--this.pointer,!this.stateOverride&&f(this.buffer))this.parseError=!0,this.state="path";else if(""===this.buffer){if(this.url.host="",this.stateOverride)return!1;this.state="path start"}else{let e=M(this.buffer,h(this.url));if(e===r)return r;if("localhost"===e&&(e=""),this.url.host=e,this.stateOverride)return!1;this.buffer="",this.state="path start"}else this.buffer+=a;return!0},A.prototype["parse path start"]=function(e){return h(this.url)?(92===e&&(this.parseError=!0),this.state="path",47!==e&&92!==e&&--this.pointer):this.stateOverride||63!==e?this.stateOverride||35!==e?void 0!==e&&(this.state="path",47!==e&&--this.pointer):(this.url.fragment="",this.state="fragment"):(this.url.query="",this.state="query"),!0},A.prototype["parse path"]=function(e){if(isNaN(e)||47===e||h(this.url)&&92===e||!this.stateOverride&&(63===e||35===e)){if(h(this.url)&&92===e&&(this.parseError=!0),".."===(a=(a=this.buffer).toLowerCase())||"%2e."===a||".%2e"===a||"%2e%2e"===a?(D(this.url),47===e||h(this.url)&&92===e||this.url.path.push("")):!u(this.buffer)||47===e||h(this.url)&&92===e?u(this.buffer)||("file"===this.url.scheme&&0===this.url.path.length&&f(this.buffer)&&(""!==this.url.host&&null!==this.url.host&&(this.parseError=!0,this.url.host=""),this.buffer=this.buffer[0]+":"),this.url.path.push(this.buffer)):this.url.path.push(""),this.buffer="","file"===this.url.scheme&&(void 0===e||63===e||35===e))for(;this.url.path.length>1&&""===this.url.path[0];)this.parseError=!0,this.url.path.shift();63===e&&(this.url.query="",this.state="query"),35===e&&(this.url.fragment="",this.state="fragment")}else 37!==e||m(this.input[this.pointer+1])&&m(this.input[this.pointer+2])||(this.parseError=!0),this.buffer+=S(e,y);var a;return!0},A.prototype["parse cannot-be-a-base-URL path"]=function(e){return 63===e?(this.url.query="",this.state="query"):35===e?(this.url.fragment="",this.state="fragment"):(isNaN(e)||37===e||(this.parseError=!0),37!==e||m(this.input[this.pointer+1])&&m(this.input[this.pointer+2])||(this.parseError=!0),isNaN(e)||(this.url.path[0]=this.url.path[0]+S(e,b))),!0},A.prototype["parse query"]=function(e,a){if(isNaN(e)||!this.stateOverride&&35===e){h(this.url)&&"ws"!==this.url.scheme&&"wss"!==this.url.scheme||(this.encodingOverride="utf-8");const a=new Buffer(this.buffer);for(let e=0;e<a.length;++e)a[e]<33||a[e]>126||34===a[e]||35===a[e]||60===a[e]||62===a[e]?this.url.query+=v(a[e]):this.url.query+=String.fromCodePoint(a[e]);this.buffer="",35===e&&(this.url.fragment="",this.state="fragment")}else 37!==e||m(this.input[this.pointer+1])&&m(this.input[this.pointer+2])||(this.parseError=!0),this.buffer+=a;return!0},A.prototype["parse fragment"]=function(e){return isNaN(e)||(0===e?this.parseError=!0:(37!==e||m(this.input[this.pointer+1])&&m(this.input[this.pointer+2])||(this.parseError=!0),this.url.fragment+=S(e,b))),!0},e.exports.serializeURL=function(e,a){let d=e.scheme+":";if(null!==e.host?(d+="//",""===e.username&&""===e.password||(d+=e.username,""!==e.password&&(d+=":"+e.password),d+="@"),d+=x(e.host),null!==e.port&&(d+=":"+e.port)):null===e.host&&"file"===e.scheme&&(d+="//"),e.cannotBeABaseURL)d+=e.path[0];else for(const a of e.path)d+="/"+a;return null!==e.query&&(d+="?"+e.query),a||null===e.fragment||(d+="#"+e.fragment),d},e.exports.serializeURLOrigin=function(a){switch(a.scheme){case"blob":try{return e.exports.serializeURLOrigin(e.exports.parseURL(a.path[0]))}catch(e){return"null"}case"ftp":case"gopher":case"http":case"https":case"ws":case"wss":return function(e){let a=e.scheme+"://";return a+=x(e.host),null!==e.port&&(a+=":"+e.port),a}({scheme:a.scheme,host:a.host,port:a.port});case"file":return"file://";default:return"null"}},e.exports.basicURLParse=function(e,a){void 0===a&&(a={});const d=new A(e,a.baseURL,a.encodingOverride,a.url,a.stateOverride);return d.failure?"failure":d.url},e.exports.setTheUsername=function(e,a){e.username="";const d=p.ucs2.decode(a);for(let a=0;a<d.length;++a)e.username+=S(d[a],_)},e.exports.setThePassword=function(e,a){e.password="";const d=p.ucs2.decode(a);for(let a=0;a<d.length;++a)e.password+=S(d[a],_)},e.exports.serializeHost=x,e.exports.cannotHaveAUsernamePasswordPort=function(e){return null===e.host||""===e.host||e.cannotBeABaseURL||"file"===e.scheme},e.exports.serializeInteger=function(e){return String(e)},e.exports.parseURL=function(a,d){return void 0===d&&(d={}),e.exports.basicURLParse(a,{baseURL:d.baseURL,encodingOverride:d.encodingOverride})}},"./node_modules/whatwg-url/lib/utils.js":e=>{"use strict";e.exports.mixin=function(e,a){const d=Object.getOwnPropertyNames(a);for(let p=0;p<d.length;++p)Object.defineProperty(e,d[p],Object.getOwnPropertyDescriptor(a,d[p]))},e.exports.wrapperSymbol=Symbol("wrapper"),e.exports.implSymbol=Symbol("impl"),e.exports.wrapperForImpl=function(a){return a[e.exports.wrapperSymbol]},e.exports.implForWrapper=function(a){return a[e.exports.implSymbol]}},"./src/merkle/binarytree.js":(e,a,d)=>{"use strict";var p=d("./src/merkle/path.js").PathLeafElement;function t(){this.pathElem=null}function i(e,a){this.left=e,this.right=a}function r(e,a,d,p){i.call(this,e,a),this.content=d,t.prototype.setPathElement.call(this,p)}function n(e,a=null){if(this.content=e,null!=a){if(!(a instanceof p))throw new Error("The path and object structure does not match! We are at a leaf, but the path expects a sub structure.");t.prototype.setPathElement.call(this,a)}}function s(){}function o(e){this.root=e}function l(e,a,d,p,t=null){r.call(this,e,a,d,t),this.size=p}function m(e,a,d,p,t=null){r.call(this,e,a,d,t),this.size=p}t.prototype.isPath=function(){return null!=this.pathElem},t.prototype.isPathLeaf=function(){return null!=this.pathElem&&this.pathElem instanceof p},t.prototype.setPathElement=function(e){this.pathElem=e},t.prototype.getPrefixByte=function(){return 0},i.prototype=Object.create(t.prototype),i.prototype.constructor=i,i.prototype.getPrefixByte=function(){return 0},r.prototype=Object.create(i.prototype),r.prototype.constructor=r,n.prototype=Object.create(t.prototype),n.prototype.constructor=n,n.prototype.getPrefixByte=function(){return 1},s.prototype=Object.create(t.prototype),s.prototype.constructor=s,o.prototype.maxLevel=function(){return this.maxLevelInternal(this.root)},o.prototype.maxLevelInternal=function(e){if(e instanceof s)return 0;if(e instanceof n)return 1;if(e instanceof i)return Math.max(this.maxLevelInternal(e.left),this.maxLevelInternal(e.right))+1;throw new Error("What is this type? "+typeof e)},l.prototype=Object.create(r.prototype),l.prototype.constructor=l,l.prototype.getPrefixByte=function(){return 7},m.prototype=Object.create(r.prototype),m.prototype.constructor=m,m.prototype.getPrefixByte=function(){return 8},e.exports={HASH_PREFIX_NODE:0,HASH_PREFIX_LEAF:1,HASH_PREFIX_NODE_ARRAY:7,HASH_PREFIX_NODE_DICT:8,Node:i,Leaf:n,EmptyLeaf:s,SubTreeRootNode:r,BinaryTreeElement:t,BinaryTree:o,ArrayHeadNode:l,DictHeadNode:m}},"./src/merkle/binarytreefactory.js":(e,a,d)=>{"use strict";var p=d("./src/formatter.ts"),t=d("./src/merkle/path.js").PathSet,i=d("./src/merkle/path.js").PathLeafElement,r=d("./src/merkle/binarytree.js").EmptyLeaf,n=d("./src/merkle/binarytree.js").Leaf,s=d("./src/merkle/binarytree.js").Node,o=d("./src/merkle/binarytree.js").BinaryTree,l=d("./src/merkle/binarytree.js").ArrayHeadNode,m=d("./src/merkle/binarytree.js").DictHeadNode;const u=new t([]);function f(){}f.prototype.handleLeaf=function(e,a,d=!1){return 0!=a.length||d?this.innerHandleLeaf(e,a):this.innerHandleLeaf(e,this.getEmptyPathSet())},f.prototype.getEmptyPathSet=function(){return u},f.prototype.innerHandleLeaf=function(e,a){if(null==e)return this.handlePrimitiveLeaf(e,a);if(Buffer.isBuffer(e))return this.handlePrimitiveLeaf(e,a);if("string"==typeof e)return this.handlePrimitiveLeaf(e,a);if("number"==typeof e)return this.handlePrimitiveLeaf(e,a);if(e.constructor===Array)return this.buildFromArray(e,a);if("object"==typeof e)return this.buildFromDictionary(e,a);throw new Error("Unsupporting data type")},f.prototype.handlePrimitiveLeaf=function(e,a){var d=a.getPathLeafOrElseAnyCurrentPathElement();if(null!=d&&!(d instanceof i))throw new Error("Path does not match the tree structure. We are at a leaf "+e+" but found path element "+d);return new n(e,d)},f.prototype.buildHigherLayer=function(e,a){if(0===a.length)throw new Error("Cannot work on empty arrays. Layer: "+e);if(1===a.length)return a;for(var d=new Array,t=Math.floor(a.length/2),i=null,r=!0,n=0;n<a.length;n++)if(r)i=a[n],r=!1;else{var o=new s(i,a[n]);d.push(o),t--,r=!0,i=null}return r||d.push(i),0!=t&&p.logDebug("Why didn't we build exactly the correct amount? Layer: "+e+" , residue: "+t+" , input args size: "+a.length+"."),this.buildHigherLayer(e+1,d)},f.prototype.build=function(e){return this.buildWithPath(e,u)},f.prototype.buildWithPath=function(e,a){var d=this.handleLeaf(e,a,!0);return new o(d)},f.prototype.buildFromArray=function(e,a){var d=a.getPathLeafOrElseAnyCurrentPathElement();if(0==e.length)return new l(new r,new r,e,0,0,d);var p=this.buildLeafElements(e,a),t=this.buildHigherLayer(1,p)[0];if(t instanceof s)return new l(t.left,t.right,e,e.length,d);if(t instanceof n)return this.buildFromOneLeaf(e,t,d);throw new Error("Should not find element of this type here")},f.prototype.buildFromOneLeaf=function(e,a,d){if(e.length>1)throw new Error("How come we got a leaf returned when we had "+e.length+" elements is the args?");return new l(a,new r,e,e.length,d)},f.prototype.buildLeafElements=function(e,a){for(var d=new Array,p=a.keepOnlyArrayPaths(),t=0;t<e.length;t++){var i=p.getTailIfFirstElementIsArrayOfThisIndexFromList(t),r=e[t],n=this.handleLeaf(r,i);d.push(n)}return d},f.prototype.buildFromDictionary=function(e,a){var d=a.getPathLeafOrElseAnyCurrentPathElement(),p=Object.keys(e).sort();if(0==p.length)return new m(new r,new r,e,p.length,0,d);var t=this.buildLeafElementFromDict(p,e,a),i=this.buildHigherLayer(1,t)[0];if(i instanceof s)return new m(i.left,i.right,e,p.length,d);throw new Error("Should not find element of this type here: "+typeof i)},f.prototype.buildLeafElementFromDict=function(e,a,d){for(var p=new Array,t=d.keepOnlyDictPaths(),i=0;i<e.length;i++){var r=e[i],n=this.handleLeaf(r,u);p.push(n);var s=a[r],o=t.getTailIfFirstElementIsDictOfThisKeyFromList(r),l=this.handleLeaf(s,o);p.push(l)}return p},e.exports={BinaryTreeFactory:f}},"./src/merkle/merklehashcalculator.js":(e,a,d)=>{var p=d("./src/gtx/serialization.ts"),t=d("./src/merkle/binarytree.js").HASH_PREFIX_LEAF,i=d("./src/encryption/encryption.ts");function r(){}function n(e,a){if(null===a)throw new Error("In this case we need the CryptoSystem to calculate the hash");return a.digest(e)}function s(e){this.cryptoSystem=e}r.prototype.digest=function(e){return i.hash256(e)},s.prototype.calculateNodeHash=function(e,a,d){return this.calculateNodeHashInternal(e,a,d,n)},s.prototype.calculateLeafHash=function(e){return this.calculateHashOfValueInternal(e,p.encodeValue,n)},s.prototype.calculateNodeHashInternal=function(e,a,d,p){var t=Buffer.alloc(1);return t.writeInt8(e),p(Buffer.concat([t,a,d]),this.cryptoSystem)},s.prototype.calculateHashOfValueInternal=function(e,a,d){var p=Buffer.alloc(1);return p.writeInt8(t),d(Buffer.concat([p,a(e)]),this.cryptoSystem)},s.prototype.isContainerProofValueLeaf=function(e){return null!=e&&(e.constructor===Array||"object"==typeof e)},e.exports={MerkleHashCalculator:s,CryptoSystem:r}},"./src/merkle/path.js":(e,a,d)=>{"use strict";var p=d("./src/formatter.ts");function t(e){this.previous=e}function i(e){t.call(this,e)}function r(e){t.call(this,e)}function n(e,a){r.call(this,e),this.index=a}function s(e,a){r.call(this,e),this.key=a}function o(e){this.pathElements=e}t.prototype.getSearchKey=function(){},i.prototype=Object.create(t.prototype),i.prototype.constructor=i,i.prototype.equals=function(e){return this===e||typeof this==typeof e},r.prototype=Object.create(t.prototype),r.prototype.constructor=r,r.prototype.getSearchKey=function(){},n.prototype=Object.create(r.prototype),n.prototype.constructor=n,n.prototype.getSearchKey=function(){return this.index},n.prototype.equals=function(e){return this===e||typeof this==typeof e&&this.index==e.index},s.prototype=Object.create(r.prototype),s.prototype.constructor=s,s.prototype.getSearchKey=function(){return this.key},s.prototype.equals=function(e){return this===e||typeof this==typeof e&&this.key==e.key},o.prototype.getCurrentPathElement=function(){return this.pathElements[0]},o.prototype.size=function(){return this.pathElements.length},o.prototype.tail=function(){if(0==this.pathElements.length)throw new Error("Impossible to tail this array");return new o(this.pathElements.slice(1))},o.prototype.debugString=function(){var e="";return this.pathElements.forEach((a=>{a instanceof r?e=e+"-> "+a.getSearchKey():a instanceof i&&(e+="-> Leaf")})),e},o.prototype.equals=function(e){return this===e||typeof this==typeof e&&this.pathElements==e.pathElements};var l=function(e,a){return u(e,a)},m=function(e,a){return u(e,a)},u=function(e,a){if(null===e)throw new Error("Have to provide a search key");try{var d=a.pathElements[0];if(d instanceof r&&d.getSearchKey()==e)return a.tail()}catch(e){return p.logError("Why are we dropping first element of an empty path? "+e),null}return null};function f(e){this.paths=e}f.prototype.isEmpty=function(){return 0==this.paths.length},f.prototype.getPathLeafOrElseAnyCurrentPathElement=function(){var e=null,a=null,d={path:null,elem:null};return this.paths.forEach((p=>{(a=p.getCurrentPathElement())instanceof i&&(e=a),d=this.errorCheckUnequalParent(p,a,d.path,d.elem)})),null!=e?e:a},f.prototype.errorCheckUnequalParent=function(e,a,d,p){if(null!=p){if(null==a.previous&&null==p.previous)return{path:e,elem:a};if(null==a.previous&&null!=p.previous||null!=a.previous&&null==p.previous)throw new Error("Something is wrong, these paths do not have the same parent. ("+e+") ("+d+")");if(!a.previous.equals(p.previous))throw new Error("Something is wrong, these paths do not have the same parent. ("+e+") ("+d+")")}return{path:e,elem:a}},f.prototype.keepOnlyArrayPaths=function(){return new f(this.paths.filter((e=>e.pathElements[0]instanceof n)))},f.prototype.keepOnlyDictPaths=function(){return new f(this.paths.filter((e=>e.pathElements[0]instanceof s)))},f.prototype.getTailIfFirstElementIsArrayOfThisIndexFromList=function(e){return this.getTailFromList(e,l)},f.prototype.getTailIfFirstElementIsDictOfThisKeyFromList=function(e){return this.getTailFromList(e,m)},f.prototype.getTailFromList=function(e,a){var d=new Array;return this.paths.forEach((p=>{var t=a(e,p);null!=t&&d.push(t)})),new f(d)},e.exports={Path:o,PathElement:t,PathLeafElement:i,ArrayPathElement:n,SearchablePathElement:r,DictPathElement:s,PathSet:f,getTailIfFirstElementIsArrayOfThisIndex:l,buildPathFromArray:function(e){var a=new Array,d=null;e.forEach((e=>{var p=null;if("number"==typeof e)p=new n(d,e);else{if("string"!=typeof e)throw new Error("A path structure must only consist of Ints and Strings, not "+e);p=new s(d,e)}a.push(p),d=p}));var p=d;return a.push(new i(p)),new o(a)}}},"./src/merkle/proof/merklehashcarrier.js":e=>{"use strict";function a(e){this.merkleHash=e}a.prototype.equals=function(e){return this===e||typeof this==typeof e&&0===this.merkleHash.compare(e.merkleHash)},e.exports={MerkleHashSummary:a}},"./src/merkle/proof/merklehashsummaryfactory.js":(e,a,d)=>{d("./src/merkle/binarytreefactory.js").BinaryTreeFactory,d("./src/merkle/proof/merkleprooftreefactory.js").MerkleProofTreeFactory,d("./src/merkle/merklehashcalculator.js").MerkleHashCalculator,d("./src/merkle/proof/merkleprooftree.js").MerkleProofTree,d("./src/merkle/proof/merkleprooftree.js").MerkleProofElement;var p=d("./src/merkle/proof/merkleprooftree.js").ProofHashedLeaf,t=d("./src/merkle/proof/merkleprooftree.js").ProofValueLeaf,i=d("./src/merkle/proof/merkleprooftree.js").ProofNode,r=d("./src/merkle/proof/merklehashcarrier.js").MerkleHashSummary;function n(e,a){this.treeFactory=e,this.proofFactory=a}n.prototype.calculateMerkleRoot=function(e,a){var d=this.treeFactory.build(e),p=this.proofFactory.buildFromBinaryTree(d,a);return this.calculateMerkleRootOfTree(p,a)},n.prototype.calculateMerkleTreeRoot=function(e,a){return this.calculateMerkleRootOfTree(e,a)},n.prototype.calculateMerkleRootOfTree=function(e,a){var d=this.calculateMerkleRootInternal(e.root,a);return new r(d)},n.prototype.calculateMerkleRootInternal=function(e,a){if(e instanceof p)return e.merkleHash;if(e instanceof t){var d=e.content;if(a.isContainerProofValueLeaf(d)){var r=this.buildProofTree(d,a);return this.calculateMerkleRootInternal(r.root,a)}return a.calculateLeafHash(d)}if(e instanceof i){var n=this.calculateMerkleRootInternal(e.left,a),s=this.calculateMerkleRootInternal(e.right,a);return a.calculateNodeHash(e.prefix,n,s)}throw new Error("Should have handled this type? "+typeof e)},n.prototype.buildProofTree=function(e,a){var d=this.treeFactory.build(e);return this.proofFactory.buildFromBinaryTree(d,a)},e.exports={MerkleHashSummaryFactory:n}},"./src/merkle/proof/merkleproof.js":(e,a,d)=>{"use strict";d("./src/merkle/merklehashcalculator.js").MerkleHashCalculator;var p=d("./src/merkle/proof/merklehashsummaryfactory.js").MerkleHashSummaryFactory,t=d("./src/merkle/binarytreefactory.js").BinaryTreeFactory,i=d("./src/merkle/proof/merkleprooftreefactory.js").MerkleProofTreeFactory,r=new t,n=new i;function s(e,a){return new p(r,n).calculateMerkleRoot(e,a)}d("./src/merkle/path.js").PathSet,d("./src/merkle/proof/merkleprooftree.js").MerkleProofTree,e.exports={merkleHash:function(e,a){return s(e,a).merkleHash},merkleTreeHash:function(e,a){return function(e,a){return new p(r,n).calculateMerkleTreeRoot(e,a)}(e,a).merkleHash},merkleHashSummary:s,generateProof:function(e,a,d){var p=r.buildWithPath(e,a);return n.buildFromBinaryTree(p,d)}}},"./src/merkle/proof/merkleprooftree.js":(e,a,d)=>{d("./src/merkle/path.js").SearchablePathElement;var p=d("./src/merkle/binarytree.js").HASH_PREFIX_NODE,t=d("./src/merkle/binarytree.js").HASH_PREFIX_NODE_ARRAY,i=d("./src/merkle/binarytree.js").HASH_PREFIX_NODE_DICT;function r(){}function n(e,a,d){this.prefix=e,this.left=a,this.right=d}function s(e,a){n.call(this,p,e,a)}function o(e,a){this.content=e,this.pathElem=a}function l(e){this.merkleHash=e}function m(e,a,d=null){n.call(this,t,e,a),this.pathElem=d}function u(e,a,d=null){n.call(this,i,e,a),this.pathElem=d}function f(e){this.root=e}n.prototype=Object.create(r.prototype),n.prototype.constructor=n,s.prototype=Object.create(n.prototype),s.prototype.constructor=s,o.prototype=Object.create(r.prototype),o.prototype.constructor=o,l.prototype=Object.create(r.prototype),l.prototype.constructor=l,l.prototype.equals=function(e){return e instanceof l&&this.merkleHash.equals(e.merkleHash)},m.prototype=Object.create(n.prototype),m.prototype.constructor=m,u.prototype=Object.create(n.prototype),u.prototype.constructor=u,f.prototype.maxLevel=function(){return this.maxLevelInternal(this.root)},f.prototype.maxLevelInternal=function(e){if(e instanceof o)return 1;if(e instanceof l)return 1;if(e instanceof n)return Math.max(this.maxLevelInternal(e.left),this.maxLevelInternal(e.right))+1;throw new Error("Should be able to handle node type: "+typeof e)},e.exports={ProofNode:n,ProofNodeSimple:s,ProofHashedLeaf:l,ProofValueLeaf:o,ProofNodeArrayHead:m,ProofNodeDictHead:u,MerkleProofElement:r,MerkleProofTree:f}},"./src/merkle/proof/merkleprooftreefactory.js":(e,a,d)=>{d("./src/merkle/binarytree.js").BinaryTreeElement;var p=d("./src/merkle/binarytree.js").Node,t=d("./src/merkle/binarytree.js").Leaf,i=d("./src/merkle/binarytree.js").EmptyLeaf,r=(d("./src/merkle/binarytree.js").BinaryTree,d("./src/merkle/proof/merkleprooftree.js").ProofHashedLeaf),n=d("./src/merkle/proof/merkleprooftree.js").ProofValueLeaf,s=(d("./src/merkle/proof/merkleprooftree.js").MerkleProofElement,d("./src/merkle/proof/merkleprooftree.js").MerkleProofTree),o=d("./src/merkle/proof/merkleprooftree.js").ProofNodeArrayHead,l=d("./src/merkle/proof/merkleprooftree.js").ProofNodeDictHead,m=d("./src/merkle/path.js").PathLeafElement,u=d("./src/merkle/binarytree.js").SubTreeRootNode,f=d("./src/merkle/binarytree.js").ArrayHeadNode,c=d("./src/merkle/binarytree.js").DictHeadNode,h=d("./src/merkle/proof/merkleprooftree.js").ProofNodeSimple;const v=new Buffer.alloc(32);function b(){}b.prototype.buildFromBinaryTree=function(e,a){var d=this.buildFromBinaryTreeInternal(e.root,a);return new s(d)},b.prototype.buildFromBinaryTreeInternal=function(e,a){if(e instanceof i)return new r(v);if(e instanceof t){if(null!=(s=e.pathElem)){if(s instanceof m)return new n(e.content,s.previous);throw new Error("The path and structure don't match. We are at a leaf, but path elem is not a leaf: "+s)}var d=a.calculateLeafHash(e.content);return new r(d)}var s;if(e instanceof u)return null!=(s=e.pathElem)&&s instanceof m?new n(e.content,s.previous):this.convertNode(e,a);if(e instanceof p)return this.convertNode(e,a);throw new Error("Cannot handle "+e)},b.prototype.convertNode=function(e,a){var d=this.buildFromBinaryTreeInternal(e.left,a),p=this.buildFromBinaryTreeInternal(e.right,a);if(d instanceof r&&p instanceof r){var t=a.calculateNodeHash(e.getPrefixByte(),d.merkleHash,p.merkleHash);return new r(t)}return this.buildNodeOfCorrectType(e,d,p)},b.prototype.extractSearchablePathElement=function(e){var a=e.pathElem;return null!=a?a.previous:null},b.prototype.buildNodeOfCorrectType=function(e,a,d){if(e instanceof f)return new o(a,d,this.extractSearchablePathElement(e));if(e instanceof c)return new l(a,d,this.extractSearchablePathElement(e));if(e instanceof p)return new h(a,d);throw new Error("Should have taken care of this node type: "+e)},e.exports={MerkleProofTreeFactory:b}},buffer:e=>{"use strict";e.exports=require("buffer")},crypto:e=>{"use strict";e.exports=require("crypto")},fs:e=>{"use strict";e.exports=require("fs")},http:e=>{"use strict";e.exports=require("http")},https:e=>{"use strict";e.exports=require("https")},os:e=>{"use strict";e.exports=require("os")},path:e=>{"use strict";e.exports=require("path")},punycode:e=>{"use strict";e.exports=require("punycode")},stream:e=>{"use strict";e.exports=require("stream")},url:e=>{"use strict";e.exports=require("url")},util:e=>{"use strict";e.exports=require("util")},vm:e=>{"use strict";e.exports=require("vm")},zlib:e=>{"use strict";e.exports=require("zlib")},"./node_modules/node-fetch/lib/index.mjs":(e,a,d)=>{"use strict";d.r(a),d.d(a,{FetchError:()=>f,Headers:()=>V,Request:()=>G,Response:()=>O,default:()=>X});var p=d("stream"),t=d("http"),i=d("url"),r=d("./node_modules/whatwg-url/lib/public-api.js"),n=d("https"),s=d("zlib");const o=p.Readable,l=Symbol("buffer"),m=Symbol("type");class u{constructor(){this[m]="";const e=arguments[0],a=arguments[1],d=[];let p=0;if(e){const a=e,t=Number(a.length);for(let e=0;e<t;e++){const t=a[e];let i;i=t instanceof Buffer?t:ArrayBuffer.isView(t)?Buffer.from(t.buffer,t.byteOffset,t.byteLength):t instanceof ArrayBuffer?Buffer.from(t):t instanceof u?t[l]:Buffer.from("string"==typeof t?t:String(t)),p+=i.length,d.push(i)}}this[l]=Buffer.concat(d);let t=a&&void 0!==a.type&&String(a.type).toLowerCase();t&&!/[^\u0020-\u007E]/.test(t)&&(this[m]=t)}get size(){return this[l].length}get type(){return this[m]}text(){return Promise.resolve(this[l].toString())}arrayBuffer(){const e=this[l],a=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);return Promise.resolve(a)}stream(){const e=new o;return e._read=function(){},e.push(this[l]),e.push(null),e}toString(){return"[object Blob]"}slice(){const e=this.size,a=arguments[0],d=arguments[1];let p,t;p=void 0===a?0:a<0?Math.max(e+a,0):Math.min(a,e),t=void 0===d?e:d<0?Math.max(e+d,0):Math.min(d,e);const i=Math.max(t-p,0),r=this[l].slice(p,p+i),n=new u([],{type:arguments[2]});return n[l]=r,n}}function f(e,a,d){Error.call(this,e),this.message=e,this.type=a,d&&(this.code=this.errno=d.code),Error.captureStackTrace(this,this.constructor)}let c;Object.defineProperties(u.prototype,{size:{enumerable:!0},type:{enumerable:!0},slice:{enumerable:!0}}),Object.defineProperty(u.prototype,Symbol.toStringTag,{value:"Blob",writable:!1,enumerable:!1,configurable:!0}),f.prototype=Object.create(Error.prototype),f.prototype.constructor=f,f.prototype.name="FetchError";try{c=require("encoding").convert}catch(e){}const h=Symbol("Body internals"),v=p.PassThrough;function b(e){var a=this,d=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=d.size;let i=void 0===t?0:t;var r=d.timeout;let n=void 0===r?0:r;null==e?e=null:y(e)?e=Buffer.from(e.toString()):g(e)||Buffer.isBuffer(e)||("[object ArrayBuffer]"===Object.prototype.toString.call(e)?e=Buffer.from(e):ArrayBuffer.isView(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):e instanceof p||(e=Buffer.from(String(e)))),this[h]={body:e,disturbed:!1,error:null},this.size=i,this.timeout=n,e instanceof p&&e.on("error",(function(e){const d="AbortError"===e.name?e:new f(`Invalid response body while trying to fetch ${a.url}: ${e.message}`,"system",e);a[h].error=d}))}function w(){var e=this;if(this[h].disturbed)return b.Promise.reject(new TypeError(`body used already for: ${this.url}`));if(this[h].disturbed=!0,this[h].error)return b.Promise.reject(this[h].error);let a=this.body;if(null===a)return b.Promise.resolve(Buffer.alloc(0));if(g(a)&&(a=a.stream()),Buffer.isBuffer(a))return b.Promise.resolve(a);if(!(a instanceof p))return b.Promise.resolve(Buffer.alloc(0));let d=[],t=0,i=!1;return new b.Promise((function(p,r){let n;e.timeout&&(n=setTimeout((function(){i=!0,r(new f(`Response timeout while trying to fetch ${e.url} (over ${e.timeout}ms)`,"body-timeout"))}),e.timeout)),a.on("error",(function(a){"AbortError"===a.name?(i=!0,r(a)):r(new f(`Invalid response body while trying to fetch ${e.url}: ${a.message}`,"system",a))})),a.on("data",(function(a){if(!i&&null!==a){if(e.size&&t+a.length>e.size)return i=!0,void r(new f(`content size at ${e.url} over limit: ${e.size}`,"max-size"));t+=a.length,d.push(a)}})),a.on("end",(function(){if(!i){clearTimeout(n);try{p(Buffer.concat(d,t))}catch(a){r(new f(`Could not create Buffer from response body for ${e.url}: ${a.message}`,"system",a))}}}))}))}function y(e){return"object"==typeof e&&"function"==typeof e.append&&"function"==typeof e.delete&&"function"==typeof e.get&&"function"==typeof e.getAll&&"function"==typeof e.has&&"function"==typeof e.set&&("URLSearchParams"===e.constructor.name||"[object URLSearchParams]"===Object.prototype.toString.call(e)||"function"==typeof e.sort)}function g(e){return"object"==typeof e&&"function"==typeof e.arrayBuffer&&"string"==typeof e.type&&"function"==typeof e.stream&&"function"==typeof e.constructor&&"string"==typeof e.constructor.name&&/^(Blob|File)$/.test(e.constructor.name)&&/^(Blob|File)$/.test(e[Symbol.toStringTag])}function _(e){let a,d,t=e.body;if(e.bodyUsed)throw new Error("cannot clone body after it is used");return t instanceof p&&"function"!=typeof t.getBoundary&&(a=new v,d=new v,t.pipe(a),t.pipe(d),e[h].body=a,t=d),t}function S(e){return null===e?null:"string"==typeof e?"text/plain;charset=UTF-8":y(e)?"application/x-www-form-urlencoded;charset=UTF-8":g(e)?e.type||null:Buffer.isBuffer(e)||"[object ArrayBuffer]"===Object.prototype.toString.call(e)||ArrayBuffer.isView(e)?null:"function"==typeof e.getBoundary?`multipart/form-data;boundary=${e.getBoundary()}`:e instanceof p?null:"text/plain;charset=UTF-8"}function N(e){const a=e.body;return null===a?0:g(a)?a.size:Buffer.isBuffer(a)?a.length:a&&"function"==typeof a.getLengthSync&&(a._lengthRetrievers&&0==a._lengthRetrievers.length||a.hasKnownLength&&a.hasKnownLength())?a.getLengthSync():null}b.prototype={get body(){return this[h].body},get bodyUsed(){return this[h].disturbed},arrayBuffer(){return w.call(this).then((function(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}))},blob(){let e=this.headers&&this.headers.get("content-type")||"";return w.call(this).then((function(a){return Object.assign(new u([],{type:e.toLowerCase()}),{[l]:a})}))},json(){var e=this;return w.call(this).then((function(a){try{return JSON.parse(a.toString())}catch(a){return b.Promise.reject(new f(`invalid json response body at ${e.url} reason: ${a.message}`,"invalid-json"))}}))},text(){return w.call(this).then((function(e){return e.toString()}))},buffer(){return w.call(this)},textConverted(){var e=this;return w.call(this).then((function(a){return function(e,a){if("function"!=typeof c)throw new Error("The package `encoding` must be installed to use the textConverted() function");const d=a.get("content-type");let p,t,i="utf-8";return d&&(p=/charset=([^;]*)/i.exec(d)),t=e.slice(0,1024).toString(),!p&&t&&(p=/<meta.+?charset=(['"])(.+?)\1/i.exec(t)),!p&&t&&(p=/<meta[\s]+?http-equiv=(['"])content-type\1[\s]+?content=(['"])(.+?)\2/i.exec(t),p||(p=/<meta[\s]+?content=(['"])(.+?)\1[\s]+?http-equiv=(['"])content-type\3/i.exec(t),p&&p.pop()),p&&(p=/charset=(.*)/i.exec(p.pop()))),!p&&t&&(p=/<\?xml.+?encoding=(['"])(.+?)\1/i.exec(t)),p&&(i=p.pop(),"gb2312"!==i&&"gbk"!==i||(i="gb18030")),c(e,"UTF-8",i).toString()}(a,e.headers)}))}},Object.defineProperties(b.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0}}),b.mixIn=function(e){for(const a of Object.getOwnPropertyNames(b.prototype))if(!(a in e)){const d=Object.getOwnPropertyDescriptor(b.prototype,a);Object.defineProperty(e,a,d)}},b.Promise=global.Promise;const M=/[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/,x=/[^\t\x20-\x7e\x80-\xff]/;function D(e){if(e=`${e}`,M.test(e)||""===e)throw new TypeError(`${e} is not a legal HTTP header name`)}function j(e){if(e=`${e}`,x.test(e))throw new TypeError(`${e} is not a legal HTTP header value`)}function A(e,a){a=a.toLowerCase();for(const d in e)if(d.toLowerCase()===a)return d}const T=Symbol("map");class V{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0;if(this[T]=Object.create(null),e instanceof V){const a=e.raw(),d=Object.keys(a);for(const e of d)for(const d of a[e])this.append(e,d)}else if(null==e);else{if("object"!=typeof e)throw new TypeError("Provided initializer must be an object");{const a=e[Symbol.iterator];if(null!=a){if("function"!=typeof a)throw new TypeError("Header pairs must be iterable");const d=[];for(const a of e){if("object"!=typeof a||"function"!=typeof a[Symbol.iterator])throw new TypeError("Each header pair must be iterable");d.push(Array.from(a))}for(const e of d){if(2!==e.length)throw new TypeError("Each header pair must be a name/value tuple");this.append(e[0],e[1])}}else for(const a of Object.keys(e)){const d=e[a];this.append(a,d)}}}}get(e){D(e=`${e}`);const a=A(this[T],e);return void 0===a?null:this[T][a].join(", ")}forEach(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,d=E(this),p=0;for(;p<d.length;){var t=d[p];const i=t[0],r=t[1];e.call(a,r,i,this),d=E(this),p++}}set(e,a){a=`${a}`,D(e=`${e}`),j(a);const d=A(this[T],e);this[T][void 0!==d?d:e]=[a]}append(e,a){a=`${a}`,D(e=`${e}`),j(a);const d=A(this[T],e);void 0!==d?this[T][d].push(a):this[T][e]=[a]}has(e){return D(e=`${e}`),void 0!==A(this[T],e)}delete(e){D(e=`${e}`);const a=A(this[T],e);void 0!==a&&delete this[T][a]}raw(){return this[T]}keys(){return B(this,"key")}values(){return B(this,"value")}[Symbol.iterator](){return B(this,"key+value")}}function E(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"key+value";const d=Object.keys(e[T]).sort();return d.map("key"===a?function(e){return e.toLowerCase()}:"value"===a?function(a){return e[T][a].join(", ")}:function(a){return[a.toLowerCase(),e[T][a].join(", ")]})}V.prototype.entries=V.prototype[Symbol.iterator],Object.defineProperty(V.prototype,Symbol.toStringTag,{value:"Headers",writable:!1,enumerable:!1,configurable:!0}),Object.defineProperties(V.prototype,{get:{enumerable:!0},forEach:{enumerable:!0},set:{enumerable:!0},append:{enumerable:!0},has:{enumerable:!0},delete:{enumerable:!0},keys:{enumerable:!0},values:{enumerable:!0},entries:{enumerable:!0}});const k=Symbol("internal");function B(e,a){const d=Object.create(P);return d[k]={target:e,kind:a,index:0},d}const P=Object.setPrototypeOf({next(){if(!this||Object.getPrototypeOf(this)!==P)throw new TypeError("Value of `this` is not a HeadersIterator");var e=this[k];const a=e.target,d=e.kind,p=e.index,t=E(a,d);return p>=t.length?{value:void 0,done:!0}:(this[k].index=p+1,{value:t[p],done:!1})}},Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));function I(e){const a=Object.assign({__proto__:null},e[T]),d=A(e[T],"Host");return void 0!==d&&(a[d]=a[d][0]),a}Object.defineProperty(P,Symbol.toStringTag,{value:"HeadersIterator",writable:!1,enumerable:!1,configurable:!0});const C=Symbol("Response internals"),R=t.STATUS_CODES;class O{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};b.call(this,e,a);const d=a.status||200,p=new V(a.headers);if(null!=e&&!p.has("Content-Type")){const a=S(e);a&&p.append("Content-Type",a)}this[C]={url:a.url,status:d,statusText:a.statusText||R[d],headers:p,counter:a.counter}}get url(){return this[C].url||""}get status(){return this[C].status}get ok(){return this[C].status>=200&&this[C].status<300}get redirected(){return this[C].counter>0}get statusText(){return this[C].statusText}get headers(){return this[C].headers}clone(){return new O(_(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected})}}b.mixIn(O.prototype),Object.defineProperties(O.prototype,{url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}}),Object.defineProperty(O.prototype,Symbol.toStringTag,{value:"Response",writable:!1,enumerable:!1,configurable:!0});const L=Symbol("Request internals"),F=i.URL||r.URL,z=i.parse,q=i.format;function U(e){return/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(e)&&(e=new F(e).toString()),z(e)}const H="destroy"in p.Readable.prototype;function K(e){return"object"==typeof e&&"object"==typeof e[L]}class G{constructor(e){let a,d=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};K(e)?a=U(e.url):(a=e&&e.href?U(e.href):U(`${e}`),e={});let p=d.method||e.method||"GET";if(p=p.toUpperCase(),(null!=d.body||K(e)&&null!==e.body)&&("GET"===p||"HEAD"===p))throw new TypeError("Request with GET/HEAD method cannot have body");let t=null!=d.body?d.body:K(e)&&null!==e.body?_(e):null;b.call(this,t,{timeout:d.timeout||e.timeout||0,size:d.size||e.size||0});const i=new V(d.headers||e.headers||{});if(null!=t&&!i.has("Content-Type")){const e=S(t);e&&i.append("Content-Type",e)}let r=K(e)?e.signal:null;if("signal"in d&&(r=d.signal),null!=r&&!function(e){const a=e&&"object"==typeof e&&Object.getPrototypeOf(e);return!(!a||"AbortSignal"!==a.constructor.name)}(r))throw new TypeError("Expected signal to be an instanceof AbortSignal");this[L]={method:p,redirect:d.redirect||e.redirect||"follow",headers:i,parsedURL:a,signal:r},this.follow=void 0!==d.follow?d.follow:void 0!==e.follow?e.follow:20,this.compress=void 0!==d.compress?d.compress:void 0===e.compress||e.compress,this.counter=d.counter||e.counter||0,this.agent=d.agent||e.agent}get method(){return this[L].method}get url(){return q(this[L].parsedURL)}get headers(){return this[L].headers}get redirect(){return this[L].redirect}get signal(){return this[L].signal}clone(){return new G(this)}}function $(e){Error.call(this,e),this.type="aborted",this.message=e,Error.captureStackTrace(this,this.constructor)}b.mixIn(G.prototype),Object.defineProperty(G.prototype,Symbol.toStringTag,{value:"Request",writable:!1,enumerable:!1,configurable:!0}),Object.defineProperties(G.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0}}),$.prototype=Object.create(Error.prototype),$.prototype.constructor=$,$.prototype.name="AbortError";const Z=i.URL||r.URL,J=p.PassThrough;function W(e,a){if(!W.Promise)throw new Error("native promise missing, set fetch.Promise to your favorite alternative");return b.Promise=W.Promise,new W.Promise((function(d,i){const r=new G(e,a),o=function(e){const a=e[L].parsedURL,d=new V(e[L].headers);if(d.has("Accept")||d.set("Accept","*/*"),!a.protocol||!a.hostname)throw new TypeError("Only absolute URLs are supported");if(!/^https?:$/.test(a.protocol))throw new TypeError("Only HTTP(S) protocols are supported");if(e.signal&&e.body instanceof p.Readable&&!H)throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8");let t=null;if(null==e.body&&/^(POST|PUT)$/i.test(e.method)&&(t="0"),null!=e.body){const a=N(e);"number"==typeof a&&(t=String(a))}t&&d.set("Content-Length",t),d.has("User-Agent")||d.set("User-Agent","node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"),e.compress&&!d.has("Accept-Encoding")&&d.set("Accept-Encoding","gzip,deflate");let i=e.agent;return"function"==typeof i&&(i=i(a)),d.has("Connection")||i||d.set("Connection","close"),Object.assign({},a,{method:e.method,headers:I(d),agent:i})}(r),l=("https:"===o.protocol?n:t).request,m=r.signal;let u=null;const c=function(){let e=new $("The user aborted a request.");i(e),r.body&&r.body instanceof p.Readable&&r.body.destroy(e),u&&u.body&&u.body.emit("error",e)};if(m&&m.aborted)return void c();const h=function(){c(),w()},v=l(o);let b;function w(){v.abort(),m&&m.removeEventListener("abort",h),clearTimeout(b)}m&&m.addEventListener("abort",h),r.timeout&&v.once("socket",(function(e){b=setTimeout((function(){i(new f(`network timeout at: ${r.url}`,"request-timeout")),w()}),r.timeout)})),v.on("error",(function(e){i(new f(`request to ${r.url} failed, reason: ${e.message}`,"system",e)),w()})),v.on("response",(function(e){clearTimeout(b);const a=function(e){const a=new V;for(const d of Object.keys(e))if(!M.test(d))if(Array.isArray(e[d]))for(const p of e[d])x.test(p)||(void 0===a[T][d]?a[T][d]=[p]:a[T][d].push(p));else x.test(e[d])||(a[T][d]=[e[d]]);return a}(e.headers);if(W.isRedirect(e.statusCode)){const p=a.get("Location");let t=null;try{t=null===p?null:new Z(p,r.url).toString()}catch(e){if("manual"!==r.redirect)return i(new f(`uri requested responds with an invalid redirect URL: ${p}`,"invalid-redirect")),void w()}switch(r.redirect){case"error":return i(new f(`uri requested responds with a redirect, redirect mode is set to error: ${r.url}`,"no-redirect")),void w();case"manual":if(null!==t)try{a.set("Location",t)}catch(e){i(e)}break;case"follow":if(null===t)break;if(r.counter>=r.follow)return i(new f(`maximum redirect reached at: ${r.url}`,"max-redirect")),void w();const p={headers:new V(r.headers),follow:r.follow,counter:r.counter+1,agent:r.agent,compress:r.compress,method:r.method,body:r.body,signal:r.signal,timeout:r.timeout,size:r.size};if(!function(e,a){const d=new Z(a).hostname,p=new Z(e).hostname;return d===p||"."===d[d.length-p.length-1]&&d.endsWith(p)}(r.url,t))for(const e of["authorization","www-authenticate","cookie","cookie2"])p.headers.delete(e);return 303!==e.statusCode&&r.body&&null===N(r)?(i(new f("Cannot follow redirect with body being a readable stream","unsupported-redirect")),void w()):(303!==e.statusCode&&(301!==e.statusCode&&302!==e.statusCode||"POST"!==r.method)||(p.method="GET",p.body=void 0,p.headers.delete("content-length")),d(W(new G(t,p))),void w())}}e.once("end",(function(){m&&m.removeEventListener("abort",h)}));let p=e.pipe(new J);const t={url:r.url,status:e.statusCode,statusText:e.statusMessage,headers:a,size:r.size,timeout:r.timeout,counter:r.counter},n=a.get("Content-Encoding");if(!r.compress||"HEAD"===r.method||null===n||204===e.statusCode||304===e.statusCode)return u=new O(p,t),void d(u);const o={flush:s.Z_SYNC_FLUSH,finishFlush:s.Z_SYNC_FLUSH};if("gzip"==n||"x-gzip"==n)return p=p.pipe(s.createGunzip(o)),u=new O(p,t),void d(u);if("deflate"!=n&&"x-deflate"!=n){if("br"==n&&"function"==typeof s.createBrotliDecompress)return p=p.pipe(s.createBrotliDecompress()),u=new O(p,t),void d(u);u=new O(p,t),d(u)}else e.pipe(new J).once("data",(function(e){p=8==(15&e[0])?p.pipe(s.createInflate()):p.pipe(s.createInflateRaw()),u=new O(p,t),d(u)}))})),function(e,a){const d=a.body;null===d?e.end():g(d)?d.stream().pipe(e):Buffer.isBuffer(d)?(e.write(d),e.end()):d.pipe(e)}(v,r)}))}W.isRedirect=function(e){return 301===e||302===e||303===e||307===e||308===e},W.Promise=global.Promise;const X=W},"./node_modules/elliptic/package.json":e=>{"use strict";e.exports=JSON.parse('{"name":"elliptic","version":"6.5.4","description":"EC cryptography","main":"lib/elliptic.js","files":["lib"],"scripts":{"lint":"eslint lib test","lint:fix":"npm run lint -- --fix","unit":"istanbul test _mocha --reporter=spec test/index.js","test":"npm run lint && npm run unit","version":"grunt dist && git add dist/"},"repository":{"type":"git","url":"git@github.com:indutny/elliptic"},"keywords":["EC","Elliptic","curve","Cryptography"],"author":"Fedor Indutny <fedor@indutny.com>","license":"MIT","bugs":{"url":"https://github.com/indutny/elliptic/issues"},"homepage":"https://github.com/indutny/elliptic","devDependencies":{"brfs":"^2.0.2","coveralls":"^3.1.0","eslint":"^7.6.0","grunt":"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1","istanbul":"^0.4.5","mocha":"^8.0.1"},"dependencies":{"bn.js":"^4.11.9","brorand":"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1","inherits":"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"}}')},"./node_modules/tr46/lib/mappingTable.json":e=>{"use strict";e.exports=JSON.parse('[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1000,1000],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6000],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8000,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8000]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9000],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[30000]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13000,13000],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43000,43000],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64000,64000],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66000,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[120000,120000],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128000,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23000]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149000]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32000]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195000,195000],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[40000]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918000,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]]')}},a={};function d(p){var t=a[p];if(void 0!==t)return t.exports;var i=a[p]={id:p,loaded:!1,exports:{}};return e[p].call(i.exports,i,i.exports,d),i.loaded=!0,i.exports}return d.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return d.d(a,{a}),a},d.d=(e,a)=>{for(var p in a)d.o(a,p)&&!d.o(e,p)&&Object.defineProperty(e,p,{enumerable:!0,get:a[p]})},d.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),d("./index.ts")})()));
3
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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LG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxrRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0Usa0VBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esc0VBSU5QLElBQUssQ0FDSDlDLElBQUssRUFDTHFELE9BQVEsQ0FDTixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0EsbUVBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0EsbUVBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0EsbUVBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLGtFQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0EsbUVBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0Usa0VBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0EsbUVBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0EsbUVBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLGlFQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLGtFQUNBLG9FQUVGLENBQ0UsbUVBQ0EsbUVBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0EsbUVBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxt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RyxJQUdoRDNoQixFQUFJLENBQ04sR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFDckQsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FDcEQsR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFDckQsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FDcEQsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FHbkQ0aEIsRUFBSyxDQUNQLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxHQUFJLEVBQ3JELEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQ3BELEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQ3JELEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQ3JELEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxHQUFJLHFFQzlJdEQxL0IsRUFBUXc5QixLQUFPLEVBQWYsNENBQ0F4OUIsRUFBUXk5QixPQUFTLEVBQWpCLDhDQUNB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eVksV0FDbkJDLEVBQWExWSxFQUFNMFksV0FFbkIvRCxFQUFZUCxFQUFPTyxVQUVuQmdFLEVBQVcsQ0FDYixXQUFZLFdBQVksV0FBWSxVQUNwQyxXQUFZLFdBQVksV0FBWSxXQUNwQyxVQUFZLFdBQVksV0FBWSxXQUNwQyxXQUFZLFdBQVksV0FBWSxXQUNwQyxXQUFZLFdBQVksVUFBWSxXQUNwQyxVQUFZLFdBQVksV0FBWSxXQUNwQyxXQUFZLFdBQVksV0FBWSxVQUNwQyxXQUFZLFVBQVksV0FBWSxXQUNwQyxXQUFZLFdBQVksV0FBWSxVQUNwQyxVQUFZLFdBQVksVUFBWSxXQUNwQyxVQUFZLFdBQVksV0FBWSxXQUNwQyxXQUFZLFdBQVksV0FBWSxXQUNwQyxXQUFZLFdBQVksV0FBWSxVQUNwQyxXQUFZLFdBQVksV0FBWSxXQUNwQyxXQUFZLFdBQVksV0FBWSxXQUNwQyxVQUFZLFdBQVksVUFBWSxVQUNwQyxVQUFZLFdBQVksVUFBWSxXQUNwQyxXQUFZLFdBQVksV0FBWSxXQUNwQyxXQUFZLFdBQVksV0FBWSxXQUNwQyxXQUFZLFdBQVksV0FBWSxVQUNwQyxXQUFZLFdBQVksV0FBWSxXQUNwQyxXQUFZLFdBQVksV0FBWSxVQUNwQyxXQUFZLFdBQVksV0FBWSxXQUNwQyxXQUFZLFdBQVksVUFBWSxVQUNwQyxVQUFZLFdBQVksVUFBWSxXQUNwQyxVQUFZLFdBQVksVUFBWSxXQUNwQyxVQUFZLFdBQVksV0FBWSxXQUNwQyxXQUFZLFdBQVksV0FBWSxXQUNwQyxXQUFZLFdBQVksV0FBWSxXQUNwQyxXQUFZLFdBQVksV0FBWSxVQUNwQyxXQUFZLFVBQVksV0FBWSxXQUNwQyxXQUFZLFdBQVksV0FBWSxXQUNwQyxXQUFZLFdBQVksV0FBWSxVQUNwQyxXQUFZLFdBQVksV0FBWSxXQUNwQyxVQUFZLFdBQVksVUFBWSxXQUNwQyxVQUFZLFdBQVksVUFBWSxVQUNwQyxVQUFZLFVBQVksVUFBWSxXQUNwQyxXQUFZLFVBQVksV0FBWSxXQUNwQyxXQUFZLFdBQVksV0FBWSxXQUNwQyxXQUFZLFVBQVksV0FBWSxZQUd0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QUFTLEVBR1RsNkQsRUFBT0QsT0FDZixRQ3hCQWc2RCxFQUFvQnI3QyxFQUFLMWUsSUFDeEIsSUFBSW82RCxFQUFTcDZELEdBQVVBLEVBQU9xNkQsV0FDN0IsSUFBT3I2RCxFQUFpQixRQUN4QixJQUFNLEVBRVAsT0FEQSs1RCxFQUFvQjdzQyxFQUFFa3RDLEVBQVEsQ0FBRTltRCxJQUN6QjhtRCxDQUFNLEVDTGRMLEVBQW9CN3NDLEVBQUksQ0FBQ250QixFQUFTdTZELEtBQ2pDLElBQUksSUFBSXYxRCxLQUFPdTFELEVBQ1hQLEVBQW9CdmlELEVBQUU4aUQsRUFBWXYxRCxLQUFTZzFELEVBQW9CdmlELEVBQUV6WCxFQUFTZ0YsSUFDNUVvQixPQUFPd3ZCLGVBQWU1MUIsRUFBU2dGLEVBQUssQ0FBRTh3QixZQUFZLEVBQU1DLElBQUt3a0MsRUFBV3YxRCxJQUUxRSxFQ05EZzFELEVBQW9CdmlELEVBQUksQ0FBQzVTLEVBQUtXLElBQVVZLE9BQU9wRixVQUFVUyxlQUFlSCxLQUFLdUQsRUFBS1csR0NDbEZ3MEQsRUFBb0Ixb0QsRUFBS3RSLElBQ0gsb0JBQVgwaUQsUUFBMEJBLE9BQU95UCxhQUMxQy9yRCxPQUFPd3ZCLGVBQWU1MUIsRUFBUzBpRCxPQUFPeVAsWUFBYSxDQUFFM3ZELE1BQU8sV0FFN0Q0RCxPQUFPd3ZCLGVBQWU1MUIsRUFBUyxhQUFjLENBQUV3QyxPQUFPLEdBQU8sRUNMOUR3M0QsRUFBb0JRLElBQU92NkQsSUFDMUJBLEVBQU8rb0QsTUFBUSxHQUNWL29ELEVBQU9xRSxXQUFVckUsRUFBT3FFLFNBQVcsSUFDakNyRSxHQ0FrQis1RCxFQUFvQiIsInNvdXJjZXMiOlsid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEuanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYXBpLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2Jhc2UvYnVmZmVyLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2Jhc2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9ub2RlLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2Jhc2UvcmVwb3J0ZXIuanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvY29uc3RhbnRzL2Rlci5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9jb25zdGFudHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZGVjb2RlcnMvZGVyLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2RlY29kZXJzL2luZGV4LmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2RlY29kZXJzL3BlbS5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9lbmNvZGVycy9kZXIuanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZW5jb2RlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZW5jb2RlcnMvcGVtLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9ibi5qcy9saWIvYm4uanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2Jyb3JhbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Jhc2UuanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9lZHdhcmRzLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9tb250LmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmUvc2hvcnQuanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZXMuanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VjL2tleS5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VjL3NpZ25hdHVyZS5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL2luZGV4LmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWRkc2Eva2V5LmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWRkc2Evc2lnbmF0dXJlLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvcHJlY29tcHV0ZWQvc2VjcDI1NmsxLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2guanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvY29tbW9uLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL2htYWMuanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvcmlwZW1kLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9zaGEvMS5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9zaGEvMjI0LmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS8yNTYuanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvc2hhLzM4NC5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9zaGEvNTEyLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS9jb21tb24uanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL2htYWMtZHJiZy9saWIvaG1hYy1kcmJnLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9pbmhlcml0cy9pbmhlcml0cy5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9ub2RlX21vZHVsZXMvaW5oZXJpdHMvaW5oZXJpdHNfYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9ub2RlX21vZHVsZXMvbWluaW1hbGlzdGljLWFzc2VydC9pbmRleC5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9ub2RlX21vZHVsZXMvbWluaW1hbGlzdGljLWNyeXB0by11dGlscy9saWIvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL25vZGUtZ3lwLWJ1aWxkL2luZGV4LmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9zZWNwMjU2azEvYmluZGluZ3MuanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL3NlY3AyNTZrMS9lbGxpcHRpYy5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9ub2RlX21vZHVsZXMvc2VjcDI1NmsxL2luZGV4LmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9zZWNwMjU2azEvbGliL2VsbGlwdGljLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy9zZWNwMjU2azEvbGliL2luZGV4LmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy90cjQ2L2luZGV4LmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL3NyYy9jaHJvbWlhL2Nocm9taWFDbGllbnRQcm92aWRlci50cyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9zcmMvY2hyb21pYS9lcnJvcnMudHMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vc3JjL2VuY3J5cHRpb24vZW5jcnlwdGlvbi50cyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9zcmMvZW5jcnlwdGlvbi9lcnJvcnMudHMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vc3JjL2Zvcm1hdHRlci50cyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9zcmMvZ3R2L2RlZmluaXRpb24udHMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vc3JjL2d0di9pbmRleC50cyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9zcmMvZ3R4L2Vycm9ycy50cyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9zcmMvZ3R4L2d0eC50cyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9zcmMvZ3R4L2d0eGNsaWVudC50cyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9zcmMvZ3R4L2luZGV4LnRzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL3NyYy9ndHgvc2VyaWFsaXphdGlvbi50cyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9zcmMvbG9nZ2VyLnRzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL3NyYy9tZXJrbGUvbWVya2xlSGVscGVyLnRzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL3NyYy9yZXN0Y2xpZW50L2Vycm9ycy50cyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9zcmMvcmVzdGNsaWVudC9yZXN0Y2xpZW50LnRzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL3NyYy9yZXN0Y2xpZW50L3Jlc3RjbGllbnR1dGlsLnRzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL3NyYy9yZXN0Y2xpZW50L3R5cGVzLnRzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy93ZWJpZGwtY29udmVyc2lvbnMvbGliL2luZGV4LmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy93aGF0d2ctdXJsL2xpYi9VUkwtaW1wbC5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9ub2RlX21vZHVsZXMvd2hhdHdnLXVybC9saWIvVVJMLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy93aGF0d2ctdXJsL2xpYi9wdWJsaWMtYXBpLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL25vZGVfbW9kdWxlcy93aGF0d2ctdXJsL2xpYi91cmwtc3RhdGUtbWFjaGluZS5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9ub2RlX21vZHVsZXMvd2hhdHdnLXVybC9saWIvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vc3JjL21lcmtsZS9iaW5hcnl0cmVlLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL3NyYy9tZXJrbGUvYmluYXJ5dHJlZWZhY3RvcnkuanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vc3JjL21lcmtsZS9tZXJrbGVoYXNoY2FsY3VsYXRvci5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9zcmMvbWVya2xlL3BhdGguanMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vc3JjL21lcmtsZS9wcm9vZi9tZXJrbGVoYXNoY2Fycmllci5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9zcmMvbWVya2xlL3Byb29mL21lcmtsZWhhc2hzdW1tYXJ5ZmFjdG9yeS5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvLi9zcmMvbWVya2xlL3Byb29mL21lcmtsZXByb29mLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL3NyYy9tZXJrbGUvcHJvb2YvbWVya2xlcHJvb2Z0cmVlLmpzIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC8uL3NyYy9tZXJrbGUvcHJvb2YvbWVya2xlcHJvb2Z0cmVlZmFjdG9yeS5qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcImJ1ZmZlclwiIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC9leHRlcm5hbCBub2RlLWNvbW1vbmpzIFwiY3J5cHRvXCIiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50L2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJmc1wiIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC9leHRlcm5hbCBub2RlLWNvbW1vbmpzIFwiaHR0cFwiIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC9leHRlcm5hbCBub2RlLWNvbW1vbmpzIFwiaHR0cHNcIiIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcIm9zXCIiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50L2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50L2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJwdW55Y29kZVwiIiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC9leHRlcm5hbCBub2RlLWNvbW1vbmpzIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50L2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJ1cmxcIiIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcInV0aWxcIiIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcInZtXCIiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50L2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJ6bGliXCIiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50Ly4vbm9kZV9tb2R1bGVzL25vZGUtZmV0Y2gvbGliL2luZGV4Lm1qcyIsIndlYnBhY2s6Ly9Qb3N0Y2hhaW5DbGllbnQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL1Bvc3RjaGFpbkNsaWVudC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50L3dlYnBhY2svcnVudGltZS9ub2RlIG1vZHVsZSBkZWNvcmF0b3IiLCJ3ZWJwYWNrOi8vUG9zdGNoYWluQ2xpZW50L3dlYnBhY2svc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJQb3N0Y2hhaW5DbGllbnRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiUG9zdGNoYWluQ2xpZW50XCJdID0gZmFjdG9yeSgpO1xufSkoZ2xvYmFsLCAoKSA9PiB7XG5yZXR1cm4gIiwidmFyIGFzbjEgPSBleHBvcnRzO1xuXG5hc24xLmJpZ251bSA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5cbmFzbjEuZGVmaW5lID0gcmVxdWlyZSgnLi9hc24xL2FwaScpLmRlZmluZTtcbmFzbjEuYmFzZSA9IHJlcXVpcmUoJy4vYXNuMS9iYXNlJyk7XG5hc24xLmNvbnN0YW50cyA9IHJlcXVpcmUoJy4vYXNuMS9jb25zdGFudHMnKTtcbmFzbjEuZGVjb2RlcnMgPSByZXF1aXJlKCcuL2FzbjEvZGVjb2RlcnMnKTtcbmFzbjEuZW5jb2RlcnMgPSByZXF1aXJlKCcuL2FzbjEvZW5jb2RlcnMnKTtcbiIsInZhciBhc24xID0gcmVxdWlyZSgnLi4vYXNuMScpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIGFwaSA9IGV4cG9ydHM7XG5cbmFwaS5kZWZpbmUgPSBmdW5jdGlvbiBkZWZpbmUobmFtZSwgYm9keSkge1xuICByZXR1cm4gbmV3IEVudGl0eShuYW1lLCBib2R5KTtcbn07XG5cbmZ1bmN0aW9uIEVudGl0eShuYW1lLCBib2R5KSB7XG4gIHRoaXMubmFtZSA9IG5hbWU7XG4gIHRoaXMuYm9keSA9IGJvZHk7XG5cbiAgdGhpcy5kZWNvZGVycyA9IHt9O1xuICB0aGlzLmVuY29kZXJzID0ge307XG59O1xuXG5FbnRpdHkucHJvdG90eXBlLl9jcmVhdGVOYW1lZCA9IGZ1bmN0aW9uIGNyZWF0ZU5hbWVkKGJhc2UpIHtcbiAgdmFyIG5hbWVkO1xuICB0cnkge1xuICAgIG5hbWVkID0gcmVxdWlyZSgndm0nKS5ydW5JblRoaXNDb250ZXh0KFxuICAgICAgJyhmdW5jdGlvbiAnICsgdGhpcy5uYW1lICsgJyhlbnRpdHkpIHtcXG4nICtcbiAgICAgICcgIHRoaXMuX2luaXROYW1lZChlbnRpdHkpO1xcbicgK1xuICAgICAgJ30pJ1xuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBuYW1lZCA9IGZ1bmN0aW9uIChlbnRpdHkpIHtcbiAgICAgIHRoaXMuX2luaXROYW1lZChlbnRpdHkpO1xuICAgIH07XG4gIH1cbiAgaW5oZXJpdHMobmFtZWQsIGJhc2UpO1xuICBuYW1lZC5wcm90b3R5cGUuX2luaXROYW1lZCA9IGZ1bmN0aW9uIGluaXRuYW1lZChlbnRpdHkpIHtcbiAgICBiYXNlLmNhbGwodGhpcywgZW50aXR5KTtcbiAgfTtcblxuICByZXR1cm4gbmV3IG5hbWVkKHRoaXMpO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5fZ2V0RGVjb2RlciA9IGZ1bmN0aW9uIF9nZXREZWNvZGVyKGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ2Rlcic7XG4gIC8vIExhemlseSBjcmVhdGUgZGVjb2RlclxuICBpZiAoIXRoaXMuZGVjb2RlcnMuaGFzT3duUHJvcGVydHkoZW5jKSlcbiAgICB0aGlzLmRlY29kZXJzW2VuY10gPSB0aGlzLl9jcmVhdGVOYW1lZChhc24xLmRlY29kZXJzW2VuY10pO1xuICByZXR1cm4gdGhpcy5kZWNvZGVyc1tlbmNdO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoZGF0YSwgZW5jLCBvcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLl9nZXREZWNvZGVyKGVuYykuZGVjb2RlKGRhdGEsIG9wdGlvbnMpO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5fZ2V0RW5jb2RlciA9IGZ1bmN0aW9uIF9nZXRFbmNvZGVyKGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ2Rlcic7XG4gIC8vIExhemlseSBjcmVhdGUgZW5jb2RlclxuICBpZiAoIXRoaXMuZW5jb2RlcnMuaGFzT3duUHJvcGVydHkoZW5jKSlcbiAgICB0aGlzLmVuY29kZXJzW2VuY10gPSB0aGlzLl9jcmVhdGVOYW1lZChhc24xLmVuY29kZXJzW2VuY10pO1xuICByZXR1cm4gdGhpcy5lbmNvZGVyc1tlbmNdO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgZW5jLCAvKiBpbnRlcm5hbCAqLyByZXBvcnRlcikge1xuICByZXR1cm4gdGhpcy5fZ2V0RW5jb2RlcihlbmMpLmVuY29kZShkYXRhLCByZXBvcnRlcik7XG59O1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBSZXBvcnRlciA9IHJlcXVpcmUoJy4uL2Jhc2UnKS5SZXBvcnRlcjtcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG5cbmZ1bmN0aW9uIERlY29kZXJCdWZmZXIoYmFzZSwgb3B0aW9ucykge1xuICBSZXBvcnRlci5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiYXNlKSkge1xuICAgIHRoaXMuZXJyb3IoJ0lucHV0IG5vdCBCdWZmZXInKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLmJhc2UgPSBiYXNlO1xuICB0aGlzLm9mZnNldCA9IDA7XG4gIHRoaXMubGVuZ3RoID0gYmFzZS5sZW5ndGg7XG59XG5pbmhlcml0cyhEZWNvZGVyQnVmZmVyLCBSZXBvcnRlcik7XG5leHBvcnRzLkRlY29kZXJCdWZmZXIgPSBEZWNvZGVyQnVmZmVyO1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gc2F2ZSgpIHtcbiAgcmV0dXJuIHsgb2Zmc2V0OiB0aGlzLm9mZnNldCwgcmVwb3J0ZXI6IFJlcG9ydGVyLnByb3RvdHlwZS5zYXZlLmNhbGwodGhpcykgfTtcbn07XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLnJlc3RvcmUgPSBmdW5jdGlvbiByZXN0b3JlKHNhdmUpIHtcbiAgLy8gUmV0dXJuIHNraXBwZWQgZGF0YVxuICB2YXIgcmVzID0gbmV3IERlY29kZXJCdWZmZXIodGhpcy5iYXNlKTtcbiAgcmVzLm9mZnNldCA9IHNhdmUub2Zmc2V0O1xuICByZXMubGVuZ3RoID0gdGhpcy5vZmZzZXQ7XG5cbiAgdGhpcy5vZmZzZXQgPSBzYXZlLm9mZnNldDtcbiAgUmVwb3J0ZXIucHJvdG90eXBlLnJlc3RvcmUuY2FsbCh0aGlzLCBzYXZlLnJlcG9ydGVyKTtcblxuICByZXR1cm4gcmVzO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uIGlzRW1wdHkoKSB7XG4gIHJldHVybiB0aGlzLm9mZnNldCA9PT0gdGhpcy5sZW5ndGg7XG59O1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDgoZmFpbCkge1xuICBpZiAodGhpcy5vZmZzZXQgKyAxIDw9IHRoaXMubGVuZ3RoKVxuICAgIHJldHVybiB0aGlzLmJhc2UucmVhZFVJbnQ4KHRoaXMub2Zmc2V0KyssIHRydWUpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuZXJyb3IoZmFpbCB8fCAnRGVjb2RlckJ1ZmZlciBvdmVycnVuJyk7XG59XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLnNraXAgPSBmdW5jdGlvbiBza2lwKGJ5dGVzLCBmYWlsKSB7XG4gIGlmICghKHRoaXMub2Zmc2V0ICsgYnl0ZXMgPD0gdGhpcy5sZW5ndGgpKVxuICAgIHJldHVybiB0aGlzLmVycm9yKGZhaWwgfHwgJ0RlY29kZXJCdWZmZXIgb3ZlcnJ1bicpO1xuXG4gIHZhciByZXMgPSBuZXcgRGVjb2RlckJ1ZmZlcih0aGlzLmJhc2UpO1xuXG4gIC8vIFNoYXJlIHJlcG9ydGVyIHN0YXRlXG4gIHJlcy5fcmVwb3J0ZXJTdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgcmVzLm9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICByZXMubGVuZ3RoID0gdGhpcy5vZmZzZXQgKyBieXRlcztcbiAgdGhpcy5vZmZzZXQgKz0gYnl0ZXM7XG4gIHJldHVybiByZXM7XG59XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLnJhdyA9IGZ1bmN0aW9uIHJhdyhzYXZlKSB7XG4gIHJldHVybiB0aGlzLmJhc2Uuc2xpY2Uoc2F2ZSA/IHNhdmUub2Zmc2V0IDogdGhpcy5vZmZzZXQsIHRoaXMubGVuZ3RoKTtcbn1cblxuZnVuY3Rpb24gRW5jb2RlckJ1ZmZlcih2YWx1ZSwgcmVwb3J0ZXIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZS5tYXAoZnVuY3Rpb24oaXRlbSkge1xuICAgICAgaWYgKCEoaXRlbSBpbnN0YW5jZW9mIEVuY29kZXJCdWZmZXIpKVxuICAgICAgICBpdGVtID0gbmV3IEVuY29kZXJCdWZmZXIoaXRlbSwgcmVwb3J0ZXIpO1xuICAgICAgdGhpcy5sZW5ndGggKz0gaXRlbS5sZW5ndGg7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9LCB0aGlzKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKCEoMCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAweGZmKSlcbiAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignbm9uLWJ5dGUgRW5jb2RlckJ1ZmZlciB2YWx1ZScpO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IDE7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHZhbHVlKTtcbiAgfSBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMubGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVW5zdXBwb3J0ZWQgdHlwZTogJyArIHR5cGVvZiB2YWx1ZSk7XG4gIH1cbn1cbmV4cG9ydHMuRW5jb2RlckJ1ZmZlciA9IEVuY29kZXJCdWZmZXI7XG5cbkVuY29kZXJCdWZmZXIucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBqb2luKG91dCwgb2Zmc2V0KSB7XG4gIGlmICghb3V0KVxuICAgIG91dCA9IG5ldyBCdWZmZXIodGhpcy5sZW5ndGgpO1xuICBpZiAoIW9mZnNldClcbiAgICBvZmZzZXQgPSAwO1xuXG4gIGlmICh0aGlzLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gb3V0O1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgdGhpcy52YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgIGl0ZW0uam9pbihvdXQsIG9mZnNldCk7XG4gICAgICBvZmZzZXQgKz0gaXRlbS5sZW5ndGg7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnbnVtYmVyJylcbiAgICAgIG91dFtvZmZzZXRdID0gdGhpcy52YWx1ZTtcbiAgICBlbHNlIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ3N0cmluZycpXG4gICAgICBvdXQud3JpdGUodGhpcy52YWx1ZSwgb2Zmc2V0KTtcbiAgICBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIodGhpcy52YWx1ZSkpXG4gICAgICB0aGlzLnZhbHVlLmNvcHkob3V0LCBvZmZzZXQpO1xuICAgIG9mZnNldCArPSB0aGlzLmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59O1xuIiwidmFyIGJhc2UgPSBleHBvcnRzO1xuXG5iYXNlLlJlcG9ydGVyID0gcmVxdWlyZSgnLi9yZXBvcnRlcicpLlJlcG9ydGVyO1xuYmFzZS5EZWNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi9idWZmZXInKS5EZWNvZGVyQnVmZmVyO1xuYmFzZS5FbmNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi9idWZmZXInKS5FbmNvZGVyQnVmZmVyO1xuYmFzZS5Ob2RlID0gcmVxdWlyZSgnLi9ub2RlJyk7XG4iLCJ2YXIgUmVwb3J0ZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuUmVwb3J0ZXI7XG52YXIgRW5jb2RlckJ1ZmZlciA9IHJlcXVpcmUoJy4uL2Jhc2UnKS5FbmNvZGVyQnVmZmVyO1xudmFyIERlY29kZXJCdWZmZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuRGVjb2RlckJ1ZmZlcjtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbi8vIFN1cHBvcnRlZCB0YWdzXG52YXIgdGFncyA9IFtcbiAgJ3NlcScsICdzZXFvZicsICdzZXQnLCAnc2V0b2YnLCAnb2JqaWQnLCAnYm9vbCcsXG4gICdnZW50aW1lJywgJ3V0Y3RpbWUnLCAnbnVsbF8nLCAnZW51bScsICdpbnQnLCAnb2JqRGVzYycsXG4gICdiaXRzdHInLCAnYm1wc3RyJywgJ2NoYXJzdHInLCAnZ2Vuc3RyJywgJ2dyYXBoc3RyJywgJ2lhNXN0cicsICdpc282NDZzdHInLFxuICAnbnVtc3RyJywgJ29jdHN0cicsICdwcmludHN0cicsICd0NjFzdHInLCAndW5pc3RyJywgJ3V0ZjhzdHInLCAndmlkZW9zdHInXG5dO1xuXG4vLyBQdWJsaWMgbWV0aG9kcyBsaXN0XG52YXIgbWV0aG9kcyA9IFtcbiAgJ2tleScsICdvYmonLCAndXNlJywgJ29wdGlvbmFsJywgJ2V4cGxpY2l0JywgJ2ltcGxpY2l0JywgJ2RlZicsICdjaG9pY2UnLFxuICAnYW55JywgJ2NvbnRhaW5zJ1xuXS5jb25jYXQodGFncyk7XG5cbi8vIE92ZXJyaWRlZCBtZXRob2RzIGxpc3RcbnZhciBvdmVycmlkZWQgPSBbXG4gICdfcGVla1RhZycsICdfZGVjb2RlVGFnJywgJ191c2UnLFxuICAnX2RlY29kZVN0cicsICdfZGVjb2RlT2JqaWQnLCAnX2RlY29kZVRpbWUnLFxuICAnX2RlY29kZU51bGwnLCAnX2RlY29kZUludCcsICdfZGVjb2RlQm9vbCcsICdfZGVjb2RlTGlzdCcsXG5cbiAgJ19lbmNvZGVDb21wb3NpdGUnLCAnX2VuY29kZVN0cicsICdfZW5jb2RlT2JqaWQnLCAnX2VuY29kZVRpbWUnLFxuICAnX2VuY29kZU51bGwnLCAnX2VuY29kZUludCcsICdfZW5jb2RlQm9vbCdcbl07XG5cbmZ1bmN0aW9uIE5vZGUoZW5jLCBwYXJlbnQpIHtcbiAgdmFyIHN0YXRlID0ge307XG4gIHRoaXMuX2Jhc2VTdGF0ZSA9IHN0YXRlO1xuXG4gIHN0YXRlLmVuYyA9IGVuYztcblxuICBzdGF0ZS5wYXJlbnQgPSBwYXJlbnQgfHwgbnVsbDtcbiAgc3RhdGUuY2hpbGRyZW4gPSBudWxsO1xuXG4gIC8vIFN0YXRlXG4gIHN0YXRlLnRhZyA9IG51bGw7XG4gIHN0YXRlLmFyZ3MgPSBudWxsO1xuICBzdGF0ZS5yZXZlcnNlQXJncyA9IG51bGw7XG4gIHN0YXRlLmNob2ljZSA9IG51bGw7XG4gIHN0YXRlLm9wdGlvbmFsID0gZmFsc2U7XG4gIHN0YXRlLmFueSA9IGZhbHNlO1xuICBzdGF0ZS5vYmogPSBmYWxzZTtcbiAgc3RhdGUudXNlID0gbnVsbDtcbiAgc3RhdGUudXNlRGVjb2RlciA9IG51bGw7XG4gIHN0YXRlLmtleSA9IG51bGw7XG4gIHN0YXRlWydkZWZhdWx0J10gPSBudWxsO1xuICBzdGF0ZS5leHBsaWNpdCA9IG51bGw7XG4gIHN0YXRlLmltcGxpY2l0ID0gbnVsbDtcbiAgc3RhdGUuY29udGFpbnMgPSBudWxsO1xuXG4gIC8vIFNob3VsZCBjcmVhdGUgbmV3IGluc3RhbmNlIG9uIGVhY2ggbWV0aG9kXG4gIGlmICghc3RhdGUucGFyZW50KSB7XG4gICAgc3RhdGUuY2hpbGRyZW4gPSBbXTtcbiAgICB0aGlzLl93cmFwKCk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gTm9kZTtcblxudmFyIHN0YXRlUHJvcHMgPSBbXG4gICdlbmMnLCAncGFyZW50JywgJ2NoaWxkcmVuJywgJ3RhZycsICdhcmdzJywgJ3JldmVyc2VBcmdzJywgJ2Nob2ljZScsXG4gICdvcHRpb25hbCcsICdhbnknLCAnb2JqJywgJ3VzZScsICdhbHRlcmVkVXNlJywgJ2tleScsICdkZWZhdWx0JywgJ2V4cGxpY2l0JyxcbiAgJ2ltcGxpY2l0JywgJ2NvbnRhaW5zJ1xuXTtcblxuTm9kZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICB2YXIgY3N0YXRlID0ge307XG4gIHN0YXRlUHJvcHMuZm9yRWFjaChmdW5jdGlvbihwcm9wKSB7XG4gICAgY3N0YXRlW3Byb3BdID0gc3RhdGVbcHJvcF07XG4gIH0pO1xuICB2YXIgcmVzID0gbmV3IHRoaXMuY29uc3RydWN0b3IoY3N0YXRlLnBhcmVudCk7XG4gIHJlcy5fYmFzZVN0YXRlID0gY3N0YXRlO1xuICByZXR1cm4gcmVzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX3dyYXAgPSBmdW5jdGlvbiB3cmFwKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIG1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgICB0aGlzW21ldGhvZF0gPSBmdW5jdGlvbiBfd3JhcHBlZE1ldGhvZCgpIHtcbiAgICAgIHZhciBjbG9uZSA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpO1xuICAgICAgc3RhdGUuY2hpbGRyZW4ucHVzaChjbG9uZSk7XG4gICAgICByZXR1cm4gY2xvbmVbbWV0aG9kXS5hcHBseShjbG9uZSwgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9LCB0aGlzKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdChib2R5KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUucGFyZW50ID09PSBudWxsKTtcbiAgYm9keS5jYWxsKHRoaXMpO1xuXG4gIC8vIEZpbHRlciBjaGlsZHJlblxuICBzdGF0ZS5jaGlsZHJlbiA9IHN0YXRlLmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbihjaGlsZCkge1xuICAgIHJldHVybiBjaGlsZC5fYmFzZVN0YXRlLnBhcmVudCA9PT0gdGhpcztcbiAgfSwgdGhpcyk7XG4gIGFzc2VydC5lcXVhbChzdGF0ZS5jaGlsZHJlbi5sZW5ndGgsIDEsICdSb290IG5vZGUgY2FuIGhhdmUgb25seSBvbmUgY2hpbGQnKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl91c2VBcmdzID0gZnVuY3Rpb24gdXNlQXJncyhhcmdzKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAvLyBGaWx0ZXIgY2hpbGRyZW4gYW5kIGFyZ3NcbiAgdmFyIGNoaWxkcmVuID0gYXJncy5maWx0ZXIoZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGFyZyBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I7XG4gIH0sIHRoaXMpO1xuICBhcmdzID0gYXJncy5maWx0ZXIoZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuICEoYXJnIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcik7XG4gIH0sIHRoaXMpO1xuXG4gIGlmIChjaGlsZHJlbi5sZW5ndGggIT09IDApIHtcbiAgICBhc3NlcnQoc3RhdGUuY2hpbGRyZW4gPT09IG51bGwpO1xuICAgIHN0YXRlLmNoaWxkcmVuID0gY2hpbGRyZW47XG5cbiAgICAvLyBSZXBsYWNlIHBhcmVudCB0byBtYWludGFpbiBiYWNrd2FyZCBsaW5rXG4gICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihjaGlsZCkge1xuICAgICAgY2hpbGQuX2Jhc2VTdGF0ZS5wYXJlbnQgPSB0aGlzO1xuICAgIH0sIHRoaXMpO1xuICB9XG4gIGlmIChhcmdzLmxlbmd0aCAhPT0gMCkge1xuICAgIGFzc2VydChzdGF0ZS5hcmdzID09PSBudWxsKTtcbiAgICBzdGF0ZS5hcmdzID0gYXJncztcbiAgICBzdGF0ZS5yZXZlcnNlQXJncyA9IGFyZ3MubWFwKGZ1bmN0aW9uKGFyZykge1xuICAgICAgaWYgKHR5cGVvZiBhcmcgIT09ICdvYmplY3QnIHx8IGFyZy5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0KVxuICAgICAgICByZXR1cm4gYXJnO1xuXG4gICAgICB2YXIgcmVzID0ge307XG4gICAgICBPYmplY3Qua2V5cyhhcmcpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIGlmIChrZXkgPT0gKGtleSB8IDApKVxuICAgICAgICAgIGtleSB8PSAwO1xuICAgICAgICB2YXIgdmFsdWUgPSBhcmdba2V5XTtcbiAgICAgICAgcmVzW3ZhbHVlXSA9IGtleTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9KTtcbiAgfVxufTtcblxuLy9cbi8vIE92ZXJyaWRlZCBtZXRob2RzXG4vL1xuXG5vdmVycmlkZWQuZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgTm9kZS5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIF9vdmVycmlkZWQoKSB7XG4gICAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICAgIHRocm93IG5ldyBFcnJvcihtZXRob2QgKyAnIG5vdCBpbXBsZW1lbnRlZCBmb3IgZW5jb2Rpbmc6ICcgKyBzdGF0ZS5lbmMpO1xuICB9O1xufSk7XG5cbi8vXG4vLyBQdWJsaWMgbWV0aG9kc1xuLy9cblxudGFncy5mb3JFYWNoKGZ1bmN0aW9uKHRhZykge1xuICBOb2RlLnByb3RvdHlwZVt0YWddID0gZnVuY3Rpb24gX3RhZ01ldGhvZCgpIHtcbiAgICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gICAgYXNzZXJ0KHN0YXRlLnRhZyA9PT0gbnVsbCk7XG4gICAgc3RhdGUudGFnID0gdGFnO1xuXG4gICAgdGhpcy5fdXNlQXJncyhhcmdzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xufSk7XG5cbk5vZGUucHJvdG90eXBlLnVzZSA9IGZ1bmN0aW9uIHVzZShpdGVtKSB7XG4gIGFzc2VydChpdGVtKTtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS51c2UgPT09IG51bGwpO1xuICBzdGF0ZS51c2UgPSBpdGVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUub3B0aW9uYWwgPSBmdW5jdGlvbiBvcHRpb25hbCgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIHN0YXRlLm9wdGlvbmFsID0gdHJ1ZTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmRlZiA9IGZ1bmN0aW9uIGRlZih2YWwpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZVsnZGVmYXVsdCddID09PSBudWxsKTtcbiAgc3RhdGVbJ2RlZmF1bHQnXSA9IHZhbDtcbiAgc3RhdGUub3B0aW9uYWwgPSB0cnVlO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuZXhwbGljaXQgPSBmdW5jdGlvbiBleHBsaWNpdChudW0pIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5leHBsaWNpdCA9PT0gbnVsbCAmJiBzdGF0ZS5pbXBsaWNpdCA9PT0gbnVsbCk7XG4gIHN0YXRlLmV4cGxpY2l0ID0gbnVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuaW1wbGljaXQgPSBmdW5jdGlvbiBpbXBsaWNpdChudW0pIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5leHBsaWNpdCA9PT0gbnVsbCAmJiBzdGF0ZS5pbXBsaWNpdCA9PT0gbnVsbCk7XG4gIHN0YXRlLmltcGxpY2l0ID0gbnVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUub2JqID0gZnVuY3Rpb24gb2JqKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblxuICBzdGF0ZS5vYmogPSB0cnVlO1xuXG4gIGlmIChhcmdzLmxlbmd0aCAhPT0gMClcbiAgICB0aGlzLl91c2VBcmdzKGFyZ3MpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUua2V5ID0gZnVuY3Rpb24ga2V5KG5ld0tleSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLmtleSA9PT0gbnVsbCk7XG4gIHN0YXRlLmtleSA9IG5ld0tleTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmFueSA9IGZ1bmN0aW9uIGFueSgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIHN0YXRlLmFueSA9IHRydWU7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5jaG9pY2UgPSBmdW5jdGlvbiBjaG9pY2Uob2JqKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUuY2hvaWNlID09PSBudWxsKTtcbiAgc3RhdGUuY2hvaWNlID0gb2JqO1xuICB0aGlzLl91c2VBcmdzKE9iamVjdC5rZXlzKG9iaikubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgIHJldHVybiBvYmpba2V5XTtcbiAgfSkpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiBjb250YWlucyhpdGVtKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUudXNlID09PSBudWxsKTtcbiAgc3RhdGUuY29udGFpbnMgPSBpdGVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy9cbi8vIERlY29kaW5nXG4vL1xuXG5Ob2RlLnByb3RvdHlwZS5fZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGlucHV0LCBvcHRpb25zKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAvLyBEZWNvZGUgcm9vdCBub2RlXG4gIGlmIChzdGF0ZS5wYXJlbnQgPT09IG51bGwpXG4gICAgcmV0dXJuIGlucHV0LndyYXBSZXN1bHQoc3RhdGUuY2hpbGRyZW5bMF0uX2RlY29kZShpbnB1dCwgb3B0aW9ucykpO1xuXG4gIHZhciByZXN1bHQgPSBzdGF0ZVsnZGVmYXVsdCddO1xuICB2YXIgcHJlc2VudCA9IHRydWU7XG5cbiAgdmFyIHByZXZLZXkgPSBudWxsO1xuICBpZiAoc3RhdGUua2V5ICE9PSBudWxsKVxuICAgIHByZXZLZXkgPSBpbnB1dC5lbnRlcktleShzdGF0ZS5rZXkpO1xuXG4gIC8vIENoZWNrIGlmIHRhZyBpcyB0aGVyZVxuICBpZiAoc3RhdGUub3B0aW9uYWwpIHtcbiAgICB2YXIgdGFnID0gbnVsbDtcbiAgICBpZiAoc3RhdGUuZXhwbGljaXQgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS5leHBsaWNpdDtcbiAgICBlbHNlIGlmIChzdGF0ZS5pbXBsaWNpdCAhPT0gbnVsbClcbiAgICAgIHRhZyA9IHN0YXRlLmltcGxpY2l0O1xuICAgIGVsc2UgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIHRhZyA9IHN0YXRlLnRhZztcblxuICAgIGlmICh0YWcgPT09IG51bGwgJiYgIXN0YXRlLmFueSkge1xuICAgICAgLy8gVHJpYWwgYW5kIEVycm9yXG4gICAgICB2YXIgc2F2ZSA9IGlucHV0LnNhdmUoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChzdGF0ZS5jaG9pY2UgPT09IG51bGwpXG4gICAgICAgICAgdGhpcy5fZGVjb2RlR2VuZXJpYyhzdGF0ZS50YWcsIGlucHV0LCBvcHRpb25zKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRoaXMuX2RlY29kZUNob2ljZShpbnB1dCwgb3B0aW9ucyk7XG4gICAgICAgIHByZXNlbnQgPSB0cnVlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBwcmVzZW50ID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpbnB1dC5yZXN0b3JlKHNhdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVzZW50ID0gdGhpcy5fcGVla1RhZyhpbnB1dCwgdGFnLCBzdGF0ZS5hbnkpO1xuXG4gICAgICBpZiAoaW5wdXQuaXNFcnJvcihwcmVzZW50KSlcbiAgICAgICAgcmV0dXJuIHByZXNlbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUHVzaCBvYmplY3Qgb24gc3RhY2tcbiAgdmFyIHByZXZPYmo7XG4gIGlmIChzdGF0ZS5vYmogJiYgcHJlc2VudClcbiAgICBwcmV2T2JqID0gaW5wdXQuZW50ZXJPYmplY3QoKTtcblxuICBpZiAocHJlc2VudCkge1xuICAgIC8vIFVud3JhcCBleHBsaWNpdCB2YWx1ZXNcbiAgICBpZiAoc3RhdGUuZXhwbGljaXQgIT09IG51bGwpIHtcbiAgICAgIHZhciBleHBsaWNpdCA9IHRoaXMuX2RlY29kZVRhZyhpbnB1dCwgc3RhdGUuZXhwbGljaXQpO1xuICAgICAgaWYgKGlucHV0LmlzRXJyb3IoZXhwbGljaXQpKVxuICAgICAgICByZXR1cm4gZXhwbGljaXQ7XG4gICAgICBpbnB1dCA9IGV4cGxpY2l0O1xuICAgIH1cblxuICAgIHZhciBzdGFydCA9IGlucHV0Lm9mZnNldDtcblxuICAgIC8vIFVud3JhcCBpbXBsaWNpdCBhbmQgbm9ybWFsIHZhbHVlc1xuICAgIGlmIChzdGF0ZS51c2UgPT09IG51bGwgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsKSB7XG4gICAgICBpZiAoc3RhdGUuYW55KVxuICAgICAgICB2YXIgc2F2ZSA9IGlucHV0LnNhdmUoKTtcbiAgICAgIHZhciBib2R5ID0gdGhpcy5fZGVjb2RlVGFnKFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgc3RhdGUuaW1wbGljaXQgIT09IG51bGwgPyBzdGF0ZS5pbXBsaWNpdCA6IHN0YXRlLnRhZyxcbiAgICAgICAgc3RhdGUuYW55XG4gICAgICApO1xuICAgICAgaWYgKGlucHV0LmlzRXJyb3IoYm9keSkpXG4gICAgICAgIHJldHVybiBib2R5O1xuXG4gICAgICBpZiAoc3RhdGUuYW55KVxuICAgICAgICByZXN1bHQgPSBpbnB1dC5yYXcoc2F2ZSk7XG4gICAgICBlbHNlXG4gICAgICAgIGlucHV0ID0gYm9keTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnRyYWNrICYmIHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIG9wdGlvbnMudHJhY2soaW5wdXQucGF0aCgpLCBzdGFydCwgaW5wdXQubGVuZ3RoLCAndGFnZ2VkJyk7XG5cbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnRyYWNrICYmIHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIG9wdGlvbnMudHJhY2soaW5wdXQucGF0aCgpLCBpbnB1dC5vZmZzZXQsIGlucHV0Lmxlbmd0aCwgJ2NvbnRlbnQnKTtcblxuICAgIC8vIFNlbGVjdCBwcm9wZXIgbWV0aG9kIGZvciB0YWdcbiAgICBpZiAoc3RhdGUuYW55KVxuICAgICAgcmVzdWx0ID0gcmVzdWx0O1xuICAgIGVsc2UgaWYgKHN0YXRlLmNob2ljZSA9PT0gbnVsbClcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2RlY29kZUdlbmVyaWMoc3RhdGUudGFnLCBpbnB1dCwgb3B0aW9ucyk7XG4gICAgZWxzZVxuICAgICAgcmVzdWx0ID0gdGhpcy5fZGVjb2RlQ2hvaWNlKGlucHV0LCBvcHRpb25zKTtcblxuICAgIGlmIChpbnB1dC5pc0Vycm9yKHJlc3VsdCkpXG4gICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgLy8gRGVjb2RlIGNoaWxkcmVuXG4gICAgaWYgKCFzdGF0ZS5hbnkgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsICYmIHN0YXRlLmNoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgICBzdGF0ZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIGRlY29kZUNoaWxkcmVuKGNoaWxkKSB7XG4gICAgICAgIC8vIE5PVEU6IFdlIGFyZSBpZ25vcmluZyBlcnJvcnMgaGVyZSwgdG8gbGV0IHBhcnNlciBjb250aW51ZSB3aXRoIG90aGVyXG4gICAgICAgIC8vIHBhcnRzIG9mIGVuY29kZWQgZGF0YVxuICAgICAgICBjaGlsZC5fZGVjb2RlKGlucHV0LCBvcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIERlY29kZSBjb250YWluZWQvZW5jb2RlZCBieSBzY2hlbWEsIG9ubHkgaW4gYml0IG9yIG9jdGV0IHN0cmluZ3NcbiAgICBpZiAoc3RhdGUuY29udGFpbnMgJiYgKHN0YXRlLnRhZyA9PT0gJ29jdHN0cicgfHwgc3RhdGUudGFnID09PSAnYml0c3RyJykpIHtcbiAgICAgIHZhciBkYXRhID0gbmV3IERlY29kZXJCdWZmZXIocmVzdWx0KTtcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2dldFVzZShzdGF0ZS5jb250YWlucywgaW5wdXQuX3JlcG9ydGVyU3RhdGUub2JqKVxuICAgICAgICAgIC5fZGVjb2RlKGRhdGEsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBvcCBvYmplY3RcbiAgaWYgKHN0YXRlLm9iaiAmJiBwcmVzZW50KVxuICAgIHJlc3VsdCA9IGlucHV0LmxlYXZlT2JqZWN0KHByZXZPYmopO1xuXG4gIC8vIFNldCBrZXlcbiAgaWYgKHN0YXRlLmtleSAhPT0gbnVsbCAmJiAocmVzdWx0ICE9PSBudWxsIHx8IHByZXNlbnQgPT09IHRydWUpKVxuICAgIGlucHV0LmxlYXZlS2V5KHByZXZLZXksIHN0YXRlLmtleSwgcmVzdWx0KTtcbiAgZWxzZSBpZiAocHJldktleSAhPT0gbnVsbClcbiAgICBpbnB1dC5leGl0S2V5KHByZXZLZXkpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZGVjb2RlR2VuZXJpYyA9IGZ1bmN0aW9uIGRlY29kZUdlbmVyaWModGFnLCBpbnB1dCwgb3B0aW9ucykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgaWYgKHRhZyA9PT0gJ3NlcScgfHwgdGFnID09PSAnc2V0JylcbiAgICByZXR1cm4gbnVsbDtcbiAgaWYgKHRhZyA9PT0gJ3NlcW9mJyB8fCB0YWcgPT09ICdzZXRvZicpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUxpc3QoaW5wdXQsIHRhZywgc3RhdGUuYXJnc1swXSwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZVN0cihpbnB1dCwgdGFnLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnICYmIHN0YXRlLmFyZ3MpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU9iamlkKGlucHV0LCBzdGF0ZS5hcmdzWzBdLCBzdGF0ZS5hcmdzWzFdLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVPYmppZChpbnB1dCwgbnVsbCwgbnVsbCwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnIHx8IHRhZyA9PT0gJ3V0Y3RpbWUnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVUaW1lKGlucHV0LCB0YWcsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdudWxsXycpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU51bGwoaW5wdXQsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdib29sJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlQm9vbChpbnB1dCwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iakRlc2MnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVTdHIoaW5wdXQsIHRhZywgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2ludCcgfHwgdGFnID09PSAnZW51bScpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUludChpbnB1dCwgc3RhdGUuYXJncyAmJiBzdGF0ZS5hcmdzWzBdLCBvcHRpb25zKTtcblxuICBpZiAoc3RhdGUudXNlICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFVzZShzdGF0ZS51c2UsIGlucHV0Ll9yZXBvcnRlclN0YXRlLm9iailcbiAgICAgICAgLl9kZWNvZGUoaW5wdXQsIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBpbnB1dC5lcnJvcigndW5rbm93biB0YWc6ICcgKyB0YWcpO1xuICB9XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZ2V0VXNlID0gZnVuY3Rpb24gX2dldFVzZShlbnRpdHksIG9iaikge1xuXG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgLy8gQ3JlYXRlIGFsdGVyZWQgdXNlIGRlY29kZXIgaWYgaW1wbGljaXQgaXMgc2V0XG4gIHN0YXRlLnVzZURlY29kZXIgPSB0aGlzLl91c2UoZW50aXR5LCBvYmopO1xuICBhc3NlcnQoc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLnBhcmVudCA9PT0gbnVsbCk7XG4gIHN0YXRlLnVzZURlY29kZXIgPSBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuY2hpbGRyZW5bMF07XG4gIGlmIChzdGF0ZS5pbXBsaWNpdCAhPT0gc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmltcGxpY2l0KSB7XG4gICAgc3RhdGUudXNlRGVjb2RlciA9IHN0YXRlLnVzZURlY29kZXIuY2xvbmUoKTtcbiAgICBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQgPSBzdGF0ZS5pbXBsaWNpdDtcbiAgfVxuICByZXR1cm4gc3RhdGUudXNlRGVjb2Rlcjtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9kZWNvZGVDaG9pY2UgPSBmdW5jdGlvbiBkZWNvZGVDaG9pY2UoaW5wdXQsIG9wdGlvbnMpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgdmFyIG1hdGNoID0gZmFsc2U7XG5cbiAgT2JqZWN0LmtleXMoc3RhdGUuY2hvaWNlKS5zb21lKGZ1bmN0aW9uKGtleSkge1xuICAgIHZhciBzYXZlID0gaW5wdXQuc2F2ZSgpO1xuICAgIHZhciBub2RlID0gc3RhdGUuY2hvaWNlW2tleV07XG4gICAgdHJ5IHtcbiAgICAgIHZhciB2YWx1ZSA9IG5vZGUuX2RlY29kZShpbnB1dCwgb3B0aW9ucyk7XG4gICAgICBpZiAoaW5wdXQuaXNFcnJvcih2YWx1ZSkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgcmVzdWx0ID0geyB0eXBlOiBrZXksIHZhbHVlOiB2YWx1ZSB9O1xuICAgICAgbWF0Y2ggPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlucHV0LnJlc3RvcmUoc2F2ZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9LCB0aGlzKTtcblxuICBpZiAoIW1hdGNoKVxuICAgIHJldHVybiBpbnB1dC5lcnJvcignQ2hvaWNlIG5vdCBtYXRjaGVkJyk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vXG4vLyBFbmNvZGluZ1xuLy9cblxuTm9kZS5wcm90b3R5cGUuX2NyZWF0ZUVuY29kZXJCdWZmZXIgPSBmdW5jdGlvbiBjcmVhdGVFbmNvZGVyQnVmZmVyKGRhdGEpIHtcbiAgcmV0dXJuIG5ldyBFbmNvZGVyQnVmZmVyKGRhdGEsIHRoaXMucmVwb3J0ZXIpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCByZXBvcnRlciwgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgaWYgKHN0YXRlWydkZWZhdWx0J10gIT09IG51bGwgJiYgc3RhdGVbJ2RlZmF1bHQnXSA9PT0gZGF0YSlcbiAgICByZXR1cm47XG5cbiAgdmFyIHJlc3VsdCA9IHRoaXMuX2VuY29kZVZhbHVlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpO1xuICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuO1xuXG4gIGlmICh0aGlzLl9za2lwRGVmYXVsdChyZXN1bHQsIHJlcG9ydGVyLCBwYXJlbnQpKVxuICAgIHJldHVybjtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZVZhbHVlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIC8vIERlY29kZSByb290IG5vZGVcbiAgaWYgKHN0YXRlLnBhcmVudCA9PT0gbnVsbClcbiAgICByZXR1cm4gc3RhdGUuY2hpbGRyZW5bMF0uX2VuY29kZShkYXRhLCByZXBvcnRlciB8fCBuZXcgUmVwb3J0ZXIoKSk7XG5cbiAgdmFyIHJlc3VsdCA9IG51bGw7XG5cbiAgLy8gU2V0IHJlcG9ydGVyIHRvIHNoYXJlIGl0IHdpdGggYSBjaGlsZCBjbGFzc1xuICB0aGlzLnJlcG9ydGVyID0gcmVwb3J0ZXI7XG5cbiAgLy8gQ2hlY2sgaWYgZGF0YSBpcyB0aGVyZVxuICBpZiAoc3RhdGUub3B0aW9uYWwgJiYgZGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHN0YXRlWydkZWZhdWx0J10gIT09IG51bGwpXG4gICAgICBkYXRhID0gc3RhdGVbJ2RlZmF1bHQnXVxuICAgIGVsc2VcbiAgICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEVuY29kZSBjaGlsZHJlbiBmaXJzdFxuICB2YXIgY29udGVudCA9IG51bGw7XG4gIHZhciBwcmltaXRpdmUgPSBmYWxzZTtcbiAgaWYgKHN0YXRlLmFueSkge1xuICAgIC8vIEFueXRoaW5nIHRoYXQgd2FzIGdpdmVuIGlzIHRyYW5zbGF0ZWQgdG8gYnVmZmVyXG4gICAgcmVzdWx0ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhKTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5jaG9pY2UpIHtcbiAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDaG9pY2UoZGF0YSwgcmVwb3J0ZXIpO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNvbnRhaW5zKSB7XG4gICAgY29udGVudCA9IHRoaXMuX2dldFVzZShzdGF0ZS5jb250YWlucywgcGFyZW50KS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyKTtcbiAgICBwcmltaXRpdmUgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNoaWxkcmVuKSB7XG4gICAgY29udGVudCA9IHN0YXRlLmNoaWxkcmVuLm1hcChmdW5jdGlvbihjaGlsZCkge1xuICAgICAgaWYgKGNoaWxkLl9iYXNlU3RhdGUudGFnID09PSAnbnVsbF8nKVxuICAgICAgICByZXR1cm4gY2hpbGQuX2VuY29kZShudWxsLCByZXBvcnRlciwgZGF0YSk7XG5cbiAgICAgIGlmIChjaGlsZC5fYmFzZVN0YXRlLmtleSA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdDaGlsZCBzaG91bGQgaGF2ZSBhIGtleScpO1xuICAgICAgdmFyIHByZXZLZXkgPSByZXBvcnRlci5lbnRlcktleShjaGlsZC5fYmFzZVN0YXRlLmtleSk7XG5cbiAgICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpXG4gICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignQ2hpbGQgZXhwZWN0ZWQsIGJ1dCBpbnB1dCBpcyBub3Qgb2JqZWN0Jyk7XG5cbiAgICAgIHZhciByZXMgPSBjaGlsZC5fZW5jb2RlKGRhdGFbY2hpbGQuX2Jhc2VTdGF0ZS5rZXldLCByZXBvcnRlciwgZGF0YSk7XG4gICAgICByZXBvcnRlci5sZWF2ZUtleShwcmV2S2V5KTtcblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9LCB0aGlzKS5maWx0ZXIoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9KTtcbiAgICBjb250ZW50ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihjb250ZW50KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoc3RhdGUudGFnID09PSAnc2Vxb2YnIHx8IHN0YXRlLnRhZyA9PT0gJ3NldG9mJykge1xuICAgICAgLy8gVE9ETyhpbmR1dG55KTogdGhpcyBzaG91bGQgYmUgdGhyb3duIG9uIERTTCBsZXZlbFxuICAgICAgaWYgKCEoc3RhdGUuYXJncyAmJiBzdGF0ZS5hcmdzLmxlbmd0aCA9PT0gMSkpXG4gICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVG9vIG1hbnkgYXJncyBmb3IgOiAnICsgc3RhdGUudGFnKTtcblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ3NlcW9mL3NldG9mLCBidXQgZGF0YSBpcyBub3QgQXJyYXknKTtcblxuICAgICAgdmFyIGNoaWxkID0gdGhpcy5jbG9uZSgpO1xuICAgICAgY2hpbGQuX2Jhc2VTdGF0ZS5pbXBsaWNpdCA9IG51bGw7XG4gICAgICBjb250ZW50ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhLm1hcChmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VXNlKHN0YXRlLmFyZ3NbMF0sIGRhdGEpLl9lbmNvZGUoaXRlbSwgcmVwb3J0ZXIpO1xuICAgICAgfSwgY2hpbGQpKTtcbiAgICB9IGVsc2UgaWYgKHN0YXRlLnVzZSAhPT0gbnVsbCkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5fZ2V0VXNlKHN0YXRlLnVzZSwgcGFyZW50KS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCA9IHRoaXMuX2VuY29kZVByaW1pdGl2ZShzdGF0ZS50YWcsIGRhdGEpO1xuICAgICAgcHJpbWl0aXZlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBFbmNvZGUgZGF0YSBpdHNlbGZcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKCFzdGF0ZS5hbnkgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsKSB7XG4gICAgdmFyIHRhZyA9IHN0YXRlLmltcGxpY2l0ICE9PSBudWxsID8gc3RhdGUuaW1wbGljaXQgOiBzdGF0ZS50YWc7XG4gICAgdmFyIGNscyA9IHN0YXRlLmltcGxpY2l0ID09PSBudWxsID8gJ3VuaXZlcnNhbCcgOiAnY29udGV4dCc7XG5cbiAgICBpZiAodGFnID09PSBudWxsKSB7XG4gICAgICBpZiAoc3RhdGUudXNlID09PSBudWxsKVxuICAgICAgICByZXBvcnRlci5lcnJvcignVGFnIGNvdWxkIGJlIG9taXR0ZWQgb25seSBmb3IgLnVzZSgpJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdGF0ZS51c2UgPT09IG51bGwpXG4gICAgICAgIHJlc3VsdCA9IHRoaXMuX2VuY29kZUNvbXBvc2l0ZSh0YWcsIHByaW1pdGl2ZSwgY2xzLCBjb250ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBXcmFwIGluIGV4cGxpY2l0XG4gIGlmIChzdGF0ZS5leHBsaWNpdCAhPT0gbnVsbClcbiAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDb21wb3NpdGUoc3RhdGUuZXhwbGljaXQsIGZhbHNlLCAnY29udGV4dCcsIHJlc3VsdCk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGVDaG9pY2UgPSBmdW5jdGlvbiBlbmNvZGVDaG9pY2UoZGF0YSwgcmVwb3J0ZXIpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIHZhciBub2RlID0gc3RhdGUuY2hvaWNlW2RhdGEudHlwZV07XG4gIGlmICghbm9kZSkge1xuICAgIGFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGRhdGEudHlwZSArICcgbm90IGZvdW5kIGluICcgK1xuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMoc3RhdGUuY2hvaWNlKSkpO1xuICB9XG4gIHJldHVybiBub2RlLl9lbmNvZGUoZGF0YS52YWx1ZSwgcmVwb3J0ZXIpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZVByaW1pdGl2ZSA9IGZ1bmN0aW9uIGVuY29kZVByaW1pdGl2ZSh0YWcsIGRhdGEpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGlmICgvc3RyJC8udGVzdCh0YWcpKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVTdHIoZGF0YSwgdGFnKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnICYmIHN0YXRlLmFyZ3MpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZU9iamlkKGRhdGEsIHN0YXRlLnJldmVyc2VBcmdzWzBdLCBzdGF0ZS5hcmdzWzFdKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVPYmppZChkYXRhLCBudWxsLCBudWxsKTtcbiAgZWxzZSBpZiAodGFnID09PSAnZ2VudGltZScgfHwgdGFnID09PSAndXRjdGltZScpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZVRpbWUoZGF0YSwgdGFnKTtcbiAgZWxzZSBpZiAodGFnID09PSAnbnVsbF8nKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVOdWxsKCk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2ludCcgfHwgdGFnID09PSAnZW51bScpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZUludChkYXRhLCBzdGF0ZS5hcmdzICYmIHN0YXRlLnJldmVyc2VBcmdzWzBdKTtcbiAgZWxzZSBpZiAodGFnID09PSAnYm9vbCcpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZUJvb2woZGF0YSk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iakRlc2MnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVTdHIoZGF0YSwgdGFnKTtcbiAgZWxzZVxuICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgdGFnOiAnICsgdGFnKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9pc051bXN0ciA9IGZ1bmN0aW9uIGlzTnVtc3RyKHN0cikge1xuICByZXR1cm4gL15bMC05IF0qJC8udGVzdChzdHIpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2lzUHJpbnRzdHIgPSBmdW5jdGlvbiBpc1ByaW50c3RyKHN0cikge1xuICByZXR1cm4gL15bQS1aYS16MC05ICdcXChcXClcXCssXFwtXFwuXFwvOj1cXD9dKiQvLnRlc3Qoc3RyKTtcbn07XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG5mdW5jdGlvbiBSZXBvcnRlcihvcHRpb25zKSB7XG4gIHRoaXMuX3JlcG9ydGVyU3RhdGUgPSB7XG4gICAgb2JqOiBudWxsLFxuICAgIHBhdGg6IFtdLFxuICAgIG9wdGlvbnM6IG9wdGlvbnMgfHwge30sXG4gICAgZXJyb3JzOiBbXVxuICB9O1xufVxuZXhwb3J0cy5SZXBvcnRlciA9IFJlcG9ydGVyO1xuXG5SZXBvcnRlci5wcm90b3R5cGUuaXNFcnJvciA9IGZ1bmN0aW9uIGlzRXJyb3Iob2JqKSB7XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBSZXBvcnRlckVycm9yO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLnNhdmUgPSBmdW5jdGlvbiBzYXZlKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHJldHVybiB7IG9iajogc3RhdGUub2JqLCBwYXRoTGVuOiBzdGF0ZS5wYXRoLmxlbmd0aCB9O1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLnJlc3RvcmUgPSBmdW5jdGlvbiByZXN0b3JlKGRhdGEpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICBzdGF0ZS5vYmogPSBkYXRhLm9iajtcbiAgc3RhdGUucGF0aCA9IHN0YXRlLnBhdGguc2xpY2UoMCwgZGF0YS5wYXRoTGVuKTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5lbnRlcktleSA9IGZ1bmN0aW9uIGVudGVyS2V5KGtleSkge1xuICByZXR1cm4gdGhpcy5fcmVwb3J0ZXJTdGF0ZS5wYXRoLnB1c2goa2V5KTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5leGl0S2V5ID0gZnVuY3Rpb24gZXhpdEtleShpbmRleCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHN0YXRlLnBhdGggPSBzdGF0ZS5wYXRoLnNsaWNlKDAsIGluZGV4IC0gMSk7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUubGVhdmVLZXkgPSBmdW5jdGlvbiBsZWF2ZUtleShpbmRleCwga2V5LCB2YWx1ZSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHRoaXMuZXhpdEtleShpbmRleCk7XG4gIGlmIChzdGF0ZS5vYmogIT09IG51bGwpXG4gICAgc3RhdGUub2JqW2tleV0gPSB2YWx1ZTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5wYXRoID0gZnVuY3Rpb24gcGF0aCgpIHtcbiAgcmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5qb2luKCcvJyk7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZW50ZXJPYmplY3QgPSBmdW5jdGlvbiBlbnRlck9iamVjdCgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICB2YXIgcHJldiA9IHN0YXRlLm9iajtcbiAgc3RhdGUub2JqID0ge307XG4gIHJldHVybiBwcmV2O1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmxlYXZlT2JqZWN0ID0gZnVuY3Rpb24gbGVhdmVPYmplY3QocHJldikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHZhciBub3cgPSBzdGF0ZS5vYmo7XG4gIHN0YXRlLm9iaiA9IHByZXY7XG4gIHJldHVybiBub3c7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbiBlcnJvcihtc2cpIHtcbiAgdmFyIGVycjtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICB2YXIgaW5oZXJpdGVkID0gbXNnIGluc3RhbmNlb2YgUmVwb3J0ZXJFcnJvcjtcbiAgaWYgKGluaGVyaXRlZCkge1xuICAgIGVyciA9IG1zZztcbiAgfSBlbHNlIHtcbiAgICBlcnIgPSBuZXcgUmVwb3J0ZXJFcnJvcihzdGF0ZS5wYXRoLm1hcChmdW5jdGlvbihlbGVtKSB7XG4gICAgICByZXR1cm4gJ1snICsgSlNPTi5zdHJpbmdpZnkoZWxlbSkgKyAnXSc7XG4gICAgfSkuam9pbignJyksIG1zZy5tZXNzYWdlIHx8IG1zZywgbXNnLnN0YWNrKTtcbiAgfVxuXG4gIGlmICghc3RhdGUub3B0aW9ucy5wYXJ0aWFsKVxuICAgIHRocm93IGVycjtcblxuICBpZiAoIWluaGVyaXRlZClcbiAgICBzdGF0ZS5lcnJvcnMucHVzaChlcnIpO1xuXG4gIHJldHVybiBlcnI7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUud3JhcFJlc3VsdCA9IGZ1bmN0aW9uIHdyYXBSZXN1bHQocmVzdWx0KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG4gIGlmICghc3RhdGUub3B0aW9ucy5wYXJ0aWFsKVxuICAgIHJldHVybiByZXN1bHQ7XG5cbiAgcmV0dXJuIHtcbiAgICByZXN1bHQ6IHRoaXMuaXNFcnJvcihyZXN1bHQpID8gbnVsbCA6IHJlc3VsdCxcbiAgICBlcnJvcnM6IHN0YXRlLmVycm9yc1xuICB9O1xufTtcblxuZnVuY3Rpb24gUmVwb3J0ZXJFcnJvcihwYXRoLCBtc2cpIHtcbiAgdGhpcy5wYXRoID0gcGF0aDtcbiAgdGhpcy5yZXRocm93KG1zZyk7XG59O1xuaW5oZXJpdHMoUmVwb3J0ZXJFcnJvciwgRXJyb3IpO1xuXG5SZXBvcnRlckVycm9yLnByb3RvdHlwZS5yZXRocm93ID0gZnVuY3Rpb24gcmV0aHJvdyhtc2cpIHtcbiAgdGhpcy5tZXNzYWdlID0gbXNnICsgJyBhdDogJyArICh0aGlzLnBhdGggfHwgJyhzaGFsbG93KScpO1xuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgUmVwb3J0ZXJFcnJvcik7XG5cbiAgaWYgKCF0aGlzLnN0YWNrKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIElFIG9ubHkgYWRkcyBzdGFjayB3aGVuIHRocm93blxuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMubWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5zdGFjayA9IGUuc3RhY2s7XG4gICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufTtcbiIsInZhciBjb25zdGFudHMgPSByZXF1aXJlKCcuLi9jb25zdGFudHMnKTtcblxuZXhwb3J0cy50YWdDbGFzcyA9IHtcbiAgMDogJ3VuaXZlcnNhbCcsXG4gIDE6ICdhcHBsaWNhdGlvbicsXG4gIDI6ICdjb250ZXh0JyxcbiAgMzogJ3ByaXZhdGUnXG59O1xuZXhwb3J0cy50YWdDbGFzc0J5TmFtZSA9IGNvbnN0YW50cy5fcmV2ZXJzZShleHBvcnRzLnRhZ0NsYXNzKTtcblxuZXhwb3J0cy50YWcgPSB7XG4gIDB4MDA6ICdlbmQnLFxuICAweDAxOiAnYm9vbCcsXG4gIDB4MDI6ICdpbnQnLFxuICAweDAzOiAnYml0c3RyJyxcbiAgMHgwNDogJ29jdHN0cicsXG4gIDB4MDU6ICdudWxsXycsXG4gIDB4MDY6ICdvYmppZCcsXG4gIDB4MDc6ICdvYmpEZXNjJyxcbiAgMHgwODogJ2V4dGVybmFsJyxcbiAgMHgwOTogJ3JlYWwnLFxuICAweDBhOiAnZW51bScsXG4gIDB4MGI6ICdlbWJlZCcsXG4gIDB4MGM6ICd1dGY4c3RyJyxcbiAgMHgwZDogJ3JlbGF0aXZlT2lkJyxcbiAgMHgxMDogJ3NlcScsXG4gIDB4MTE6ICdzZXQnLFxuICAweDEyOiAnbnVtc3RyJyxcbiAgMHgxMzogJ3ByaW50c3RyJyxcbiAgMHgxNDogJ3Q2MXN0cicsXG4gIDB4MTU6ICd2aWRlb3N0cicsXG4gIDB4MTY6ICdpYTVzdHInLFxuICAweDE3OiAndXRjdGltZScsXG4gIDB4MTg6ICdnZW50aW1lJyxcbiAgMHgxOTogJ2dyYXBoc3RyJyxcbiAgMHgxYTogJ2lzbzY0NnN0cicsXG4gIDB4MWI6ICdnZW5zdHInLFxuICAweDFjOiAndW5pc3RyJyxcbiAgMHgxZDogJ2NoYXJzdHInLFxuICAweDFlOiAnYm1wc3RyJ1xufTtcbmV4cG9ydHMudGFnQnlOYW1lID0gY29uc3RhbnRzLl9yZXZlcnNlKGV4cG9ydHMudGFnKTtcbiIsInZhciBjb25zdGFudHMgPSBleHBvcnRzO1xuXG4vLyBIZWxwZXJcbmNvbnN0YW50cy5fcmV2ZXJzZSA9IGZ1bmN0aW9uIHJldmVyc2UobWFwKSB7XG4gIHZhciByZXMgPSB7fTtcblxuICBPYmplY3Qua2V5cyhtYXApLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgLy8gQ29udmVydCBrZXkgdG8gaW50ZWdlciBpZiBpdCBpcyBzdHJpbmdpZmllZFxuICAgIGlmICgoa2V5IHwgMCkgPT0ga2V5KVxuICAgICAga2V5ID0ga2V5IHwgMDtcblxuICAgIHZhciB2YWx1ZSA9IG1hcFtrZXldO1xuICAgIHJlc1t2YWx1ZV0gPSBrZXk7XG4gIH0pO1xuXG4gIHJldHVybiByZXM7XG59O1xuXG5jb25zdGFudHMuZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBhc24xID0gcmVxdWlyZSgnLi4vLi4vYXNuMScpO1xudmFyIGJhc2UgPSBhc24xLmJhc2U7XG52YXIgYmlnbnVtID0gYXNuMS5iaWdudW07XG5cbi8vIEltcG9ydCBERVIgY29uc3RhbnRzXG52YXIgZGVyID0gYXNuMS5jb25zdGFudHMuZGVyO1xuXG5mdW5jdGlvbiBERVJEZWNvZGVyKGVudGl0eSkge1xuICB0aGlzLmVuYyA9ICdkZXInO1xuICB0aGlzLm5hbWUgPSBlbnRpdHkubmFtZTtcbiAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XG5cbiAgLy8gQ29uc3RydWN0IGJhc2UgdHJlZVxuICB0aGlzLnRyZWUgPSBuZXcgREVSTm9kZSgpO1xuICB0aGlzLnRyZWUuX2luaXQoZW50aXR5LmJvZHkpO1xufTtcbm1vZHVsZS5leHBvcnRzID0gREVSRGVjb2RlcjtcblxuREVSRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGRhdGEsIG9wdGlvbnMpIHtcbiAgaWYgKCEoZGF0YSBpbnN0YW5jZW9mIGJhc2UuRGVjb2RlckJ1ZmZlcikpXG4gICAgZGF0YSA9IG5ldyBiYXNlLkRlY29kZXJCdWZmZXIoZGF0YSwgb3B0aW9ucyk7XG5cbiAgcmV0dXJuIHRoaXMudHJlZS5fZGVjb2RlKGRhdGEsIG9wdGlvbnMpO1xufTtcblxuLy8gVHJlZSBtZXRob2RzXG5cbmZ1bmN0aW9uIERFUk5vZGUocGFyZW50KSB7XG4gIGJhc2UuTm9kZS5jYWxsKHRoaXMsICdkZXInLCBwYXJlbnQpO1xufVxuaW5oZXJpdHMoREVSTm9kZSwgYmFzZS5Ob2RlKTtcblxuREVSTm9kZS5wcm90b3R5cGUuX3BlZWtUYWcgPSBmdW5jdGlvbiBwZWVrVGFnKGJ1ZmZlciwgdGFnLCBhbnkpIHtcbiAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBzdGF0ZSA9IGJ1ZmZlci5zYXZlKCk7XG4gIHZhciBkZWNvZGVkVGFnID0gZGVyRGVjb2RlVGFnKGJ1ZmZlciwgJ0ZhaWxlZCB0byBwZWVrIHRhZzogXCInICsgdGFnICsgJ1wiJyk7XG4gIGlmIChidWZmZXIuaXNFcnJvcihkZWNvZGVkVGFnKSlcbiAgICByZXR1cm4gZGVjb2RlZFRhZztcblxuICBidWZmZXIucmVzdG9yZShzdGF0ZSk7XG5cbiAgcmV0dXJuIGRlY29kZWRUYWcudGFnID09PSB0YWcgfHwgZGVjb2RlZFRhZy50YWdTdHIgPT09IHRhZyB8fFxuICAgIChkZWNvZGVkVGFnLnRhZ1N0ciArICdvZicpID09PSB0YWcgfHwgYW55O1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVRhZyA9IGZ1bmN0aW9uIGRlY29kZVRhZyhidWZmZXIsIHRhZywgYW55KSB7XG4gIHZhciBkZWNvZGVkVGFnID0gZGVyRGVjb2RlVGFnKGJ1ZmZlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBkZWNvZGUgdGFnIG9mIFwiJyArIHRhZyArICdcIicpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IoZGVjb2RlZFRhZykpXG4gICAgcmV0dXJuIGRlY29kZWRUYWc7XG5cbiAgdmFyIGxlbiA9IGRlckRlY29kZUxlbihidWZmZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZFRhZy5wcmltaXRpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBnZXQgbGVuZ3RoIG9mIFwiJyArIHRhZyArICdcIicpO1xuXG4gIC8vIEZhaWx1cmVcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKGxlbikpXG4gICAgcmV0dXJuIGxlbjtcblxuICBpZiAoIWFueSAmJlxuICAgICAgZGVjb2RlZFRhZy50YWcgIT09IHRhZyAmJlxuICAgICAgZGVjb2RlZFRhZy50YWdTdHIgIT09IHRhZyAmJlxuICAgICAgZGVjb2RlZFRhZy50YWdTdHIgKyAnb2YnICE9PSB0YWcpIHtcbiAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdGYWlsZWQgdG8gbWF0Y2ggdGFnOiBcIicgKyB0YWcgKyAnXCInKTtcbiAgfVxuXG4gIGlmIChkZWNvZGVkVGFnLnByaW1pdGl2ZSB8fCBsZW4gIT09IG51bGwpXG4gICAgcmV0dXJuIGJ1ZmZlci5za2lwKGxlbiwgJ0ZhaWxlZCB0byBtYXRjaCBib2R5IG9mOiBcIicgKyB0YWcgKyAnXCInKTtcblxuICAvLyBJbmRlZmluaXRlIGxlbmd0aC4uLiBmaW5kIEVORCB0YWdcbiAgdmFyIHN0YXRlID0gYnVmZmVyLnNhdmUoKTtcbiAgdmFyIHJlcyA9IHRoaXMuX3NraXBVbnRpbEVuZChcbiAgICAgIGJ1ZmZlcixcbiAgICAgICdGYWlsZWQgdG8gc2tpcCBpbmRlZmluaXRlIGxlbmd0aCBib2R5OiBcIicgKyB0aGlzLnRhZyArICdcIicpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSlcbiAgICByZXR1cm4gcmVzO1xuXG4gIGxlbiA9IGJ1ZmZlci5vZmZzZXQgLSBzdGF0ZS5vZmZzZXQ7XG4gIGJ1ZmZlci5yZXN0b3JlKHN0YXRlKTtcbiAgcmV0dXJuIGJ1ZmZlci5za2lwKGxlbiwgJ0ZhaWxlZCB0byBtYXRjaCBib2R5IG9mOiBcIicgKyB0YWcgKyAnXCInKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9za2lwVW50aWxFbmQgPSBmdW5jdGlvbiBza2lwVW50aWxFbmQoYnVmZmVyLCBmYWlsKSB7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgdmFyIHRhZyA9IGRlckRlY29kZVRhZyhidWZmZXIsIGZhaWwpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcih0YWcpKVxuICAgICAgcmV0dXJuIHRhZztcbiAgICB2YXIgbGVuID0gZGVyRGVjb2RlTGVuKGJ1ZmZlciwgdGFnLnByaW1pdGl2ZSwgZmFpbCk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKGxlbikpXG4gICAgICByZXR1cm4gbGVuO1xuXG4gICAgdmFyIHJlcztcbiAgICBpZiAodGFnLnByaW1pdGl2ZSB8fCBsZW4gIT09IG51bGwpXG4gICAgICByZXMgPSBidWZmZXIuc2tpcChsZW4pXG4gICAgZWxzZVxuICAgICAgcmVzID0gdGhpcy5fc2tpcFVudGlsRW5kKGJ1ZmZlciwgZmFpbCk7XG5cbiAgICAvLyBGYWlsdXJlXG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHJlcykpXG4gICAgICByZXR1cm4gcmVzO1xuXG4gICAgaWYgKHRhZy50YWdTdHIgPT09ICdlbmQnKVxuICAgICAgYnJlYWs7XG4gIH1cbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVMaXN0ID0gZnVuY3Rpb24gZGVjb2RlTGlzdChidWZmZXIsIHRhZywgZGVjb2RlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgd2hpbGUgKCFidWZmZXIuaXNFbXB0eSgpKSB7XG4gICAgdmFyIHBvc3NpYmxlRW5kID0gdGhpcy5fcGVla1RhZyhidWZmZXIsICdlbmQnKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IocG9zc2libGVFbmQpKVxuICAgICAgcmV0dXJuIHBvc3NpYmxlRW5kO1xuXG4gICAgdmFyIHJlcyA9IGRlY29kZXIuZGVjb2RlKGJ1ZmZlciwgJ2RlcicsIG9wdGlvbnMpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcihyZXMpICYmIHBvc3NpYmxlRW5kKVxuICAgICAgYnJlYWs7XG4gICAgcmVzdWx0LnB1c2gocmVzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVN0ciA9IGZ1bmN0aW9uIGRlY29kZVN0cihidWZmZXIsIHRhZykge1xuICBpZiAodGFnID09PSAnYml0c3RyJykge1xuICAgIHZhciB1bnVzZWQgPSBidWZmZXIucmVhZFVJbnQ4KCk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHVudXNlZCkpXG4gICAgICByZXR1cm4gdW51c2VkO1xuICAgIHJldHVybiB7IHVudXNlZDogdW51c2VkLCBkYXRhOiBidWZmZXIucmF3KCkgfTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdibXBzdHInKSB7XG4gICAgdmFyIHJhdyA9IGJ1ZmZlci5yYXcoKTtcbiAgICBpZiAocmF3Lmxlbmd0aCAlIDIgPT09IDEpXG4gICAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogYm1wc3RyIGxlbmd0aCBtaXNtYXRjaCcpO1xuXG4gICAgdmFyIHN0ciA9ICcnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmF3Lmxlbmd0aCAvIDI7IGkrKykge1xuICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUocmF3LnJlYWRVSW50MTZCRShpICogMikpO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ251bXN0cicpIHtcbiAgICB2YXIgbnVtc3RyID0gYnVmZmVyLnJhdygpLnRvU3RyaW5nKCdhc2NpaScpO1xuICAgIGlmICghdGhpcy5faXNOdW1zdHIobnVtc3RyKSkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVtc3RyIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMnKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bXN0cjtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdvY3RzdHInKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5yYXcoKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdvYmpEZXNjJykge1xuICAgIHJldHVybiBidWZmZXIucmF3KCk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAncHJpbnRzdHInKSB7XG4gICAgdmFyIHByaW50c3RyID0gYnVmZmVyLnJhdygpLnRvU3RyaW5nKCdhc2NpaScpO1xuICAgIGlmICghdGhpcy5faXNQcmludHN0cihwcmludHN0cikpIHtcbiAgICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0RlY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW50c3RyIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMnKTtcbiAgICB9XG4gICAgcmV0dXJuIHByaW50c3RyO1xuICB9IGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpIHtcbiAgICByZXR1cm4gYnVmZmVyLnJhdygpLnRvU3RyaW5nKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgKyB0YWcgKyAnIHVuc3VwcG9ydGVkJyk7XG4gIH1cbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVPYmppZCA9IGZ1bmN0aW9uIGRlY29kZU9iamlkKGJ1ZmZlciwgdmFsdWVzLCByZWxhdGl2ZSkge1xuICB2YXIgcmVzdWx0O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcbiAgdmFyIGlkZW50ID0gMDtcbiAgd2hpbGUgKCFidWZmZXIuaXNFbXB0eSgpKSB7XG4gICAgdmFyIHN1YmlkZW50ID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgIGlkZW50IDw8PSA3O1xuICAgIGlkZW50IHw9IHN1YmlkZW50ICYgMHg3ZjtcbiAgICBpZiAoKHN1YmlkZW50ICYgMHg4MCkgPT09IDApIHtcbiAgICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnQpO1xuICAgICAgaWRlbnQgPSAwO1xuICAgIH1cbiAgfVxuICBpZiAoc3ViaWRlbnQgJiAweDgwKVxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnQpO1xuXG4gIHZhciBmaXJzdCA9IChpZGVudGlmaWVyc1swXSAvIDQwKSB8IDA7XG4gIHZhciBzZWNvbmQgPSBpZGVudGlmaWVyc1swXSAlIDQwO1xuXG4gIGlmIChyZWxhdGl2ZSlcbiAgICByZXN1bHQgPSBpZGVudGlmaWVycztcbiAgZWxzZVxuICAgIHJlc3VsdCA9IFtmaXJzdCwgc2Vjb25kXS5jb25jYXQoaWRlbnRpZmllcnMuc2xpY2UoMSkpO1xuXG4gIGlmICh2YWx1ZXMpIHtcbiAgICB2YXIgdG1wID0gdmFsdWVzW3Jlc3VsdC5qb2luKCcgJyldO1xuICAgIGlmICh0bXAgPT09IHVuZGVmaW5lZClcbiAgICAgIHRtcCA9IHZhbHVlc1tyZXN1bHQuam9pbignLicpXTtcbiAgICBpZiAodG1wICE9PSB1bmRlZmluZWQpXG4gICAgICByZXN1bHQgPSB0bXA7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVRpbWUgPSBmdW5jdGlvbiBkZWNvZGVUaW1lKGJ1ZmZlciwgdGFnKSB7XG4gIHZhciBzdHIgPSBidWZmZXIucmF3KCkudG9TdHJpbmcoKTtcbiAgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnKSB7XG4gICAgdmFyIHllYXIgPSBzdHIuc2xpY2UoMCwgNCkgfCAwO1xuICAgIHZhciBtb24gPSBzdHIuc2xpY2UoNCwgNikgfCAwO1xuICAgIHZhciBkYXkgPSBzdHIuc2xpY2UoNiwgOCkgfCAwO1xuICAgIHZhciBob3VyID0gc3RyLnNsaWNlKDgsIDEwKSB8IDA7XG4gICAgdmFyIG1pbiA9IHN0ci5zbGljZSgxMCwgMTIpIHwgMDtcbiAgICB2YXIgc2VjID0gc3RyLnNsaWNlKDEyLCAxNCkgfCAwO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3V0Y3RpbWUnKSB7XG4gICAgdmFyIHllYXIgPSBzdHIuc2xpY2UoMCwgMikgfCAwO1xuICAgIHZhciBtb24gPSBzdHIuc2xpY2UoMiwgNCkgfCAwO1xuICAgIHZhciBkYXkgPSBzdHIuc2xpY2UoNCwgNikgfCAwO1xuICAgIHZhciBob3VyID0gc3RyLnNsaWNlKDYsIDgpIHwgMDtcbiAgICB2YXIgbWluID0gc3RyLnNsaWNlKDgsIDEwKSB8IDA7XG4gICAgdmFyIHNlYyA9IHN0ci5zbGljZSgxMCwgMTIpIHwgMDtcbiAgICBpZiAoeWVhciA8IDcwKVxuICAgICAgeWVhciA9IDIwMDAgKyB5ZWFyO1xuICAgIGVsc2VcbiAgICAgIHllYXIgPSAxOTAwICsgeWVhcjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyAnICsgdGFnICsgJyB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Jyk7XG4gIH1cblxuICByZXR1cm4gRGF0ZS5VVEMoeWVhciwgbW9uIC0gMSwgZGF5LCBob3VyLCBtaW4sIHNlYywgMCk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlTnVsbCA9IGZ1bmN0aW9uIGRlY29kZU51bGwoYnVmZmVyKSB7XG4gIHJldHVybiBudWxsO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZUJvb2wgPSBmdW5jdGlvbiBkZWNvZGVCb29sKGJ1ZmZlcikge1xuICB2YXIgcmVzID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSlcbiAgICByZXR1cm4gcmVzO1xuICBlbHNlXG4gICAgcmV0dXJuIHJlcyAhPT0gMDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVJbnQgPSBmdW5jdGlvbiBkZWNvZGVJbnQoYnVmZmVyLCB2YWx1ZXMpIHtcbiAgLy8gQmlnaW50LCByZXR1cm4gYXMgaXQgaXMgKGFzc3VtZSBiaWcgZW5kaWFuKVxuICB2YXIgcmF3ID0gYnVmZmVyLnJhdygpO1xuICB2YXIgcmVzID0gbmV3IGJpZ251bShyYXcpO1xuXG4gIGlmICh2YWx1ZXMpXG4gICAgcmVzID0gdmFsdWVzW3Jlcy50b1N0cmluZygxMCldIHx8IHJlcztcblxuICByZXR1cm4gcmVzO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX3VzZSA9IGZ1bmN0aW9uIHVzZShlbnRpdHksIG9iaikge1xuICBpZiAodHlwZW9mIGVudGl0eSA9PT0gJ2Z1bmN0aW9uJylcbiAgICBlbnRpdHkgPSBlbnRpdHkob2JqKTtcbiAgcmV0dXJuIGVudGl0eS5fZ2V0RGVjb2RlcignZGVyJykudHJlZTtcbn07XG5cbi8vIFV0aWxpdHkgbWV0aG9kc1xuXG5mdW5jdGlvbiBkZXJEZWNvZGVUYWcoYnVmLCBmYWlsKSB7XG4gIHZhciB0YWcgPSBidWYucmVhZFVJbnQ4KGZhaWwpO1xuICBpZiAoYnVmLmlzRXJyb3IodGFnKSlcbiAgICByZXR1cm4gdGFnO1xuXG4gIHZhciBjbHMgPSBkZXIudGFnQ2xhc3NbdGFnID4+IDZdO1xuICB2YXIgcHJpbWl0aXZlID0gKHRhZyAmIDB4MjApID09PSAwO1xuXG4gIC8vIE11bHRpLW9jdGV0IHRhZyAtIGxvYWRcbiAgaWYgKCh0YWcgJiAweDFmKSA9PT0gMHgxZikge1xuICAgIHZhciBvY3QgPSB0YWc7XG4gICAgdGFnID0gMDtcbiAgICB3aGlsZSAoKG9jdCAmIDB4ODApID09PSAweDgwKSB7XG4gICAgICBvY3QgPSBidWYucmVhZFVJbnQ4KGZhaWwpO1xuICAgICAgaWYgKGJ1Zi5pc0Vycm9yKG9jdCkpXG4gICAgICAgIHJldHVybiBvY3Q7XG5cbiAgICAgIHRhZyA8PD0gNztcbiAgICAgIHRhZyB8PSBvY3QgJiAweDdmO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0YWcgJj0gMHgxZjtcbiAgfVxuICB2YXIgdGFnU3RyID0gZGVyLnRhZ1t0YWddO1xuXG4gIHJldHVybiB7XG4gICAgY2xzOiBjbHMsXG4gICAgcHJpbWl0aXZlOiBwcmltaXRpdmUsXG4gICAgdGFnOiB0YWcsXG4gICAgdGFnU3RyOiB0YWdTdHJcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGVyRGVjb2RlTGVuKGJ1ZiwgcHJpbWl0aXZlLCBmYWlsKSB7XG4gIHZhciBsZW4gPSBidWYucmVhZFVJbnQ4KGZhaWwpO1xuICBpZiAoYnVmLmlzRXJyb3IobGVuKSlcbiAgICByZXR1cm4gbGVuO1xuXG4gIC8vIEluZGVmaW5pdGUgZm9ybVxuICBpZiAoIXByaW1pdGl2ZSAmJiBsZW4gPT09IDB4ODApXG4gICAgcmV0dXJuIG51bGw7XG5cbiAgLy8gRGVmaW5pdGUgZm9ybVxuICBpZiAoKGxlbiAmIDB4ODApID09PSAwKSB7XG4gICAgLy8gU2hvcnQgZm9ybVxuICAgIHJldHVybiBsZW47XG4gIH1cblxuICAvLyBMb25nIGZvcm1cbiAgdmFyIG51bSA9IGxlbiAmIDB4N2Y7XG4gIGlmIChudW0gPiA0KVxuICAgIHJldHVybiBidWYuZXJyb3IoJ2xlbmd0aCBvY3RlY3QgaXMgdG9vIGxvbmcnKTtcblxuICBsZW4gPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG51bTsgaSsrKSB7XG4gICAgbGVuIDw8PSA4O1xuICAgIHZhciBqID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgICBpZiAoYnVmLmlzRXJyb3IoaikpXG4gICAgICByZXR1cm4gajtcbiAgICBsZW4gfD0gajtcbiAgfVxuXG4gIHJldHVybiBsZW47XG59XG4iLCJ2YXIgZGVjb2RlcnMgPSBleHBvcnRzO1xuXG5kZWNvZGVycy5kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuZGVjb2RlcnMucGVtID0gcmVxdWlyZSgnLi9wZW0nKTtcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG52YXIgREVSRGVjb2RlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG5cbmZ1bmN0aW9uIFBFTURlY29kZXIoZW50aXR5KSB7XG4gIERFUkRlY29kZXIuY2FsbCh0aGlzLCBlbnRpdHkpO1xuICB0aGlzLmVuYyA9ICdwZW0nO1xufTtcbmluaGVyaXRzKFBFTURlY29kZXIsIERFUkRlY29kZXIpO1xubW9kdWxlLmV4cG9ydHMgPSBQRU1EZWNvZGVyO1xuXG5QRU1EZWNvZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoZGF0YSwgb3B0aW9ucykge1xuICB2YXIgbGluZXMgPSBkYXRhLnRvU3RyaW5nKCkuc3BsaXQoL1tcXHJcXG5dKy9nKTtcblxuICB2YXIgbGFiZWwgPSBvcHRpb25zLmxhYmVsLnRvVXBwZXJDYXNlKCk7XG5cbiAgdmFyIHJlID0gL14tLS0tLShCRUdJTnxFTkQpIChbXi1dKyktLS0tLSQvO1xuICB2YXIgc3RhcnQgPSAtMTtcbiAgdmFyIGVuZCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG1hdGNoID0gbGluZXNbaV0ubWF0Y2gocmUpO1xuICAgIGlmIChtYXRjaCA9PT0gbnVsbClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgaWYgKG1hdGNoWzJdICE9PSBsYWJlbClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgaWYgKHN0YXJ0ID09PSAtMSkge1xuICAgICAgaWYgKG1hdGNoWzFdICE9PSAnQkVHSU4nKVxuICAgICAgICBicmVhaztcbiAgICAgIHN0YXJ0ID0gaTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG1hdGNoWzFdICE9PSAnRU5EJylcbiAgICAgICAgYnJlYWs7XG4gICAgICBlbmQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChzdGFydCA9PT0gLTEgfHwgZW5kID09PSAtMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BFTSBzZWN0aW9uIG5vdCBmb3VuZCBmb3I6ICcgKyBsYWJlbCk7XG5cbiAgdmFyIGJhc2U2NCA9IGxpbmVzLnNsaWNlKHN0YXJ0ICsgMSwgZW5kKS5qb2luKCcnKTtcbiAgLy8gUmVtb3ZlIGV4Y2Vzc2l2ZSBzeW1ib2xzXG4gIGJhc2U2NC5yZXBsYWNlKC9bXmEtejAtOVxcK1xcLz1dKy9naSwgJycpO1xuXG4gIHZhciBpbnB1dCA9IG5ldyBCdWZmZXIoYmFzZTY0LCAnYmFzZTY0Jyk7XG4gIHJldHVybiBERVJEZWNvZGVyLnByb3RvdHlwZS5kZWNvZGUuY2FsbCh0aGlzLCBpbnB1dCwgb3B0aW9ucyk7XG59O1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG5cbnZhciBhc24xID0gcmVxdWlyZSgnLi4vLi4vYXNuMScpO1xudmFyIGJhc2UgPSBhc24xLmJhc2U7XG5cbi8vIEltcG9ydCBERVIgY29uc3RhbnRzXG52YXIgZGVyID0gYXNuMS5jb25zdGFudHMuZGVyO1xuXG5mdW5jdGlvbiBERVJFbmNvZGVyKGVudGl0eSkge1xuICB0aGlzLmVuYyA9ICdkZXInO1xuICB0aGlzLm5hbWUgPSBlbnRpdHkubmFtZTtcbiAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XG5cbiAgLy8gQ29uc3RydWN0IGJhc2UgdHJlZVxuICB0aGlzLnRyZWUgPSBuZXcgREVSTm9kZSgpO1xuICB0aGlzLnRyZWUuX2luaXQoZW50aXR5LmJvZHkpO1xufTtcbm1vZHVsZS5leHBvcnRzID0gREVSRW5jb2RlcjtcblxuREVSRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIHJlcG9ydGVyKSB7XG4gIHJldHVybiB0aGlzLnRyZWUuX2VuY29kZShkYXRhLCByZXBvcnRlcikuam9pbigpO1xufTtcblxuLy8gVHJlZSBtZXRob2RzXG5cbmZ1bmN0aW9uIERFUk5vZGUocGFyZW50KSB7XG4gIGJhc2UuTm9kZS5jYWxsKHRoaXMsICdkZXInLCBwYXJlbnQpO1xufVxuaW5oZXJpdHMoREVSTm9kZSwgYmFzZS5Ob2RlKTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZUNvbXBvc2l0ZSA9IGZ1bmN0aW9uIGVuY29kZUNvbXBvc2l0ZSh0YWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50KSB7XG4gIHZhciBlbmNvZGVkVGFnID0gZW5jb2RlVGFnKHRhZywgcHJpbWl0aXZlLCBjbHMsIHRoaXMucmVwb3J0ZXIpO1xuXG4gIC8vIFNob3J0IGZvcm1cbiAgaWYgKGNvbnRlbnQubGVuZ3RoIDwgMHg4MCkge1xuICAgIHZhciBoZWFkZXIgPSBuZXcgQnVmZmVyKDIpO1xuICAgIGhlYWRlclswXSA9IGVuY29kZWRUYWc7XG4gICAgaGVhZGVyWzFdID0gY29udGVudC5sZW5ndGg7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWyBoZWFkZXIsIGNvbnRlbnQgXSk7XG4gIH1cblxuICAvLyBMb25nIGZvcm1cbiAgLy8gQ291bnQgb2N0ZXRzIHJlcXVpcmVkIHRvIHN0b3JlIGxlbmd0aFxuICB2YXIgbGVuT2N0ZXRzID0gMTtcbiAgZm9yICh2YXIgaSA9IGNvbnRlbnQubGVuZ3RoOyBpID49IDB4MTAwOyBpID4+PSA4KVxuICAgIGxlbk9jdGV0cysrO1xuXG4gIHZhciBoZWFkZXIgPSBuZXcgQnVmZmVyKDEgKyAxICsgbGVuT2N0ZXRzKTtcbiAgaGVhZGVyWzBdID0gZW5jb2RlZFRhZztcbiAgaGVhZGVyWzFdID0gMHg4MCB8IGxlbk9jdGV0cztcblxuICBmb3IgKHZhciBpID0gMSArIGxlbk9jdGV0cywgaiA9IGNvbnRlbnQubGVuZ3RoOyBqID4gMDsgaS0tLCBqID4+PSA4KVxuICAgIGhlYWRlcltpXSA9IGogJiAweGZmO1xuXG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgaGVhZGVyLCBjb250ZW50IF0pO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZVN0ciA9IGZ1bmN0aW9uIGVuY29kZVN0cihzdHIsIHRhZykge1xuICBpZiAodGFnID09PSAnYml0c3RyJykge1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgc3RyLnVudXNlZCB8IDAsIHN0ci5kYXRhIF0pO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2JtcHN0cicpIHtcbiAgICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihzdHIubGVuZ3RoICogMik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGJ1Zi53cml0ZVVJbnQxNkJFKHN0ci5jaGFyQ29kZUF0KGkpLCBpICogMik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKGJ1Zik7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnbnVtc3RyJykge1xuICAgIGlmICghdGhpcy5faXNOdW1zdHIoc3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ0VuY29kaW5nIG9mIHN0cmluZyB0eXBlOiBudW1zdHIgc3VwcG9ydHMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25seSBkaWdpdHMgYW5kIHNwYWNlJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHN0cik7XG4gIH0gZWxzZSBpZiAodGFnID09PSAncHJpbnRzdHInKSB7XG4gICAgaWYgKCF0aGlzLl9pc1ByaW50c3RyKHN0cikpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogcHJpbnRzdHIgc3VwcG9ydHMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25seSBsYXRpbiB1cHBlciBhbmQgbG93ZXIgY2FzZSBsZXR0ZXJzLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaWdpdHMsIHNwYWNlLCBhcG9zdHJvcGhlLCBsZWZ0IGFuZCByaWd0aCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJlbnRoZXNpcywgcGx1cyBzaWduLCBjb21tYSwgaHlwaGVuLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb3QsIHNsYXNoLCBjb2xvbiwgZXF1YWwgc2lnbiwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXVlc3Rpb24gbWFyaycpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ29iakRlc2MnKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoc3RyKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgKyB0YWcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgdW5zdXBwb3J0ZWQnKTtcbiAgfVxufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZU9iamlkID0gZnVuY3Rpb24gZW5jb2RlT2JqaWQoaWQsIHZhbHVlcywgcmVsYXRpdmUpIHtcbiAgaWYgKHR5cGVvZiBpZCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoIXZhbHVlcylcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdzdHJpbmcgb2JqaWQgZ2l2ZW4sIGJ1dCBubyB2YWx1ZXMgbWFwIGZvdW5kJyk7XG4gICAgaWYgKCF2YWx1ZXMuaGFzT3duUHJvcGVydHkoaWQpKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ29iamlkIG5vdCBmb3VuZCBpbiB2YWx1ZXMgbWFwJyk7XG4gICAgaWQgPSB2YWx1ZXNbaWRdLnNwbGl0KC9bXFxzXFwuXSsvZyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZC5sZW5ndGg7IGkrKylcbiAgICAgIGlkW2ldIHw9IDA7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpZCkpIHtcbiAgICBpZCA9IGlkLnNsaWNlKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZC5sZW5ndGg7IGkrKylcbiAgICAgIGlkW2ldIHw9IDA7XG4gIH1cblxuICBpZiAoIUFycmF5LmlzQXJyYXkoaWQpKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ29iamlkKCkgc2hvdWxkIGJlIGVpdGhlciBhcnJheSBvciBzdHJpbmcsICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnb3Q6ICcgKyBKU09OLnN0cmluZ2lmeShpZCkpO1xuICB9XG5cbiAgaWYgKCFyZWxhdGl2ZSkge1xuICAgIGlmIChpZFsxXSA+PSA0MClcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdTZWNvbmQgb2JqaWQgaWRlbnRpZmllciBPT0InKTtcbiAgICBpZC5zcGxpY2UoMCwgMiwgaWRbMF0gKiA0MCArIGlkWzFdKTtcbiAgfVxuXG4gIC8vIENvdW50IG51bWJlciBvZiBvY3RldHNcbiAgdmFyIHNpemUgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGlkLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGlkZW50ID0gaWRbaV07XG4gICAgZm9yIChzaXplKys7IGlkZW50ID49IDB4ODA7IGlkZW50ID4+PSA3KVxuICAgICAgc2l6ZSsrO1xuICB9XG5cbiAgdmFyIG9iamlkID0gbmV3IEJ1ZmZlcihzaXplKTtcbiAgdmFyIG9mZnNldCA9IG9iamlkLmxlbmd0aCAtIDE7XG4gIGZvciAodmFyIGkgPSBpZC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBpZGVudCA9IGlkW2ldO1xuICAgIG9iamlkW29mZnNldC0tXSA9IGlkZW50ICYgMHg3ZjtcbiAgICB3aGlsZSAoKGlkZW50ID4+PSA3KSA+IDApXG4gICAgICBvYmppZFtvZmZzZXQtLV0gPSAweDgwIHwgKGlkZW50ICYgMHg3Zik7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihvYmppZCk7XG59O1xuXG5mdW5jdGlvbiB0d28obnVtKSB7XG4gIGlmIChudW0gPCAxMClcbiAgICByZXR1cm4gJzAnICsgbnVtO1xuICBlbHNlXG4gICAgcmV0dXJuIG51bTtcbn1cblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZVRpbWUgPSBmdW5jdGlvbiBlbmNvZGVUaW1lKHRpbWUsIHRhZykge1xuICB2YXIgc3RyO1xuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHRpbWUpO1xuXG4gIGlmICh0YWcgPT09ICdnZW50aW1lJykge1xuICAgIHN0ciA9IFtcbiAgICAgIHR3byhkYXRlLmdldEZ1bGxZZWFyKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDTW9udGgoKSArIDEpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDRGF0ZSgpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ0hvdXJzKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDTWludXRlcygpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ1NlY29uZHMoKSksXG4gICAgICAnWidcbiAgICBdLmpvaW4oJycpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3V0Y3RpbWUnKSB7XG4gICAgc3RyID0gW1xuICAgICAgdHdvKGRhdGUuZ2V0RnVsbFllYXIoKSAlIDEwMCksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNb250aCgpICsgMSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENEYXRlKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDSG91cnMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNaW51dGVzKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDU2Vjb25kcygpKSxcbiAgICAgICdaJ1xuICAgIF0uam9pbignJyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5yZXBvcnRlci5lcnJvcignRW5jb2RpbmcgJyArIHRhZyArICcgdGltZSBpcyBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX2VuY29kZVN0cihzdHIsICdvY3RzdHInKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVOdWxsID0gZnVuY3Rpb24gZW5jb2RlTnVsbCgpIHtcbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoJycpO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZUludCA9IGZ1bmN0aW9uIGVuY29kZUludChudW0sIHZhbHVlcykge1xuICBpZiAodHlwZW9mIG51bSA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoIXZhbHVlcylcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdTdHJpbmcgaW50IG9yIGVudW0gZ2l2ZW4sIGJ1dCBubyB2YWx1ZXMgbWFwJyk7XG4gICAgaWYgKCF2YWx1ZXMuaGFzT3duUHJvcGVydHkobnVtKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ1ZhbHVlcyBtYXAgZG9lc25cXCd0IGNvbnRhaW46ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkobnVtKSk7XG4gICAgfVxuICAgIG51bSA9IHZhbHVlc1tudW1dO1xuICB9XG5cbiAgLy8gQmlnbnVtLCBhc3N1bWUgYmlnIGVuZGlhblxuICBpZiAodHlwZW9mIG51bSAhPT0gJ251bWJlcicgJiYgIUJ1ZmZlci5pc0J1ZmZlcihudW0pKSB7XG4gICAgdmFyIG51bUFycmF5ID0gbnVtLnRvQXJyYXkoKTtcbiAgICBpZiAoIW51bS5zaWduICYmIG51bUFycmF5WzBdICYgMHg4MCkge1xuICAgICAgbnVtQXJyYXkudW5zaGlmdCgwKTtcbiAgICB9XG4gICAgbnVtID0gbmV3IEJ1ZmZlcihudW1BcnJheSk7XG4gIH1cblxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKG51bSkpIHtcbiAgICB2YXIgc2l6ZSA9IG51bS5sZW5ndGg7XG4gICAgaWYgKG51bS5sZW5ndGggPT09IDApXG4gICAgICBzaXplKys7XG5cbiAgICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihzaXplKTtcbiAgICBudW0uY29weShvdXQpO1xuICAgIGlmIChudW0ubGVuZ3RoID09PSAwKVxuICAgICAgb3V0WzBdID0gMFxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG91dCk7XG4gIH1cblxuICBpZiAobnVtIDwgMHg4MClcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihudW0pO1xuXG4gIGlmIChudW0gPCAweDEwMClcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbMCwgbnVtXSk7XG5cbiAgdmFyIHNpemUgPSAxO1xuICBmb3IgKHZhciBpID0gbnVtOyBpID49IDB4MTAwOyBpID4+PSA4KVxuICAgIHNpemUrKztcblxuICB2YXIgb3V0ID0gbmV3IEFycmF5KHNpemUpO1xuICBmb3IgKHZhciBpID0gb3V0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgb3V0W2ldID0gbnVtICYgMHhmZjtcbiAgICBudW0gPj49IDg7XG4gIH1cbiAgaWYob3V0WzBdICYgMHg4MCkge1xuICAgIG91dC51bnNoaWZ0KDApO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIobmV3IEJ1ZmZlcihvdXQpKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVCb29sID0gZnVuY3Rpb24gZW5jb2RlQm9vbCh2YWx1ZSkge1xuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcih2YWx1ZSA/IDB4ZmYgOiAwKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl91c2UgPSBmdW5jdGlvbiB1c2UoZW50aXR5LCBvYmopIHtcbiAgaWYgKHR5cGVvZiBlbnRpdHkgPT09ICdmdW5jdGlvbicpXG4gICAgZW50aXR5ID0gZW50aXR5KG9iaik7XG4gIHJldHVybiBlbnRpdHkuX2dldEVuY29kZXIoJ2RlcicpLnRyZWU7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fc2tpcERlZmF1bHQgPSBmdW5jdGlvbiBza2lwRGVmYXVsdChkYXRhQnVmZmVyLCByZXBvcnRlciwgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgdmFyIGk7XG4gIGlmIChzdGF0ZVsnZGVmYXVsdCddID09PSBudWxsKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB2YXIgZGF0YSA9IGRhdGFCdWZmZXIuam9pbigpO1xuICBpZiAoc3RhdGUuZGVmYXVsdEJ1ZmZlciA9PT0gdW5kZWZpbmVkKVxuICAgIHN0YXRlLmRlZmF1bHRCdWZmZXIgPSB0aGlzLl9lbmNvZGVWYWx1ZShzdGF0ZVsnZGVmYXVsdCddLCByZXBvcnRlciwgcGFyZW50KS5qb2luKCk7XG5cbiAgaWYgKGRhdGEubGVuZ3RoICE9PSBzdGF0ZS5kZWZhdWx0QnVmZmVyLmxlbmd0aClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgZm9yIChpPTA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKVxuICAgIGlmIChkYXRhW2ldICE9PSBzdGF0ZS5kZWZhdWx0QnVmZmVyW2ldKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gVXRpbGl0eSBtZXRob2RzXG5cbmZ1bmN0aW9uIGVuY29kZVRhZyh0YWcsIHByaW1pdGl2ZSwgY2xzLCByZXBvcnRlcikge1xuICB2YXIgcmVzO1xuXG4gIGlmICh0YWcgPT09ICdzZXFvZicpXG4gICAgdGFnID0gJ3NlcSc7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ3NldG9mJylcbiAgICB0YWcgPSAnc2V0JztcblxuICBpZiAoZGVyLnRhZ0J5TmFtZS5oYXNPd25Qcm9wZXJ0eSh0YWcpKVxuICAgIHJlcyA9IGRlci50YWdCeU5hbWVbdGFnXTtcbiAgZWxzZSBpZiAodHlwZW9mIHRhZyA9PT0gJ251bWJlcicgJiYgKHRhZyB8IDApID09PSB0YWcpXG4gICAgcmVzID0gdGFnO1xuICBlbHNlXG4gICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdVbmtub3duIHRhZzogJyArIHRhZyk7XG5cbiAgaWYgKHJlcyA+PSAweDFmKVxuICAgIHJldHVybiByZXBvcnRlci5lcnJvcignTXVsdGktb2N0ZXQgdGFnIGVuY29kaW5nIHVuc3VwcG9ydGVkJyk7XG5cbiAgaWYgKCFwcmltaXRpdmUpXG4gICAgcmVzIHw9IDB4MjA7XG5cbiAgcmVzIHw9IChkZXIudGFnQ2xhc3NCeU5hbWVbY2xzIHx8ICd1bml2ZXJzYWwnXSA8PCA2KTtcblxuICByZXR1cm4gcmVzO1xufVxuIiwidmFyIGVuY29kZXJzID0gZXhwb3J0cztcblxuZW5jb2RlcnMuZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcbmVuY29kZXJzLnBlbSA9IHJlcXVpcmUoJy4vcGVtJyk7XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgREVSRW5jb2RlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG5cbmZ1bmN0aW9uIFBFTUVuY29kZXIoZW50aXR5KSB7XG4gIERFUkVuY29kZXIuY2FsbCh0aGlzLCBlbnRpdHkpO1xuICB0aGlzLmVuYyA9ICdwZW0nO1xufTtcbmluaGVyaXRzKFBFTUVuY29kZXIsIERFUkVuY29kZXIpO1xubW9kdWxlLmV4cG9ydHMgPSBQRU1FbmNvZGVyO1xuXG5QRU1FbmNvZGVyLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgb3B0aW9ucykge1xuICB2YXIgYnVmID0gREVSRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlLmNhbGwodGhpcywgZGF0YSk7XG5cbiAgdmFyIHAgPSBidWYudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB2YXIgb3V0ID0gWyAnLS0tLS1CRUdJTiAnICsgb3B0aW9ucy5sYWJlbCArICctLS0tLScgXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwLmxlbmd0aDsgaSArPSA2NClcbiAgICBvdXQucHVzaChwLnNsaWNlKGksIGkgKyA2NCkpO1xuICBvdXQucHVzaCgnLS0tLS1FTkQgJyArIG9wdGlvbnMubGFiZWwgKyAnLS0tLS0nKTtcbiAgcmV0dXJuIG91dC5qb2luKCdcXG4nKTtcbn07XG4iLCIoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gVXRpbHNcbiAgZnVuY3Rpb24gYXNzZXJ0ICh2YWwsIG1zZykge1xuICAgIGlmICghdmFsKSB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG4gIH1cblxuICAvLyBDb3VsZCB1c2UgYGluaGVyaXRzYCBtb2R1bGUsIGJ1dCBkb24ndCB3YW50IHRvIG1vdmUgZnJvbSBzaW5nbGUgZmlsZVxuICAvLyBhcmNoaXRlY3R1cmUgeWV0LlxuICBmdW5jdGlvbiBpbmhlcml0cyAoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3I7XG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge307XG4gICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZTtcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpO1xuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvcjtcbiAgfVxuXG4gIC8vIEJOXG5cbiAgZnVuY3Rpb24gQk4gKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKEJOLmlzQk4obnVtYmVyKSkge1xuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB0aGlzLndvcmRzID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICAvLyBSZWR1Y3Rpb24gY29udGV4dFxuICAgIHRoaXMucmVkID0gbnVsbDtcblxuICAgIGlmIChudW1iZXIgIT09IG51bGwpIHtcbiAgICAgIGlmIChiYXNlID09PSAnbGUnIHx8IGJhc2UgPT09ICdiZScpIHtcbiAgICAgICAgZW5kaWFuID0gYmFzZTtcbiAgICAgICAgYmFzZSA9IDEwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pbml0KG51bWJlciB8fCAwLCBiYXNlIHx8IDEwLCBlbmRpYW4gfHwgJ2JlJyk7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gQk47XG4gIH0gZWxzZSB7XG4gICAgZXhwb3J0cy5CTiA9IEJOO1xuICB9XG5cbiAgQk4uQk4gPSBCTjtcbiAgQk4ud29yZFNpemUgPSAyNjtcblxuICB2YXIgQnVmZmVyO1xuICB0cnkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LkJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIEJ1ZmZlciA9IHdpbmRvdy5CdWZmZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuXG4gIEJOLmlzQk4gPSBmdW5jdGlvbiBpc0JOIChudW0pIHtcbiAgICBpZiAobnVtIGluc3RhbmNlb2YgQk4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZSA9PT0gQk4ud29yZFNpemUgJiYgQXJyYXkuaXNBcnJheShudW0ud29yZHMpO1xuICB9O1xuXG4gIEJOLm1heCA9IGZ1bmN0aW9uIG1heCAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpID4gMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLm1pbiA9IGZ1bmN0aW9uIG1pbiAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpIDwgMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdE51bWJlcihudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIGJhc2UgPSAxNjtcbiAgICB9XG4gICAgYXNzZXJ0KGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpO1xuXG4gICAgbnVtYmVyID0gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHN0YXJ0Kys7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPCBudW1iZXIubGVuZ3RoKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gMTYpIHtcbiAgICAgICAgdGhpcy5fcGFyc2VIZXgobnVtYmVyLCBzdGFydCwgZW5kaWFuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3BhcnNlQmFzZShudW1iZXIsIGJhc2UsIHN0YXJ0KTtcbiAgICAgICAgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXROdW1iZXIgPSBmdW5jdGlvbiBfaW5pdE51bWJlciAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICBudW1iZXIgPSAtbnVtYmVyO1xuICAgIH1cbiAgICBpZiAobnVtYmVyIDwgMHg0MDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyBudW1iZXIgJiAweDNmZmZmZmYgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKG51bWJlciA8IDB4MTAwMDAwMDAwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmZcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChudW1iZXIgPCAweDIwMDAwMDAwMDAwMDAwKTsgLy8gMiBeIDUzICh1bnNhZmUpXG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmLFxuICAgICAgICAxXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAzO1xuICAgIH1cblxuICAgIGlmIChlbmRpYW4gIT09ICdsZScpIHJldHVybjtcblxuICAgIC8vIFJldmVyc2UgdGhlIGJ5dGVzXG4gICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdEFycmF5ID0gZnVuY3Rpb24gX2luaXRBcnJheSAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICAvLyBQZXJoYXBzIGEgVWludDhBcnJheVxuICAgIGFzc2VydCh0eXBlb2YgbnVtYmVyLmxlbmd0aCA9PT0gJ251bWJlcicpO1xuICAgIGlmIChudW1iZXIubGVuZ3RoIDw9IDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKG51bWJlci5sZW5ndGggLyAzKTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIHZhciBqLCB3O1xuICAgIHZhciBvZmYgPSAwO1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxLCBqID0gMDsgaSA+PSAwOyBpIC09IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSAtIDFdIDw8IDgpIHwgKG51bWJlcltpIC0gMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgKyAxXSA8PCA4KSB8IChudW1iZXJbaSArIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4NEJpdHMgKHN0cmluZywgaW5kZXgpIHtcbiAgICB2YXIgYyA9IHN0cmluZy5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAvLyAnQScgLSAnRidcbiAgICBpZiAoYyA+PSA2NSAmJiBjIDw9IDcwKSB7XG4gICAgICByZXR1cm4gYyAtIDU1O1xuICAgIC8vICdhJyAtICdmJ1xuICAgIH0gZWxzZSBpZiAoYyA+PSA5NyAmJiBjIDw9IDEwMikge1xuICAgICAgcmV0dXJuIGMgLSA4NztcbiAgICAvLyAnMCcgLSAnOSdcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChjIC0gNDgpICYgMHhmO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4Qnl0ZSAoc3RyaW5nLCBsb3dlckJvdW5kLCBpbmRleCkge1xuICAgIHZhciByID0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4KTtcbiAgICBpZiAoaW5kZXggLSAxID49IGxvd2VyQm91bmQpIHtcbiAgICAgIHIgfD0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4IC0gMSkgPDwgNDtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlSGV4ID0gZnVuY3Rpb24gX3BhcnNlSGV4IChudW1iZXIsIHN0YXJ0LCBlbmRpYW4pIHtcbiAgICAvLyBDcmVhdGUgcG9zc2libHkgYmlnZ2VyIGFycmF5IHRvIGVuc3VyZSB0aGF0IGl0IGZpdHMgdGhlIG51bWJlclxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKChudW1iZXIubGVuZ3RoIC0gc3RhcnQpIC8gNik7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICAvLyAyNC1iaXRzIGNodW5rc1xuICAgIHZhciBvZmYgPSAwO1xuICAgIHZhciBqID0gMDtcblxuICAgIHZhciB3O1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyBpIC09IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFyc2VMZW5ndGggPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgICBmb3IgKGkgPSBwYXJzZUxlbmd0aCAlIDIgPT09IDAgPyBzdGFydCArIDEgOiBzdGFydDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlQmFzZSAoc3RyLCBzdGFydCwgZW5kLCBtdWwpIHtcbiAgICB2YXIgciA9IDA7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKHN0ci5sZW5ndGgsIGVuZCk7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBjID0gc3RyLmNoYXJDb2RlQXQoaSkgLSA0ODtcblxuICAgICAgciAqPSBtdWw7XG5cbiAgICAgIC8vICdhJ1xuICAgICAgaWYgKGMgPj0gNDkpIHtcbiAgICAgICAgciArPSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3KSB7XG4gICAgICAgIHIgKz0gYyAtIDE3ICsgMHhhO1xuXG4gICAgICAvLyAnMCcgLSAnOSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHIgKz0gYztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlQmFzZSA9IGZ1bmN0aW9uIF9wYXJzZUJhc2UgKG51bWJlciwgYmFzZSwgc3RhcnQpIHtcbiAgICAvLyBJbml0aWFsaXplIGFzIHplcm9cbiAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuXG4gICAgLy8gRmluZCBsZW5ndGggb2YgbGltYiBpbiBiYXNlXG4gICAgZm9yICh2YXIgbGltYkxlbiA9IDAsIGxpbWJQb3cgPSAxOyBsaW1iUG93IDw9IDB4M2ZmZmZmZjsgbGltYlBvdyAqPSBiYXNlKSB7XG4gICAgICBsaW1iTGVuKys7XG4gICAgfVxuICAgIGxpbWJMZW4tLTtcbiAgICBsaW1iUG93ID0gKGxpbWJQb3cgLyBiYXNlKSB8IDA7XG5cbiAgICB2YXIgdG90YWwgPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgdmFyIG1vZCA9IHRvdGFsICUgbGltYkxlbjtcbiAgICB2YXIgZW5kID0gTWF0aC5taW4odG90YWwsIHRvdGFsIC0gbW9kKSArIHN0YXJ0O1xuXG4gICAgdmFyIHdvcmQgPSAwO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSBsaW1iTGVuKSB7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgaSArIGxpbWJMZW4sIGJhc2UpO1xuXG4gICAgICB0aGlzLmltdWxuKGxpbWJQb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2QgIT09IDApIHtcbiAgICAgIHZhciBwb3cgPSAxO1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIG51bWJlci5sZW5ndGgsIGJhc2UpO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbW9kOyBpKyspIHtcbiAgICAgICAgcG93ICo9IGJhc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW11bG4ocG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5IChkZXN0KSB7XG4gICAgZGVzdC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXN0LndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICB9XG4gICAgZGVzdC5sZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICBkZXN0Lm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICBkZXN0LnJlZCA9IHRoaXMucmVkO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uIGNsb25lICgpIHtcbiAgICB2YXIgciA9IG5ldyBCTihudWxsKTtcbiAgICB0aGlzLmNvcHkocik7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9leHBhbmQgPSBmdW5jdGlvbiBfZXhwYW5kIChzaXplKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgc2l6ZSkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFJlbW92ZSBsZWFkaW5nIGAwYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3RyaXAgPSBmdW5jdGlvbiBzdHJpcCAoKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoID4gMSAmJiB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fbm9ybVNpZ24gPSBmdW5jdGlvbiBfbm9ybVNpZ24gKCkge1xuICAgIC8vIC0wID0gMFxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgICByZXR1cm4gKHRoaXMucmVkID8gJzxCTi1SOiAnIDogJzxCTjogJykgKyB0aGlzLnRvU3RyaW5nKDE2KSArICc+JztcbiAgfTtcblxuICAvKlxuXG4gIHZhciB6ZXJvcyA9IFtdO1xuICB2YXIgZ3JvdXBTaXplcyA9IFtdO1xuICB2YXIgZ3JvdXBCYXNlcyA9IFtdO1xuXG4gIHZhciBzID0gJyc7XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBCTi53b3JkU2l6ZSkge1xuICAgIHplcm9zW2ldID0gcztcbiAgICBzICs9ICcwJztcbiAgfVxuICBncm91cFNpemVzWzBdID0gMDtcbiAgZ3JvdXBTaXplc1sxXSA9IDA7XG4gIGdyb3VwQmFzZXNbMF0gPSAwO1xuICBncm91cEJhc2VzWzFdID0gMDtcbiAgdmFyIGJhc2UgPSAyIC0gMTtcbiAgd2hpbGUgKCsrYmFzZSA8IDM2ICsgMSkge1xuICAgIHZhciBncm91cFNpemUgPSAwO1xuICAgIHZhciBncm91cEJhc2UgPSAxO1xuICAgIHdoaWxlIChncm91cEJhc2UgPCAoMSA8PCBCTi53b3JkU2l6ZSkgLyBiYXNlKSB7XG4gICAgICBncm91cEJhc2UgKj0gYmFzZTtcbiAgICAgIGdyb3VwU2l6ZSArPSAxO1xuICAgIH1cbiAgICBncm91cFNpemVzW2Jhc2VdID0gZ3JvdXBTaXplO1xuICAgIGdyb3VwQmFzZXNbYmFzZV0gPSBncm91cEJhc2U7XG4gIH1cblxuICAqL1xuXG4gIHZhciB6ZXJvcyA9IFtcbiAgICAnJyxcbiAgICAnMCcsXG4gICAgJzAwJyxcbiAgICAnMDAwJyxcbiAgICAnMDAwMCcsXG4gICAgJzAwMDAwJyxcbiAgICAnMDAwMDAwJyxcbiAgICAnMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCdcbiAgXTtcblxuICB2YXIgZ3JvdXBTaXplcyA9IFtcbiAgICAwLCAwLFxuICAgIDI1LCAxNiwgMTIsIDExLCAxMCwgOSwgOCxcbiAgICA4LCA3LCA3LCA3LCA3LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1XG4gIF07XG5cbiAgdmFyIGdyb3VwQmFzZXMgPSBbXG4gICAgMCwgMCxcbiAgICAzMzU1NDQzMiwgNDMwNDY3MjEsIDE2Nzc3MjE2LCA0ODgyODEyNSwgNjA0NjYxNzYsIDQwMzUzNjA3LCAxNjc3NzIxNixcbiAgICA0MzA0NjcyMSwgMTAwMDAwMDAsIDE5NDg3MTcxLCAzNTgzMTgwOCwgNjI3NDg1MTcsIDc1Mjk1MzYsIDExMzkwNjI1LFxuICAgIDE2Nzc3MjE2LCAyNDEzNzU2OSwgMzQwMTIyMjQsIDQ3MDQ1ODgxLCA2NDAwMDAwMCwgNDA4NDEwMSwgNTE1MzYzMixcbiAgICA2NDM2MzQzLCA3OTYyNjI0LCA5NzY1NjI1LCAxMTg4MTM3NiwgMTQzNDg5MDcsIDE3MjEwMzY4LCAyMDUxMTE0OSxcbiAgICAyNDMwMDAwMCwgMjg2MjkxNTEsIDMzNTU0NDMyLCAzOTEzNTM5MywgNDU0MzU0MjQsIDUyNTIxODc1LCA2MDQ2NjE3NlxuICBdO1xuXG4gIEJOLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nIChiYXNlLCBwYWRkaW5nKSB7XG4gICAgYmFzZSA9IGJhc2UgfHwgMTA7XG4gICAgcGFkZGluZyA9IHBhZGRpbmcgfCAwIHx8IDE7XG5cbiAgICB2YXIgb3V0O1xuICAgIGlmIChiYXNlID09PSAxNiB8fCBiYXNlID09PSAnaGV4Jykge1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgb2ZmID0gMDtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldO1xuICAgICAgICB2YXIgd29yZCA9ICgoKHcgPDwgb2ZmKSB8IGNhcnJ5KSAmIDB4ZmZmZmZmKS50b1N0cmluZygxNik7XG4gICAgICAgIGNhcnJ5ID0gKHcgPj4+ICgyNCAtIG9mZikpICYgMHhmZmZmZmY7XG4gICAgICAgIGlmIChjYXJyeSAhPT0gMCB8fCBpICE9PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1s2IC0gd29yZC5sZW5ndGhdICsgd29yZCArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSB3b3JkICsgb3V0O1xuICAgICAgICB9XG4gICAgICAgIG9mZiArPSAyO1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICAgIG91dCA9IGNhcnJ5LnRvU3RyaW5nKDE2KSArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KSB7XG4gICAgICAvLyB2YXIgZ3JvdXBTaXplID0gTWF0aC5mbG9vcihCTi53b3JkU2l6ZSAqIE1hdGguTE4yIC8gTWF0aC5sb2coYmFzZSkpO1xuICAgICAgdmFyIGdyb3VwU2l6ZSA9IGdyb3VwU2l6ZXNbYmFzZV07XG4gICAgICAvLyB2YXIgZ3JvdXBCYXNlID0gTWF0aC5wb3coYmFzZSwgZ3JvdXBTaXplKTtcbiAgICAgIHZhciBncm91cEJhc2UgPSBncm91cEJhc2VzW2Jhc2VdO1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgYyA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGMubmVnYXRpdmUgPSAwO1xuICAgICAgd2hpbGUgKCFjLmlzWmVybygpKSB7XG4gICAgICAgIHZhciByID0gYy5tb2RuKGdyb3VwQmFzZSkudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIGMgPSBjLmlkaXZuKGdyb3VwQmFzZSk7XG5cbiAgICAgICAgaWYgKCFjLmlzWmVybygpKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbZ3JvdXBTaXplIC0gci5sZW5ndGhdICsgciArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSByICsgb3V0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBhc3NlcnQoZmFsc2UsICdCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Jyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvTnVtYmVyID0gZnVuY3Rpb24gdG9OdW1iZXIgKCkge1xuICAgIHZhciByZXQgPSB0aGlzLndvcmRzWzBdO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0ICs9IHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA9PT0gMyAmJiB0aGlzLndvcmRzWzJdID09PSAweDAxKSB7XG4gICAgICAvLyBOT1RFOiBhdCB0aGlzIHN0YWdlIGl0IGlzIGtub3duIHRoYXQgdGhlIHRvcCBiaXQgaXMgc2V0XG4gICAgICByZXQgKz0gMHgxMDAwMDAwMDAwMDAwMCArICh0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gMikge1xuICAgICAgYXNzZXJ0KGZhbHNlLCAnTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzJyk7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgPyAtcmV0IDogcmV0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKDE2KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9CdWZmZXIgPSBmdW5jdGlvbiB0b0J1ZmZlciAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpO1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEJ1ZmZlciwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gdG9BcnJheSAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5TGlrZSA9IGZ1bmN0aW9uIHRvQXJyYXlMaWtlIChBcnJheVR5cGUsIGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgdmFyIGJ5dGVMZW5ndGggPSB0aGlzLmJ5dGVMZW5ndGgoKTtcbiAgICB2YXIgcmVxTGVuZ3RoID0gbGVuZ3RoIHx8IE1hdGgubWF4KDEsIGJ5dGVMZW5ndGgpO1xuICAgIGFzc2VydChieXRlTGVuZ3RoIDw9IHJlcUxlbmd0aCwgJ2J5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgnKTtcbiAgICBhc3NlcnQocmVxTGVuZ3RoID4gMCwgJ1JlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCcpO1xuXG4gICAgdGhpcy5zdHJpcCgpO1xuICAgIHZhciBsaXR0bGVFbmRpYW4gPSBlbmRpYW4gPT09ICdsZSc7XG4gICAgdmFyIHJlcyA9IG5ldyBBcnJheVR5cGUocmVxTGVuZ3RoKTtcblxuICAgIHZhciBiLCBpO1xuICAgIHZhciBxID0gdGhpcy5jbG9uZSgpO1xuICAgIGlmICghbGl0dGxlRW5kaWFuKSB7XG4gICAgICAvLyBBc3N1bWUgYmlnLWVuZGlhblxuICAgICAgZm9yIChpID0gMDsgaSA8IHJlcUxlbmd0aCAtIGJ5dGVMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbcmVxTGVuZ3RoIC0gaSAtIDFdID0gYjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW2ldID0gYjtcbiAgICAgIH1cblxuICAgICAgZm9yICg7IGkgPCByZXFMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgaWYgKE1hdGguY2x6MzIpIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHJldHVybiAzMiAtIE1hdGguY2x6MzIodyk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHZhciB0ID0gdztcbiAgICAgIHZhciByID0gMDtcbiAgICAgIGlmICh0ID49IDB4MTAwMCkge1xuICAgICAgICByICs9IDEzO1xuICAgICAgICB0ID4+Pj0gMTM7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDQwKSB7XG4gICAgICAgIHIgKz0gNztcbiAgICAgICAgdCA+Pj49IDc7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDgpIHtcbiAgICAgICAgciArPSA0O1xuICAgICAgICB0ID4+Pj0gNDtcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4MDIpIHtcbiAgICAgICAgciArPSAyO1xuICAgICAgICB0ID4+Pj0gMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByICsgdDtcbiAgICB9O1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl96ZXJvQml0cyA9IGZ1bmN0aW9uIF96ZXJvQml0cyAodykge1xuICAgIC8vIFNob3J0LWN1dFxuICAgIGlmICh3ID09PSAwKSByZXR1cm4gMjY7XG5cbiAgICB2YXIgdCA9IHc7XG4gICAgdmFyIHIgPSAwO1xuICAgIGlmICgodCAmIDB4MWZmZikgPT09IDApIHtcbiAgICAgIHIgKz0gMTM7XG4gICAgICB0ID4+Pj0gMTM7XG4gICAgfVxuICAgIGlmICgodCAmIDB4N2YpID09PSAwKSB7XG4gICAgICByICs9IDc7XG4gICAgICB0ID4+Pj0gNztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHhmKSA9PT0gMCkge1xuICAgICAgciArPSA0O1xuICAgICAgdCA+Pj49IDQ7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MykgPT09IDApIHtcbiAgICAgIHIgKz0gMjtcbiAgICAgIHQgPj4+PSAyO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDEpID09PSAwKSB7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIC8vIFJldHVybiBudW1iZXIgb2YgdXNlZCBiaXRzIGluIGEgQk5cbiAgQk4ucHJvdG90eXBlLmJpdExlbmd0aCA9IGZ1bmN0aW9uIGJpdExlbmd0aCAoKSB7XG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV07XG4gICAgdmFyIGhpID0gdGhpcy5fY291bnRCaXRzKHcpO1xuICAgIHJldHVybiAodGhpcy5sZW5ndGggLSAxKSAqIDI2ICsgaGk7XG4gIH07XG5cbiAgZnVuY3Rpb24gdG9CaXRBcnJheSAobnVtKSB7XG4gICAgdmFyIHcgPSBuZXcgQXJyYXkobnVtLmJpdExlbmd0aCgpKTtcblxuICAgIGZvciAodmFyIGJpdCA9IDA7IGJpdCA8IHcubGVuZ3RoOyBiaXQrKykge1xuICAgICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgICAgd1tiaXRdID0gKG51bS53b3Jkc1tvZmZdICYgKDEgPDwgd2JpdCkpID4+PiB3Yml0O1xuICAgIH1cblxuICAgIHJldHVybiB3O1xuICB9XG5cbiAgLy8gTnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0c1xuICBCTi5wcm90b3R5cGUuemVyb0JpdHMgPSBmdW5jdGlvbiB6ZXJvQml0cyAoKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiAwO1xuXG4gICAgdmFyIHIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGIgPSB0aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2ldKTtcbiAgICAgIHIgKz0gYjtcbiAgICAgIGlmIChiICE9PSAyNikgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ieXRlTGVuZ3RoID0gZnVuY3Rpb24gYnl0ZUxlbmd0aCAoKSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpIC8gOCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvVHdvcyA9IGZ1bmN0aW9uIHRvVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWJzKCkuaW5vdG4od2lkdGgpLmlhZGRuKDEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tVHdvcyA9IGZ1bmN0aW9uIGZyb21Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLnRlc3RuKHdpZHRoIC0gMSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vdG4od2lkdGgpLmlhZGRuKDEpLmluZWcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiBpc05lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmUgIT09IDA7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5lZyA9IGZ1bmN0aW9uIGluZWcgKCkge1xuICAgIGlmICghdGhpcy5pc1plcm8oKSkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdW9yID0gZnVuY3Rpb24gaXVvciAobnVtKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldIHwgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlvciA9IGZ1bmN0aW9uIGlvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVvcihudW0pO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pb3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVvciA9IGZ1bmN0aW9uIHVvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdWFuZCA9IGZ1bmN0aW9uIGl1YW5kIChudW0pIHtcbiAgICAvLyBiID0gbWluLWxlbmd0aChudW0sIHRoaXMpXG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSAmIG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGIubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaWFuZCA9IGZ1bmN0aW9uIGlhbmQgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1YW5kKG51bSk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiBhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYW5kKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51YW5kID0gZnVuY3Rpb24gdWFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdWFuZCh0aGlzKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1eG9yID0gZnVuY3Rpb24gaXV4b3IgKG51bSkge1xuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYTtcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldIF4gYi53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcyAhPT0gYSkge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5peG9yID0gZnVuY3Rpb24gaXhvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXV4b3IobnVtKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIHhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5peG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml4b3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnV4b3IgPSBmdW5jdGlvbiB1eG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1eG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1eG9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIE5vdCBgYHRoaXNgYCB3aXRoIGBgd2lkdGhgYCBiaXR3aWR0aFxuICBCTi5wcm90b3R5cGUuaW5vdG4gPSBmdW5jdGlvbiBpbm90biAod2lkdGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJyAmJiB3aWR0aCA+PSAwKTtcblxuICAgIHZhciBieXRlc05lZWRlZCA9IE1hdGguY2VpbCh3aWR0aCAvIDI2KSB8IDA7XG4gICAgdmFyIGJpdHNMZWZ0ID0gd2lkdGggJSAyNjtcblxuICAgIC8vIEV4dGVuZCB0aGUgYnVmZmVyIHdpdGggbGVhZGluZyB6ZXJvZXNcbiAgICB0aGlzLl9leHBhbmQoYnl0ZXNOZWVkZWQpO1xuXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgYnl0ZXNOZWVkZWQtLTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgY29tcGxldGUgd29yZHNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzTmVlZGVkOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIHJlc2lkdWVcbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAoMHgzZmZmZmZmID4+ICgyNiAtIGJpdHNMZWZ0KSk7XG4gICAgfVxuXG4gICAgLy8gQW5kIHJlbW92ZSBsZWFkaW5nIHplcm9lc1xuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm5vdG4gPSBmdW5jdGlvbiBub3RuICh3aWR0aCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5vdG4od2lkdGgpO1xuICB9O1xuXG4gIC8vIFNldCBgYml0YCBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNldG4gPSBmdW5jdGlvbiBzZXRuIChiaXQsIHZhbCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG5cbiAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgIHRoaXMuX2V4cGFuZChvZmYgKyAxKTtcblxuICAgIGlmICh2YWwpIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSB8ICgxIDw8IHdiaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gJiB+KDEgPDwgd2JpdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAobnVtKSB7XG4gICAgdmFyIHI7XG5cbiAgICAvLyBuZWdhdGl2ZSArIHBvc2l0aXZlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gcG9zaXRpdmUgKyBuZWdhdGl2ZVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhLCBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAvLyBDb3B5IHRoZSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIH0gZWxzZSBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAobnVtKSB7XG4gICAgdmFyIHJlcztcbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwICYmIHRoaXMubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSB0aGlzLnN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSBpZiAobnVtLm5lZ2F0aXZlID09PSAwICYmIHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gbnVtLnN1Yih0aGlzKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGQobnVtKTtcblxuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYWRkKHRoaXMpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAobnVtKSB7XG4gICAgLy8gdGhpcyAtICgtbnVtKSA9IHRoaXMgKyBudW1cbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgdmFyIHIgPSB0aGlzLmlhZGQobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcblxuICAgIC8vIC10aGlzIC0gbnVtID0gLSh0aGlzICsgbnVtKVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGQobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlXG4gICAgdmFyIGNtcCA9IHRoaXMuY21wKG51bSk7XG5cbiAgICAvLyBPcHRpbWl6YXRpb24gLSB6ZXJvaWZ5XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIGEgPiBiXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGNtcCA+IDApIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSAtIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBDb3B5IHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgaWYgKGNhcnJ5ID09PSAwICYmIGkgPCBhLmxlbmd0aCAmJiBhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSk7XG5cbiAgICBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBzbWFsbE11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgdmFyIGxlbiA9IChzZWxmLmxlbmd0aCArIG51bS5sZW5ndGgpIHwgMDtcbiAgICBvdXQubGVuZ3RoID0gbGVuO1xuICAgIGxlbiA9IChsZW4gLSAxKSB8IDA7XG5cbiAgICAvLyBQZWVsIG9uZSBpdGVyYXRpb24gKGNvbXBpbGVyIGNhbid0IGRvIGl0LCBiZWNhdXNlIG9mIGNvZGUgY29tcGxleGl0eSlcbiAgICB2YXIgYSA9IHNlbGYud29yZHNbMF0gfCAwO1xuICAgIHZhciBiID0gbnVtLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICB2YXIgY2FycnkgPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgIG91dC53b3Jkc1swXSA9IGxvO1xuXG4gICAgZm9yICh2YXIgayA9IDE7IGsgPCBsZW47IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBjYXJyeSA+Pj4gMjY7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IChrIC0gaikgfCAwO1xuICAgICAgICBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICByID0gYSAqIGIgKyByd29yZDtcbiAgICAgICAgbmNhcnJ5ICs9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkIHwgMDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5IHwgMDtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeSB8IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICAvLyBUT0RPKGluZHV0bnkpOiBpdCBtYXkgYmUgcmVhc29uYWJsZSB0byBvbWl0IGl0IGZvciB1c2VycyB3aG8gZG9uJ3QgbmVlZFxuICAvLyB0byB3b3JrIHdpdGggMjU2LWJpdCBudW1iZXJzLCBvdGhlcndpc2UgaXQgZ2l2ZXMgMjAlIGltcHJvdmVtZW50IGZvciAyNTYtYml0XG4gIC8vIG11bHRpcGxpY2F0aW9uIChsaWtlIGVsbGlwdGljIHNlY3AyNTZrMSkuXG4gIHZhciBjb21iMTBNdWxUbyA9IGZ1bmN0aW9uIGNvbWIxME11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBhID0gc2VsZi53b3JkcztcbiAgICB2YXIgYiA9IG51bS53b3JkcztcbiAgICB2YXIgbyA9IG91dC53b3JkcztcbiAgICB2YXIgYyA9IDA7XG4gICAgdmFyIGxvO1xuICAgIHZhciBtaWQ7XG4gICAgdmFyIGhpO1xuICAgIHZhciBhMCA9IGFbMF0gfCAwO1xuICAgIHZhciBhbDAgPSBhMCAmIDB4MWZmZjtcbiAgICB2YXIgYWgwID0gYTAgPj4+IDEzO1xuICAgIHZhciBhMSA9IGFbMV0gfCAwO1xuICAgIHZhciBhbDEgPSBhMSAmIDB4MWZmZjtcbiAgICB2YXIgYWgxID0gYTEgPj4+IDEzO1xuICAgIHZhciBhMiA9IGFbMl0gfCAwO1xuICAgIHZhciBhbDIgPSBhMiAmIDB4MWZmZjtcbiAgICB2YXIgYWgyID0gYTIgPj4+IDEzO1xuICAgIHZhciBhMyA9IGFbM10gfCAwO1xuICAgIHZhciBhbDMgPSBhMyAmIDB4MWZmZjtcbiAgICB2YXIgYWgzID0gYTMgPj4+IDEzO1xuICAgIHZhciBhNCA9IGFbNF0gfCAwO1xuICAgIHZhciBhbDQgPSBhNCAmIDB4MWZmZjtcbiAgICB2YXIgYWg0ID0gYTQgPj4+IDEzO1xuICAgIHZhciBhNSA9IGFbNV0gfCAwO1xuICAgIHZhciBhbDUgPSBhNSAmIDB4MWZmZjtcbiAgICB2YXIgYWg1ID0gYTUgPj4+IDEzO1xuICAgIHZhciBhNiA9IGFbNl0gfCAwO1xuICAgIHZhciBhbDYgPSBhNiAmIDB4MWZmZjtcbiAgICB2YXIgYWg2ID0gYTYgPj4+IDEzO1xuICAgIHZhciBhNyA9IGFbN10gfCAwO1xuICAgIHZhciBhbDcgPSBhNyAmIDB4MWZmZjtcbiAgICB2YXIgYWg3ID0gYTcgPj4+IDEzO1xuICAgIHZhciBhOCA9IGFbOF0gfCAwO1xuICAgIHZhciBhbDggPSBhOCAmIDB4MWZmZjtcbiAgICB2YXIgYWg4ID0gYTggPj4+IDEzO1xuICAgIHZhciBhOSA9IGFbOV0gfCAwO1xuICAgIHZhciBhbDkgPSBhOSAmIDB4MWZmZjtcbiAgICB2YXIgYWg5ID0gYTkgPj4+IDEzO1xuICAgIHZhciBiMCA9IGJbMF0gfCAwO1xuICAgIHZhciBibDAgPSBiMCAmIDB4MWZmZjtcbiAgICB2YXIgYmgwID0gYjAgPj4+IDEzO1xuICAgIHZhciBiMSA9IGJbMV0gfCAwO1xuICAgIHZhciBibDEgPSBiMSAmIDB4MWZmZjtcbiAgICB2YXIgYmgxID0gYjEgPj4+IDEzO1xuICAgIHZhciBiMiA9IGJbMl0gfCAwO1xuICAgIHZhciBibDIgPSBiMiAmIDB4MWZmZjtcbiAgICB2YXIgYmgyID0gYjIgPj4+IDEzO1xuICAgIHZhciBiMyA9IGJbM10gfCAwO1xuICAgIHZhciBibDMgPSBiMyAmIDB4MWZmZjtcbiAgICB2YXIgYmgzID0gYjMgPj4+IDEzO1xuICAgIHZhciBiNCA9IGJbNF0gfCAwO1xuICAgIHZhciBibDQgPSBiNCAmIDB4MWZmZjtcbiAgICB2YXIgYmg0ID0gYjQgPj4+IDEzO1xuICAgIHZhciBiNSA9IGJbNV0gfCAwO1xuICAgIHZhciBibDUgPSBiNSAmIDB4MWZmZjtcbiAgICB2YXIgYmg1ID0gYjUgPj4+IDEzO1xuICAgIHZhciBiNiA9IGJbNl0gfCAwO1xuICAgIHZhciBibDYgPSBiNiAmIDB4MWZmZjtcbiAgICB2YXIgYmg2ID0gYjYgPj4+IDEzO1xuICAgIHZhciBiNyA9IGJbN10gfCAwO1xuICAgIHZhciBibDcgPSBiNyAmIDB4MWZmZjtcbiAgICB2YXIgYmg3ID0gYjcgPj4+IDEzO1xuICAgIHZhciBiOCA9IGJbOF0gfCAwO1xuICAgIHZhciBibDggPSBiOCAmIDB4MWZmZjtcbiAgICB2YXIgYmg4ID0gYjggPj4+IDEzO1xuICAgIHZhciBiOSA9IGJbOV0gfCAwO1xuICAgIHZhciBibDkgPSBiOSAmIDB4MWZmZjtcbiAgICB2YXIgYmg5ID0gYjkgPj4+IDEzO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0gc2VsZi5uZWdhdGl2ZSBeIG51bS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gMTk7XG4gICAgLyogayA9IDAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDAsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMCwgYmgwKTtcbiAgICB2YXIgdzAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcwID4+PiAyNikpIHwgMDtcbiAgICB3MCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDEsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDEpKSB8IDA7XG4gICAgdmFyIHcxID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MSA+Pj4gMjYpKSB8IDA7XG4gICAgdzEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwyLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDIsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDIsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMikpIHwgMDtcbiAgICB2YXIgdzIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcyID4+PiAyNikpIHwgMDtcbiAgICB3MiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDMsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMykpIHwgMDtcbiAgICB2YXIgdzMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHczID4+PiAyNikpIHwgMDtcbiAgICB3MyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDQsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDQpKSB8IDA7XG4gICAgdmFyIHc0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NCA+Pj4gMjYpKSB8IDA7XG4gICAgdzQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw1LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDUsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDUsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNSkpIHwgMDtcbiAgICB2YXIgdzUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc1ID4+PiAyNikpIHwgMDtcbiAgICB3NSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDYsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNikpIHwgMDtcbiAgICB2YXIgdzYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc2ID4+PiAyNikpIHwgMDtcbiAgICB3NiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDcsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDcpKSB8IDA7XG4gICAgdmFyIHc3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NyA+Pj4gMjYpKSB8IDA7XG4gICAgdzcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw4LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDgsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDgsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOCkpIHwgMDtcbiAgICB2YXIgdzggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc4ID4+PiAyNikpIHwgMDtcbiAgICB3OCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDkgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzkgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc5ID4+PiAyNikpIHwgMDtcbiAgICB3OSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDEpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTAgPj4+IDI2KSkgfCAwO1xuICAgIHcxMCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDExICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDIpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMSA+Pj4gMjYpKSB8IDA7XG4gICAgdzExICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgzKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwzKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgzKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTIgPj4+IDI2KSkgfCAwO1xuICAgIHcxMiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDQpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEzID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTMgPj4+IDI2KSkgfCAwO1xuICAgIHcxMyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDUpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg2KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw2KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg2KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTUgPj4+IDI2KSkgfCAwO1xuICAgIHcxNSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDcpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTYgPj4+IDI2KSkgfCAwO1xuICAgIHcxNiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDgpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNyA+Pj4gMjYpKSB8IDA7XG4gICAgdzE3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg5KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw5KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg5KTtcbiAgICB2YXIgdzE4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTggPj4+IDI2KSkgfCAwO1xuICAgIHcxOCAmPSAweDNmZmZmZmY7XG4gICAgb1swXSA9IHcwO1xuICAgIG9bMV0gPSB3MTtcbiAgICBvWzJdID0gdzI7XG4gICAgb1szXSA9IHczO1xuICAgIG9bNF0gPSB3NDtcbiAgICBvWzVdID0gdzU7XG4gICAgb1s2XSA9IHc2O1xuICAgIG9bN10gPSB3NztcbiAgICBvWzhdID0gdzg7XG4gICAgb1s5XSA9IHc5O1xuICAgIG9bMTBdID0gdzEwO1xuICAgIG9bMTFdID0gdzExO1xuICAgIG9bMTJdID0gdzEyO1xuICAgIG9bMTNdID0gdzEzO1xuICAgIG9bMTRdID0gdzE0O1xuICAgIG9bMTVdID0gdzE1O1xuICAgIG9bMTZdID0gdzE2O1xuICAgIG9bMTddID0gdzE3O1xuICAgIG9bMThdID0gdzE4O1xuICAgIGlmIChjICE9PSAwKSB7XG4gICAgICBvWzE5XSA9IGM7XG4gICAgICBvdXQubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH07XG5cbiAgLy8gUG9seWZpbGwgY29tYlxuICBpZiAoIU1hdGguaW11bCkge1xuICAgIGNvbWIxME11bFRvID0gc21hbGxNdWxUbztcbiAgfVxuXG4gIGZ1bmN0aW9uIGJpZ011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aDtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgdmFyIGhuY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb3V0Lmxlbmd0aCAtIDE7IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBobmNhcnJ5O1xuICAgICAgaG5jYXJyeSA9IDA7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IGsgLSBqO1xuICAgICAgICB2YXIgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICB2YXIgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHZhciByID0gYSAqIGI7XG5cbiAgICAgICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArICgociAvIDB4NDAwMDAwMCkgfCAwKSkgfCAwO1xuICAgICAgICBsbyA9IChsbyArIHJ3b3JkKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAobG8gPj4+IDI2KSkgfCAwO1xuXG4gICAgICAgIGhuY2FycnkgKz0gbmNhcnJ5ID4+PiAyNjtcbiAgICAgICAgbmNhcnJ5ICY9IDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkO1xuICAgICAgY2FycnkgPSBuY2Fycnk7XG4gICAgICBuY2FycnkgPSBobmNhcnJ5O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgZnVuY3Rpb24ganVtYm9NdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgZmZ0bSA9IG5ldyBGRlRNKCk7XG4gICAgcmV0dXJuIGZmdG0ubXVscChzZWxmLCBudW0sIG91dCk7XG4gIH1cblxuICBCTi5wcm90b3R5cGUubXVsVG8gPSBmdW5jdGlvbiBtdWxUbyAobnVtLCBvdXQpIHtcbiAgICB2YXIgcmVzO1xuICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCArIG51bS5sZW5ndGg7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxMCAmJiBudW0ubGVuZ3RoID09PSAxMCkge1xuICAgICAgcmVzID0gY29tYjEwTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgNjMpIHtcbiAgICAgIHJlcyA9IHNtYWxsTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgMTAyNCkge1xuICAgICAgcmVzID0gYmlnTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvb2xleS1UdWtleSBhbGdvcml0aG0gZm9yIEZGVFxuICAvLyBzbGlnaHRseSByZXZpc2l0ZWQgdG8gcmVseSBvbiBsb29waW5nIGluc3RlYWQgb2YgcmVjdXJzaW9uXG5cbiAgZnVuY3Rpb24gRkZUTSAoeCwgeSkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgfVxuXG4gIEZGVE0ucHJvdG90eXBlLm1ha2VSQlQgPSBmdW5jdGlvbiBtYWtlUkJUIChOKSB7XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGwgPSBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyhOKSAtIDE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHRbaV0gPSB0aGlzLnJldkJpbihpLCBsLCBOKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGJpbmFyeS1yZXZlcnNlZCByZXByZXNlbnRhdGlvbiBvZiBgeGBcbiAgRkZUTS5wcm90b3R5cGUucmV2QmluID0gZnVuY3Rpb24gcmV2QmluICh4LCBsLCBOKSB7XG4gICAgaWYgKHggPT09IDAgfHwgeCA9PT0gTiAtIDEpIHJldHVybiB4O1xuXG4gICAgdmFyIHJiID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgcmIgfD0gKHggJiAxKSA8PCAobCAtIGkgLSAxKTtcbiAgICAgIHggPj49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJiO1xuICB9O1xuXG4gIC8vIFBlcmZvcm1zIFwidHdlZWRsaW5nXCIgcGhhc2UsIHRoZXJlZm9yZSAnZW11bGF0aW5nJ1xuICAvLyBiZWhhdmlvdXIgb2YgdGhlIHJlY3Vyc2l2ZSBhbGdvcml0aG1cbiAgRkZUTS5wcm90b3R5cGUucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUgKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcnR3c1tpXSA9IHJ3c1tyYnRbaV1dO1xuICAgICAgaXR3c1tpXSA9IGl3c1tyYnRbaV1dO1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiB0cmFuc2Zvcm0gKHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOLCByYnQpIHtcbiAgICB0aGlzLnBlcm11dGUocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTik7XG5cbiAgICBmb3IgKHZhciBzID0gMTsgcyA8IE47IHMgPDw9IDEpIHtcbiAgICAgIHZhciBsID0gcyA8PCAxO1xuXG4gICAgICB2YXIgcnR3ZGYgPSBNYXRoLmNvcygyICogTWF0aC5QSSAvIGwpO1xuICAgICAgdmFyIGl0d2RmID0gTWF0aC5zaW4oMiAqIE1hdGguUEkgLyBsKTtcblxuICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBOOyBwICs9IGwpIHtcbiAgICAgICAgdmFyIHJ0d2RmXyA9IHJ0d2RmO1xuICAgICAgICB2YXIgaXR3ZGZfID0gaXR3ZGY7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzOyBqKyspIHtcbiAgICAgICAgICB2YXIgcmUgPSBydHdzW3AgKyBqXTtcbiAgICAgICAgICB2YXIgaWUgPSBpdHdzW3AgKyBqXTtcblxuICAgICAgICAgIHZhciBybyA9IHJ0d3NbcCArIGogKyBzXTtcbiAgICAgICAgICB2YXIgaW8gPSBpdHdzW3AgKyBqICsgc107XG5cbiAgICAgICAgICB2YXIgcnggPSBydHdkZl8gKiBybyAtIGl0d2RmXyAqIGlvO1xuXG4gICAgICAgICAgaW8gPSBydHdkZl8gKiBpbyArIGl0d2RmXyAqIHJvO1xuICAgICAgICAgIHJvID0gcng7XG5cbiAgICAgICAgICBydHdzW3AgKyBqXSA9IHJlICsgcm87XG4gICAgICAgICAgaXR3c1twICsgal0gPSBpZSArIGlvO1xuXG4gICAgICAgICAgcnR3c1twICsgaiArIHNdID0gcmUgLSBybztcbiAgICAgICAgICBpdHdzW3AgKyBqICsgc10gPSBpZSAtIGlvO1xuXG4gICAgICAgICAgLyoganNoaW50IG1heGRlcHRoIDogZmFsc2UgKi9cbiAgICAgICAgICBpZiAoaiAhPT0gbCkge1xuICAgICAgICAgICAgcnggPSBydHdkZiAqIHJ0d2RmXyAtIGl0d2RmICogaXR3ZGZfO1xuXG4gICAgICAgICAgICBpdHdkZl8gPSBydHdkZiAqIGl0d2RmXyArIGl0d2RmICogcnR3ZGZfO1xuICAgICAgICAgICAgcnR3ZGZfID0gcng7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmd1ZXNzTGVuMTNiID0gZnVuY3Rpb24gZ3Vlc3NMZW4xM2IgKG4sIG0pIHtcbiAgICB2YXIgTiA9IE1hdGgubWF4KG0sIG4pIHwgMTtcbiAgICB2YXIgb2RkID0gTiAmIDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIGZvciAoTiA9IE4gLyAyIHwgMDsgTjsgTiA9IE4gPj4+IDEpIHtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICByZXR1cm4gMSA8PCBpICsgMSArIG9kZDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb25qdWdhdGUgPSBmdW5jdGlvbiBjb25qdWdhdGUgKHJ3cywgaXdzLCBOKSB7XG4gICAgaWYgKE4gPD0gMSkgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdCA9IHJ3c1tpXTtcblxuICAgICAgcndzW2ldID0gcndzW04gLSBpIC0gMV07XG4gICAgICByd3NbTiAtIGkgLSAxXSA9IHQ7XG5cbiAgICAgIHQgPSBpd3NbaV07XG5cbiAgICAgIGl3c1tpXSA9IC1pd3NbTiAtIGkgLSAxXTtcbiAgICAgIGl3c1tOIC0gaSAtIDFdID0gLXQ7XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm5vcm1hbGl6ZTEzYiA9IGZ1bmN0aW9uIG5vcm1hbGl6ZTEzYiAod3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHcgPSBNYXRoLnJvdW5kKHdzWzIgKiBpICsgMV0gLyBOKSAqIDB4MjAwMCArXG4gICAgICAgIE1hdGgucm91bmQod3NbMiAqIGldIC8gTikgK1xuICAgICAgICBjYXJyeTtcblxuICAgICAgd3NbaV0gPSB3ICYgMHgzZmZmZmZmO1xuXG4gICAgICBpZiAodyA8IDB4NDAwMDAwMCkge1xuICAgICAgICBjYXJyeSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXJyeSA9IHcgLyAweDQwMDAwMDAgfCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB3cztcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb252ZXJ0MTNiID0gZnVuY3Rpb24gY29udmVydDEzYiAod3MsIGxlbiwgcndzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjYXJyeSA9IGNhcnJ5ICsgKHdzW2ldIHwgMCk7XG5cbiAgICAgIHJ3c1syICogaV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgICByd3NbMiAqIGkgKyAxXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICB9XG5cbiAgICAvLyBQYWQgd2l0aCB6ZXJvZXNcbiAgICBmb3IgKGkgPSAyICogbGVuOyBpIDwgTjsgKytpKSB7XG4gICAgICByd3NbaV0gPSAwO1xuICAgIH1cblxuICAgIGFzc2VydChjYXJyeSA9PT0gMCk7XG4gICAgYXNzZXJ0KChjYXJyeSAmIH4weDFmZmYpID09PSAwKTtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5zdHViID0gZnVuY3Rpb24gc3R1YiAoTikge1xuICAgIHZhciBwaCA9IG5ldyBBcnJheShOKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcGhbaV0gPSAwO1xuICAgIH1cblxuICAgIHJldHVybiBwaDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5tdWxwID0gZnVuY3Rpb24gbXVscCAoeCwgeSwgb3V0KSB7XG4gICAgdmFyIE4gPSAyICogdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCwgeS5sZW5ndGgpO1xuXG4gICAgdmFyIHJidCA9IHRoaXMubWFrZVJCVChOKTtcblxuICAgIHZhciBfID0gdGhpcy5zdHViKE4pO1xuXG4gICAgdmFyIHJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgcndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBucndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBucndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbml3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgcm13cyA9IG91dC53b3JkcztcbiAgICBybXdzLmxlbmd0aCA9IE47XG5cbiAgICB0aGlzLmNvbnZlcnQxM2IoeC53b3JkcywgeC5sZW5ndGgsIHJ3cywgTik7XG4gICAgdGhpcy5jb252ZXJ0MTNiKHkud29yZHMsIHkubGVuZ3RoLCBucndzLCBOKTtcblxuICAgIHRoaXMudHJhbnNmb3JtKHJ3cywgXywgcndzdCwgaXdzdCwgTiwgcmJ0KTtcbiAgICB0aGlzLnRyYW5zZm9ybShucndzLCBfLCBucndzdCwgbml3c3QsIE4sIHJidCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdmFyIHJ4ID0gcndzdFtpXSAqIG5yd3N0W2ldIC0gaXdzdFtpXSAqIG5pd3N0W2ldO1xuICAgICAgaXdzdFtpXSA9IHJ3c3RbaV0gKiBuaXdzdFtpXSArIGl3c3RbaV0gKiBucndzdFtpXTtcbiAgICAgIHJ3c3RbaV0gPSByeDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmp1Z2F0ZShyd3N0LCBpd3N0LCBOKTtcbiAgICB0aGlzLnRyYW5zZm9ybShyd3N0LCBpd3N0LCBybXdzLCBfLCBOLCByYnQpO1xuICAgIHRoaXMuY29uanVnYXRlKHJtd3MsIF8sIE4pO1xuICAgIHRoaXMubm9ybWFsaXplMTNiKHJtd3MsIE4pO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0geC5uZWdhdGl2ZSBeIHkubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHgubGVuZ3RoICsgeS5sZW5ndGg7XG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGB0aGlzYCBieSBgbnVtYFxuICBCTi5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiB0aGlzLm11bFRvKG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBlbXBsb3lpbmcgRkZUXG4gIEJOLnByb3RvdHlwZS5tdWxmID0gZnVuY3Rpb24gbXVsZiAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gSW4tcGxhY2UgTXVsdGlwbGljYXRpb25cbiAgQk4ucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKG51bSwgdGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmltdWxuID0gZnVuY3Rpb24gaW11bG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG5cbiAgICAvLyBDYXJyeVxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKiBudW07XG4gICAgICB2YXIgbG8gPSAodyAmIDB4M2ZmZmZmZikgKyAoY2FycnkgJiAweDNmZmZmZmYpO1xuICAgICAgY2FycnkgPj49IDI2O1xuICAgICAgY2FycnkgKz0gKHcgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgIC8vIE5PVEU6IGxvIGlzIDI3Yml0IG1heGltdW1cbiAgICAgIGNhcnJ5ICs9IGxvID4+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm11bG4gPSBmdW5jdGlvbiBtdWxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKG51bSk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLm11bCh0aGlzKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSk7XG4gIH07XG5cbiAgLy8gTWF0aC5wb3coYHRoaXNgLCBgbnVtYClcbiAgQk4ucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAobnVtKSB7XG4gICAgdmFyIHcgPSB0b0JpdEFycmF5KG51bSk7XG4gICAgaWYgKHcubGVuZ3RoID09PSAwKSByZXR1cm4gbmV3IEJOKDEpO1xuXG4gICAgLy8gU2tpcCBsZWFkaW5nIHplcm9lc1xuICAgIHZhciByZXMgPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdy5sZW5ndGg7IGkrKywgcmVzID0gcmVzLnNxcigpKSB7XG4gICAgICBpZiAod1tpXSAhPT0gMCkgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKCsraSA8IHcubGVuZ3RoKSB7XG4gICAgICBmb3IgKHZhciBxID0gcmVzLnNxcigpOyBpIDwgdy5sZW5ndGg7IGkrKywgcSA9IHEuc3FyKCkpIHtcbiAgICAgICAgaWYgKHdbaV0gPT09IDApIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHJlcy5tdWwocSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0IGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXNobG4gPSBmdW5jdGlvbiBpdXNobG4gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG4gICAgdmFyIGNhcnJ5TWFzayA9ICgweDNmZmZmZmYgPj4+ICgyNiAtIHIpKSA8PCAoMjYgLSByKTtcbiAgICB2YXIgaTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbmV3Q2FycnkgPSB0aGlzLndvcmRzW2ldICYgY2FycnlNYXNrO1xuICAgICAgICB2YXIgYyA9ICgodGhpcy53b3Jkc1tpXSB8IDApIC0gbmV3Q2FycnkpIDw8IHI7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjIHwgY2Fycnk7XG4gICAgICAgIGNhcnJ5ID0gbmV3Q2FycnkgPj4+ICgyNiAtIHIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2FycnkpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzICE9PSAwKSB7XG4gICAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIHNdID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sZW5ndGggKz0gcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hsbiA9IGZ1bmN0aW9uIGlzaGxuIChiaXRzKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodCBpbi1wbGFjZVxuICAvLyBOT1RFOiBgaGludGAgaXMgYSBsb3dlc3QgYml0IGJlZm9yZSB0cmFpbGluZyB6ZXJvZXNcbiAgLy8gTk9URTogaWYgYGV4dGVuZGVkYCBpcyBwcmVzZW50IC0gaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCBkZXN0cm95ZWQgYml0c1xuICBCTi5wcm90b3R5cGUuaXVzaHJuID0gZnVuY3Rpb24gaXVzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgaDtcbiAgICBpZiAoaGludCkge1xuICAgICAgaCA9IChoaW50IC0gKGhpbnQgJSAyNikpIC8gMjY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGggPSAwO1xuICAgIH1cblxuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gTWF0aC5taW4oKGJpdHMgLSByKSAvIDI2LCB0aGlzLmxlbmd0aCk7XG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgdmFyIG1hc2tlZFdvcmRzID0gZXh0ZW5kZWQ7XG5cbiAgICBoIC09IHM7XG4gICAgaCA9IE1hdGgubWF4KDAsIGgpO1xuXG4gICAgLy8gRXh0ZW5kZWQgbW9kZSwgY29weSBtYXNrZWQgcGFydFxuICAgIGlmIChtYXNrZWRXb3Jkcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgbWFza2VkV29yZHMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuICAgICAgbWFza2VkV29yZHMubGVuZ3RoID0gcztcbiAgICB9XG5cbiAgICBpZiAocyA9PT0gMCkge1xuICAgICAgLy8gTm8tb3AsIHdlIHNob3VsZCBub3QgbW92ZSBhbnl0aGluZyBhdCBhbGxcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gcykge1xuICAgICAgdGhpcy5sZW5ndGggLT0gcztcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2kgKyBzXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMCAmJiAoY2FycnkgIT09IDAgfHwgaSA+PSBoKTsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IChjYXJyeSA8PCAoMjYgLSByKSkgfCAod29yZCA+Pj4gcik7XG4gICAgICBjYXJyeSA9IHdvcmQgJiBtYXNrO1xuICAgIH1cblxuICAgIC8vIFB1c2ggY2FycmllZCBiaXRzIGFzIGEgbWFza1xuICAgIGlmIChtYXNrZWRXb3JkcyAmJiBjYXJyeSAhPT0gMCkge1xuICAgICAgbWFza2VkV29yZHMud29yZHNbbWFza2VkV29yZHMubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hybiA9IGZ1bmN0aW9uIGlzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNocm4oYml0cywgaGludCwgZXh0ZW5kZWQpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnRcbiAgQk4ucHJvdG90eXBlLnNobG4gPSBmdW5jdGlvbiBzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNobG4gPSBmdW5jdGlvbiB1c2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0XG4gIEJOLnByb3RvdHlwZS5zaHJuID0gZnVuY3Rpb24gc2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaHJuID0gZnVuY3Rpb24gdXNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihiaXRzKTtcbiAgfTtcblxuICAvLyBUZXN0IGlmIG4gYml0IGlzIHNldFxuICBCTi5wcm90b3R5cGUudGVzdG4gPSBmdW5jdGlvbiB0ZXN0biAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBiaXQgYW5kIHJldHVyblxuICAgIHZhciB3ID0gdGhpcy53b3Jkc1tzXTtcblxuICAgIHJldHVybiAhISh3ICYgcSk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyIChpbi1wbGFjZSlcbiAgQk4ucHJvdG90eXBlLmltYXNrbiA9IGZ1bmN0aW9uIGltYXNrbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcblxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAnaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzJyk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHMrKztcbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1pbihzLCB0aGlzLmxlbmd0aCk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gJj0gbWFzaztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlclxuICBCTi5wcm90b3R5cGUubWFza24gPSBmdW5jdGlvbiBtYXNrbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGJpdHMpO1xuICB9O1xuXG4gIC8vIEFkZCBwbGFpbiBudW1iZXIgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pYWRkbiA9IGZ1bmN0aW9uIGlhZGRuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pc3VibigtbnVtKTtcblxuICAgIC8vIFBvc3NpYmxlIHNpZ24gY2hhbmdlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiAodGhpcy53b3Jkc1swXSB8IDApIDwgbnVtKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gPSBudW0gLSAodGhpcy53b3Jkc1swXSB8IDApO1xuICAgICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pc3VibihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aG91dCBjaGVja3NcbiAgICByZXR1cm4gdGhpcy5faWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lhZGRuID0gZnVuY3Rpb24gX2lhZGRuIChudW0pIHtcbiAgICB0aGlzLndvcmRzWzBdICs9IG51bTtcblxuICAgIC8vIENhcnJ5XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldID49IDB4NDAwMDAwMDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldIC09IDB4NDAwMDAwMDtcbiAgICAgIGlmIChpID09PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0rKztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSArIDEpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgcGxhaW4gbnVtYmVyIGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pc3VibiA9IGZ1bmN0aW9uIGlzdWJuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pYWRkbigtbnVtKTtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZG4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy53b3Jkc1swXSAtPSBudW07XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA8IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAtdGhpcy53b3Jkc1swXTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDYXJyeVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldIDwgMDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gKz0gMHg0MDAwMDAwO1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSAtPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFkZG4gPSBmdW5jdGlvbiBhZGRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnN1Ym4gPSBmdW5jdGlvbiBzdWJuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhYnMgPSBmdW5jdGlvbiBpYWJzICgpIHtcbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiBhYnMgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFicygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faXNobG5zdWJtdWwgPSBmdW5jdGlvbiBfaXNobG5zdWJtdWwgKG51bSwgbXVsLCBzaGlmdCkge1xuICAgIHZhciBsZW4gPSBudW0ubGVuZ3RoICsgc2hpZnQ7XG4gICAgdmFyIGk7XG5cbiAgICB0aGlzLl9leHBhbmQobGVuKTtcblxuICAgIHZhciB3O1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgdmFyIHJpZ2h0ID0gKG51bS53b3Jkc1tpXSB8IDApICogbXVsO1xuICAgICAgdyAtPSByaWdodCAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gKHcgPj4gMjYpIC0gKChyaWdodCAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBpIDwgdGhpcy5sZW5ndGggLSBzaGlmdDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSA9PT0gMCkgcmV0dXJuIHRoaXMuc3RyaXAoKTtcblxuICAgIC8vIFN1YnRyYWN0aW9uIG92ZXJmbG93XG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAtMSk7XG4gICAgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3ID0gLSh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICB0aGlzLm5lZ2F0aXZlID0gMTtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl93b3JkRGl2ID0gZnVuY3Rpb24gX3dvcmREaXYgKG51bSwgbW9kZSkge1xuICAgIHZhciBzaGlmdCA9IHRoaXMubGVuZ3RoIC0gbnVtLmxlbmd0aDtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtO1xuXG4gICAgLy8gTm9ybWFsaXplXG4gICAgdmFyIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgdmFyIGJoaUJpdHMgPSB0aGlzLl9jb3VudEJpdHMoYmhpKTtcbiAgICBzaGlmdCA9IDI2IC0gYmhpQml0cztcbiAgICBpZiAoc2hpZnQgIT09IDApIHtcbiAgICAgIGIgPSBiLnVzaGxuKHNoaWZ0KTtcbiAgICAgIGEuaXVzaGxuKHNoaWZ0KTtcbiAgICAgIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBxdW90aWVudFxuICAgIHZhciBtID0gYS5sZW5ndGggLSBiLmxlbmd0aDtcbiAgICB2YXIgcTtcblxuICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgcSA9IG5ldyBCTihudWxsKTtcbiAgICAgIHEubGVuZ3RoID0gbSArIDE7XG4gICAgICBxLndvcmRzID0gbmV3IEFycmF5KHEubGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcS5sZW5ndGg7IGkrKykge1xuICAgICAgICBxLndvcmRzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGlmZiA9IGEuY2xvbmUoKS5faXNobG5zdWJtdWwoYiwgMSwgbSk7XG4gICAgaWYgKGRpZmYubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIGEgPSBkaWZmO1xuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1ttXSA9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaiA9IG0gLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgdmFyIHFqID0gKGEud29yZHNbYi5sZW5ndGggKyBqXSB8IDApICogMHg0MDAwMDAwICtcbiAgICAgICAgKGEud29yZHNbYi5sZW5ndGggKyBqIC0gMV0gfCAwKTtcblxuICAgICAgLy8gTk9URTogKHFqIC8gYmhpKSBpcyAoMHgzZmZmZmZmICogMHg0MDAwMDAwICsgMHgzZmZmZmZmKSAvIDB4MjAwMDAwMCBtYXhcbiAgICAgIC8vICgweDdmZmZmZmYpXG4gICAgICBxaiA9IE1hdGgubWluKChxaiAvIGJoaSkgfCAwLCAweDNmZmZmZmYpO1xuXG4gICAgICBhLl9pc2hsbnN1Ym11bChiLCBxaiwgaik7XG4gICAgICB3aGlsZSAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBxai0tO1xuICAgICAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgYS5faXNobG5zdWJtdWwoYiwgMSwgaik7XG4gICAgICAgIGlmICghYS5pc1plcm8oKSkge1xuICAgICAgICAgIGEubmVnYXRpdmUgXj0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1tqXSA9IHFqO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocSkge1xuICAgICAgcS5zdHJpcCgpO1xuICAgIH1cbiAgICBhLnN0cmlwKCk7XG5cbiAgICAvLyBEZW5vcm1hbGl6ZVxuICAgIGlmIChtb2RlICE9PSAnZGl2JyAmJiBzaGlmdCAhPT0gMCkge1xuICAgICAgYS5pdXNocm4oc2hpZnQpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaXY6IHEgfHwgbnVsbCxcbiAgICAgIG1vZDogYVxuICAgIH07XG4gIH07XG5cbiAgLy8gTk9URTogMSkgYG1vZGVgIGNhbiBiZSBzZXQgdG8gYG1vZGAgdG8gcmVxdWVzdCBtb2Qgb25seSxcbiAgLy8gICAgICAgdG8gYGRpdmAgdG8gcmVxdWVzdCBkaXYgb25seSwgb3IgYmUgYWJzZW50IHRvXG4gIC8vICAgICAgIHJlcXVlc3QgYm90aCBkaXYgJiBtb2RcbiAgLy8gICAgICAgMikgYHBvc2l0aXZlYCBpcyB0cnVlIGlmIHVuc2lnbmVkIG1vZCBpcyByZXF1ZXN0ZWRcbiAgQk4ucHJvdG90eXBlLmRpdm1vZCA9IGZ1bmN0aW9uIGRpdm1vZCAobnVtLCBtb2RlLCBwb3NpdGl2ZSkge1xuICAgIGFzc2VydCghbnVtLmlzWmVybygpKTtcblxuICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiBuZXcgQk4oMClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGRpdiwgbW9kLCByZXM7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0sIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaWFkZChudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiByZXMubW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICgodGhpcy5uZWdhdGl2ZSAmIG51bS5uZWdhdGl2ZSkgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlzdWIobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHJlcy5kaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmUgYXQgdGhpcyBwb2ludFxuXG4gICAgLy8gU3RyaXAgYm90aCBudW1iZXJzIHRvIGFwcHJveGltYXRlIHNoaWZ0IHZhbHVlXG4gICAgaWYgKG51bS5sZW5ndGggPiB0aGlzLmxlbmd0aCB8fCB0aGlzLmNtcChudW0pIDwgMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogdGhpc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBWZXJ5IHNob3J0IHJlZHVjdGlvblxuICAgIGlmIChudW0ubGVuZ3RoID09PSAxKSB7XG4gICAgICBpZiAobW9kZSA9PT0gJ2RpdicpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICAgIG1vZDogbnVsbFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSA9PT0gJ21vZCcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IG51bGwsXG4gICAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fd29yZERpdihudW0sIG1vZGUpO1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgIC8gYG51bWBcbiAgQk4ucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uIGRpdiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ2RpdicsIGZhbHNlKS5kaXY7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgJSBgbnVtYFxuICBCTi5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gbW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgZmFsc2UpLm1vZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW1vZCA9IGZ1bmN0aW9uIHVtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCB0cnVlKS5tb2Q7XG4gIH07XG5cbiAgLy8gRmluZCBSb3VuZChgdGhpc2AgLyBgbnVtYClcbiAgQk4ucHJvdG90eXBlLmRpdlJvdW5kID0gZnVuY3Rpb24gZGl2Um91bmQgKG51bSkge1xuICAgIHZhciBkbSA9IHRoaXMuZGl2bW9kKG51bSk7XG5cbiAgICAvLyBGYXN0IGNhc2UgLSBleGFjdCBkaXZpc2lvblxuICAgIGlmIChkbS5tb2QuaXNaZXJvKCkpIHJldHVybiBkbS5kaXY7XG5cbiAgICB2YXIgbW9kID0gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0ubW9kLmlzdWIobnVtKSA6IGRtLm1vZDtcblxuICAgIHZhciBoYWxmID0gbnVtLnVzaHJuKDEpO1xuICAgIHZhciByMiA9IG51bS5hbmRsbigxKTtcbiAgICB2YXIgY21wID0gbW9kLmNtcChoYWxmKTtcblxuICAgIC8vIFJvdW5kIGRvd25cbiAgICBpZiAoY21wIDwgMCB8fCByMiA9PT0gMSAmJiBjbXAgPT09IDApIHJldHVybiBkbS5kaXY7XG5cbiAgICAvLyBSb3VuZCB1cFxuICAgIHJldHVybiBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5kaXYuaXN1Ym4oMSkgOiBkbS5kaXYuaWFkZG4oMSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm1vZG4gPSBmdW5jdGlvbiBtb2RuIChudW0pIHtcbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG4gICAgdmFyIHAgPSAoMSA8PCAyNikgJSBudW07XG5cbiAgICB2YXIgYWNjID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgYWNjID0gKHAgKiBhY2MgKyAodGhpcy53b3Jkc1tpXSB8IDApKSAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIGRpdmlzaW9uIGJ5IG51bWJlclxuICBCTi5wcm90b3R5cGUuaWRpdm4gPSBmdW5jdGlvbiBpZGl2biAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICsgY2FycnkgKiAweDQwMDAwMDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKHcgLyBudW0pIHwgMDtcbiAgICAgIGNhcnJ5ID0gdyAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5kaXZuID0gZnVuY3Rpb24gZGl2biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lZ2NkID0gZnVuY3Rpb24gZWdjZCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIHggPSB0aGlzO1xuICAgIHZhciB5ID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKHgubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHggPSB4LnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHggPSB4LmNsb25lKCk7XG4gICAgfVxuXG4gICAgLy8gQSAqIHggKyBCICogeSA9IHhcbiAgICB2YXIgQSA9IG5ldyBCTigxKTtcbiAgICB2YXIgQiA9IG5ldyBCTigwKTtcblxuICAgIC8vIEMgKiB4ICsgRCAqIHkgPSB5XG4gICAgdmFyIEMgPSBuZXcgQk4oMCk7XG4gICAgdmFyIEQgPSBuZXcgQk4oMSk7XG5cbiAgICB2YXIgZyA9IDA7XG5cbiAgICB3aGlsZSAoeC5pc0V2ZW4oKSAmJiB5LmlzRXZlbigpKSB7XG4gICAgICB4Lml1c2hybigxKTtcbiAgICAgIHkuaXVzaHJuKDEpO1xuICAgICAgKytnO1xuICAgIH1cblxuICAgIHZhciB5cCA9IHkuY2xvbmUoKTtcbiAgICB2YXIgeHAgPSB4LmNsb25lKCk7XG5cbiAgICB3aGlsZSAoIXguaXNaZXJvKCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7ICh4LndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgeC5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEEuaXNPZGQoKSB8fCBCLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEEuaWFkZCh5cCk7XG4gICAgICAgICAgICBCLmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEEuaXVzaHJuKDEpO1xuICAgICAgICAgIEIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7ICh5LndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgeS5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEMuaXNPZGQoKSB8fCBELmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEMuaWFkZCh5cCk7XG4gICAgICAgICAgICBELmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEMuaXVzaHJuKDEpO1xuICAgICAgICAgIEQuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh4LmNtcCh5KSA+PSAwKSB7XG4gICAgICAgIHguaXN1Yih5KTtcbiAgICAgICAgQS5pc3ViKEMpO1xuICAgICAgICBCLmlzdWIoRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5LmlzdWIoeCk7XG4gICAgICAgIEMuaXN1YihBKTtcbiAgICAgICAgRC5pc3ViKEIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhOiBDLFxuICAgICAgYjogRCxcbiAgICAgIGdjZDogeS5pdXNobG4oZylcbiAgICB9O1xuICB9O1xuXG4gIC8vIFRoaXMgaXMgcmVkdWNlZCBpbmNhcm5hdGlvbiBvZiB0aGUgYmluYXJ5IEVFQVxuICAvLyBhYm92ZSwgZGVzaWduYXRlZCB0byBpbnZlcnQgbWVtYmVycyBvZiB0aGVcbiAgLy8gX3ByaW1lXyBmaWVsZHMgRihwKSBhdCBhIG1heGltYWwgc3BlZWRcbiAgQk4ucHJvdG90eXBlLl9pbnZtcCA9IGZ1bmN0aW9uIF9pbnZtcCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIGEgPSB0aGlzO1xuICAgIHZhciBiID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGEgPSBhLnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICAgIHZhciB4MiA9IG5ldyBCTigwKTtcblxuICAgIHZhciBkZWx0YSA9IGIuY2xvbmUoKTtcblxuICAgIHdoaWxlIChhLmNtcG4oMSkgPiAwICYmIGIuY21wbigxKSA+IDApIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7IChhLndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgYS5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgxLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgxLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgxLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoYi53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIGIuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmICh4Mi5pc09kZCgpKSB7XG4gICAgICAgICAgICB4Mi5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4Mi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGEuY21wKGIpID49IDApIHtcbiAgICAgICAgYS5pc3ViKGIpO1xuICAgICAgICB4MS5pc3ViKHgyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGIuaXN1YihhKTtcbiAgICAgICAgeDIuaXN1Yih4MSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlcztcbiAgICBpZiAoYS5jbXBuKDEpID09PSAwKSB7XG4gICAgICByZXMgPSB4MTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0geDI7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQocCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ2NkID0gZnVuY3Rpb24gZ2NkIChudW0pIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIG51bS5hYnMoKTtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gdGhpcy5hYnMoKTtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtLmNsb25lKCk7XG4gICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgYi5uZWdhdGl2ZSA9IDA7XG5cbiAgICAvLyBSZW1vdmUgY29tbW9uIGZhY3RvciBvZiB0d29cbiAgICBmb3IgKHZhciBzaGlmdCA9IDA7IGEuaXNFdmVuKCkgJiYgYi5pc0V2ZW4oKTsgc2hpZnQrKykge1xuICAgICAgYS5pdXNocm4oMSk7XG4gICAgICBiLml1c2hybigxKTtcbiAgICB9XG5cbiAgICBkbyB7XG4gICAgICB3aGlsZSAoYS5pc0V2ZW4oKSkge1xuICAgICAgICBhLml1c2hybigxKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChiLmlzRXZlbigpKSB7XG4gICAgICAgIGIuaXVzaHJuKDEpO1xuICAgICAgfVxuXG4gICAgICB2YXIgciA9IGEuY21wKGIpO1xuICAgICAgaWYgKHIgPCAwKSB7XG4gICAgICAgIC8vIFN3YXAgYGFgIGFuZCBgYmAgdG8gbWFrZSBgYWAgYWx3YXlzIGJpZ2dlciB0aGFuIGBiYFxuICAgICAgICB2YXIgdCA9IGE7XG4gICAgICAgIGEgPSBiO1xuICAgICAgICBiID0gdDtcbiAgICAgIH0gZWxzZSBpZiAociA9PT0gMCB8fCBiLmNtcG4oMSkgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGEuaXN1YihiKTtcbiAgICB9IHdoaWxlICh0cnVlKTtcblxuICAgIHJldHVybiBiLml1c2hsbihzaGlmdCk7XG4gIH07XG5cbiAgLy8gSW52ZXJ0IG51bWJlciBpbiB0aGUgZmllbGQgRihudW0pXG4gIEJOLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZWdjZChudW0pLmEudW1vZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiBpc0V2ZW4gKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uIGlzT2RkICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMTtcbiAgfTtcblxuICAvLyBBbmQgZmlyc3Qgd29yZCBhbmQgbnVtXG4gIEJOLnByb3RvdHlwZS5hbmRsbiA9IGZ1bmN0aW9uIGFuZGxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy53b3Jkc1swXSAmIG51bTtcbiAgfTtcblxuICAvLyBJbmNyZW1lbnQgYXQgdGhlIGJpdCBwb3NpdGlvbiBpbi1saW5lXG4gIEJOLnByb3RvdHlwZS5iaW5jbiA9IGZ1bmN0aW9uIGJpbmNuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicpO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHRoaXMuX2V4cGFuZChzICsgMSk7XG4gICAgICB0aGlzLndvcmRzW3NdIHw9IHE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgYml0IGFuZCBwcm9wYWdhdGUsIGlmIG5lZWRlZFxuICAgIHZhciBjYXJyeSA9IHE7XG4gICAgZm9yICh2YXIgaSA9IHM7IGNhcnJ5ICE9PSAwICYmIGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdyArPSBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+Pj4gMjY7XG4gICAgICB3ICY9IDB4M2ZmZmZmZjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiBpc1plcm8gKCkge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbXBuID0gZnVuY3Rpb24gY21wbiAobnVtKSB7XG4gICAgdmFyIG5lZ2F0aXZlID0gbnVtIDwgMDtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmICFuZWdhdGl2ZSkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG5lZ2F0aXZlKSByZXR1cm4gMTtcblxuICAgIHRoaXMuc3RyaXAoKTtcblxuICAgIHZhciByZXM7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gMSkge1xuICAgICAgcmVzID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5lZ2F0aXZlKSB7XG4gICAgICAgIG51bSA9IC1udW07XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmLCAnTnVtYmVyIGlzIHRvbyBiaWcnKTtcblxuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzWzBdIHwgMDtcbiAgICAgIHJlcyA9IHcgPT09IG51bSA/IDAgOiB3IDwgbnVtID8gLTEgOiAxO1xuICAgIH1cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29tcGFyZSB0d28gbnVtYmVycyBhbmQgcmV0dXJuOlxuICAvLyAxIC0gaWYgYHRoaXNgID4gYG51bWBcbiAgLy8gMCAtIGlmIGB0aGlzYCA9PSBgbnVtYFxuICAvLyAtMSAtIGlmIGB0aGlzYCA8IGBudW1gXG4gIEJOLnByb3RvdHlwZS5jbXAgPSBmdW5jdGlvbiBjbXAgKG51bSkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIDE7XG5cbiAgICB2YXIgcmVzID0gdGhpcy51Y21wKG51bSk7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFVuc2lnbmVkIGNvbXBhcmlzb25cbiAgQk4ucHJvdG90eXBlLnVjbXAgPSBmdW5jdGlvbiB1Y21wIChudW0pIHtcbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBoYXZlIHRoZSBzYW1lIHNpZ25cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSByZXR1cm4gLTE7XG5cbiAgICB2YXIgcmVzID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGEgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHZhciBiID0gbnVtLndvcmRzW2ldIHwgMDtcblxuICAgICAgaWYgKGEgPT09IGIpIGNvbnRpbnVlO1xuICAgICAgaWYgKGEgPCBiKSB7XG4gICAgICAgIHJlcyA9IC0xO1xuICAgICAgfSBlbHNlIGlmIChhID4gYikge1xuICAgICAgICByZXMgPSAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0biA9IGZ1bmN0aW9uIGd0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndCA9IGZ1bmN0aW9uIGd0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlbiA9IGZ1bmN0aW9uIGd0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGUgPSBmdW5jdGlvbiBndGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0biA9IGZ1bmN0aW9uIGx0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHQgPSBmdW5jdGlvbiBsdCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGVuID0gZnVuY3Rpb24gbHRlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZSA9IGZ1bmN0aW9uIGx0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXFuID0gZnVuY3Rpb24gZXFuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAwO1xuICB9O1xuXG4gIC8vXG4gIC8vIEEgcmVkdWNlIGNvbnRleHQsIGNvdWxkIGJlIHVzaW5nIG1vbnRnb21lcnkgb3Igc29tZXRoaW5nIGJldHRlciwgZGVwZW5kaW5nXG4gIC8vIG9uIHRoZSBgbWAgaXRzZWxmLlxuICAvL1xuICBCTi5yZWQgPSBmdW5jdGlvbiByZWQgKG51bSkge1xuICAgIHJldHVybiBuZXcgUmVkKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvUmVkID0gZnVuY3Rpb24gdG9SZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIHJldHVybiBjdHguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tUmVkID0gZnVuY3Rpb24gZnJvbVJlZCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAnZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2ZvcmNlUmVkID0gZnVuY3Rpb24gX2ZvcmNlUmVkIChjdHgpIHtcbiAgICB0aGlzLnJlZCA9IGN0eDtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZm9yY2VSZWQgPSBmdW5jdGlvbiBmb3JjZVJlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkQWRkID0gZnVuY3Rpb24gcmVkQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJQWRkID0gZnVuY3Rpb24gcmVkSUFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaWFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTdWIgPSBmdW5jdGlvbiByZWRTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTdWIgPSBmdW5jdGlvbiByZWRJU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNobCA9IGZ1bmN0aW9uIHJlZFNobCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zaGwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkTXVsID0gZnVuY3Rpb24gcmVkTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElNdWwgPSBmdW5jdGlvbiByZWRJTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTcXIgPSBmdW5jdGlvbiByZWRTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FyKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3FyID0gZnVuY3Rpb24gcmVkSVNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXNxcih0aGlzKTtcbiAgfTtcblxuICAvLyBTcXVhcmUgcm9vdCBvdmVyIHBcbiAgQk4ucHJvdG90eXBlLnJlZFNxcnQgPSBmdW5jdGlvbiByZWRTcXJ0ICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXJ0KHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJbnZtID0gZnVuY3Rpb24gcmVkSW52bSAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW52bSh0aGlzKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgICUgYHJlZCBtb2R1bG9gXG4gIEJOLnByb3RvdHlwZS5yZWROZWcgPSBmdW5jdGlvbiByZWROZWcgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubmVnKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRQb3cgPSBmdW5jdGlvbiByZWRQb3cgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCAmJiAhbnVtLnJlZCwgJ3JlZFBvdyhub3JtYWxOdW0pJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnBvdyh0aGlzLCBudW0pO1xuICB9O1xuXG4gIC8vIFByaW1lIG51bWJlcnMgd2l0aCBlZmZpY2llbnQgcmVkdWN0aW9uXG4gIHZhciBwcmltZXMgPSB7XG4gICAgazI1NjogbnVsbCxcbiAgICBwMjI0OiBudWxsLFxuICAgIHAxOTI6IG51bGwsXG4gICAgcDI1NTE5OiBudWxsXG4gIH07XG5cbiAgLy8gUHNldWRvLU1lcnNlbm5lIHByaW1lXG4gIGZ1bmN0aW9uIE1QcmltZSAobmFtZSwgcCkge1xuICAgIC8vIFAgPSAyIF4gTiAtIEtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMucCA9IG5ldyBCTihwLCAxNik7XG4gICAgdGhpcy5uID0gdGhpcy5wLmJpdExlbmd0aCgpO1xuICAgIHRoaXMuayA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCk7XG5cbiAgICB0aGlzLnRtcCA9IHRoaXMuX3RtcCgpO1xuICB9XG5cbiAgTVByaW1lLnByb3RvdHlwZS5fdG1wID0gZnVuY3Rpb24gX3RtcCAoKSB7XG4gICAgdmFyIHRtcCA9IG5ldyBCTihudWxsKTtcbiAgICB0bXAud29yZHMgPSBuZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubiAvIDEzKSk7XG4gICAgcmV0dXJuIHRtcDtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmlyZWR1Y2UgPSBmdW5jdGlvbiBpcmVkdWNlIChudW0pIHtcbiAgICAvLyBBc3N1bWVzIHRoYXQgYG51bWAgaXMgbGVzcyB0aGFuIGBQXjJgXG4gICAgLy8gbnVtID0gSEkgKiAoMiBeIE4gLSBLKSArIEhJICogSyArIExPID0gSEkgKiBLICsgTE8gKG1vZCBQKVxuICAgIHZhciByID0gbnVtO1xuICAgIHZhciBybGVuO1xuXG4gICAgZG8ge1xuICAgICAgdGhpcy5zcGxpdChyLCB0aGlzLnRtcCk7XG4gICAgICByID0gdGhpcy5pbXVsSyhyKTtcbiAgICAgIHIgPSByLmlhZGQodGhpcy50bXApO1xuICAgICAgcmxlbiA9IHIuYml0TGVuZ3RoKCk7XG4gICAgfSB3aGlsZSAocmxlbiA+IHRoaXMubik7XG5cbiAgICB2YXIgY21wID0gcmxlbiA8IHRoaXMubiA/IC0xIDogci51Y21wKHRoaXMucCk7XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgci53b3Jkc1swXSA9IDA7XG4gICAgICByLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgICByLmlzdWIodGhpcy5wKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHIuc3RyaXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyByIGlzIEJOIHY0IGluc3RhbmNlXG4gICAgICAgIHIuc3RyaXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHIgaXMgQk4gdjUgaW5zdGFuY2VcbiAgICAgICAgci5fc3RyaXAoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgICByZXR1cm4gYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwidmFyIHI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmFuZChsZW4pIHtcbiAgaWYgKCFyKVxuICAgIHIgPSBuZXcgUmFuZChudWxsKTtcblxuICByZXR1cm4gci5nZW5lcmF0ZShsZW4pO1xufTtcblxuZnVuY3Rpb24gUmFuZChyYW5kKSB7XG4gIHRoaXMucmFuZCA9IHJhbmQ7XG59XG5tb2R1bGUuZXhwb3J0cy5SYW5kID0gUmFuZDtcblxuUmFuZC5wcm90b3R5cGUuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZShsZW4pIHtcbiAgcmV0dXJuIHRoaXMuX3JhbmQobGVuKTtcbn07XG5cbi8vIEVtdWxhdGUgY3J5cHRvIEFQSSB1c2luZyByYW5keVxuUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gIGlmICh0aGlzLnJhbmQuZ2V0Qnl0ZXMpXG4gICAgcmV0dXJuIHRoaXMucmFuZC5nZXRCeXRlcyhuKTtcblxuICB2YXIgcmVzID0gbmV3IFVpbnQ4QXJyYXkobik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzLmxlbmd0aDsgaSsrKVxuICAgIHJlc1tpXSA9IHRoaXMucmFuZC5nZXRCeXRlKCk7XG4gIHJldHVybiByZXM7XG59O1xuXG5pZiAodHlwZW9mIHNlbGYgPT09ICdvYmplY3QnKSB7XG4gIGlmIChzZWxmLmNyeXB0byAmJiBzZWxmLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAvLyBNb2Rlcm4gYnJvd3NlcnNcbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICAgIHNlbGYuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnIpO1xuICAgICAgcmV0dXJuIGFycjtcbiAgICB9O1xuICB9IGVsc2UgaWYgKHNlbGYubXNDcnlwdG8gJiYgc2VsZi5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAvLyBJRVxuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICAgICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgICAgc2VsZi5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyKTtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfTtcblxuICAvLyBTYWZhcmkncyBXZWJXb3JrZXJzIGRvIG5vdCBoYXZlIGBjcnlwdG9gXG4gIH0gZWxzZSBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyBPbGQganVua1xuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCB5ZXQnKTtcbiAgICB9O1xuICB9XG59IGVsc2Uge1xuICAvLyBOb2RlLmpzIG9yIFdlYiB3b3JrZXIgd2l0aCBubyBjcnlwdG8gc3VwcG9ydFxuICB0cnkge1xuICAgIHZhciBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcbiAgICBpZiAodHlwZW9mIGNyeXB0by5yYW5kb21CeXRlcyAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCcpO1xuXG4gICAgUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gICAgICByZXR1cm4gY3J5cHRvLnJhbmRvbUJ5dGVzKG4pO1xuICAgIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZWxsaXB0aWMgPSBleHBvcnRzO1xuXG5lbGxpcHRpYy52ZXJzaW9uID0gcmVxdWlyZSgnLi4vcGFja2FnZS5qc29uJykudmVyc2lvbjtcbmVsbGlwdGljLnV0aWxzID0gcmVxdWlyZSgnLi9lbGxpcHRpYy91dGlscycpO1xuZWxsaXB0aWMucmFuZCA9IHJlcXVpcmUoJ2Jyb3JhbmQnKTtcbmVsbGlwdGljLmN1cnZlID0gcmVxdWlyZSgnLi9lbGxpcHRpYy9jdXJ2ZScpO1xuZWxsaXB0aWMuY3VydmVzID0gcmVxdWlyZSgnLi9lbGxpcHRpYy9jdXJ2ZXMnKTtcblxuLy8gUHJvdG9jb2xzXG5lbGxpcHRpYy5lYyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvZWMnKTtcbmVsbGlwdGljLmVkZHNhID0gcmVxdWlyZSgnLi9lbGxpcHRpYy9lZGRzYScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBnZXROQUYgPSB1dGlscy5nZXROQUY7XG52YXIgZ2V0SlNGID0gdXRpbHMuZ2V0SlNGO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gQmFzZUN1cnZlKHR5cGUsIGNvbmYpIHtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy5wID0gbmV3IEJOKGNvbmYucCwgMTYpO1xuXG4gIC8vIFVzZSBNb250Z29tZXJ5LCB3aGVuIHRoZXJlIGlzIG5vIGZhc3QgcmVkdWN0aW9uIGZvciB0aGUgcHJpbWVcbiAgdGhpcy5yZWQgPSBjb25mLnByaW1lID8gQk4ucmVkKGNvbmYucHJpbWUpIDogQk4ubW9udCh0aGlzLnApO1xuXG4gIC8vIFVzZWZ1bCBmb3IgbWFueSBjdXJ2ZXNcbiAgdGhpcy56ZXJvID0gbmV3IEJOKDApLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5vbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLnR3byA9IG5ldyBCTigyKS50b1JlZCh0aGlzLnJlZCk7XG5cbiAgLy8gQ3VydmUgY29uZmlndXJhdGlvbiwgb3B0aW9uYWxcbiAgdGhpcy5uID0gY29uZi5uICYmIG5ldyBCTihjb25mLm4sIDE2KTtcbiAgdGhpcy5nID0gY29uZi5nICYmIHRoaXMucG9pbnRGcm9tSlNPTihjb25mLmcsIGNvbmYuZ1JlZCk7XG5cbiAgLy8gVGVtcG9yYXJ5IGFycmF5c1xuICB0aGlzLl93bmFmVDEgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX3duYWZUMiA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fd25hZlQzID0gbmV3IEFycmF5KDQpO1xuICB0aGlzLl93bmFmVDQgPSBuZXcgQXJyYXkoNCk7XG5cbiAgdGhpcy5fYml0TGVuZ3RoID0gdGhpcy5uID8gdGhpcy5uLmJpdExlbmd0aCgpIDogMDtcblxuICAvLyBHZW5lcmFsaXplZCBHcmVnIE1heHdlbGwncyB0cmlja1xuICB2YXIgYWRqdXN0Q291bnQgPSB0aGlzLm4gJiYgdGhpcy5wLmRpdih0aGlzLm4pO1xuICBpZiAoIWFkanVzdENvdW50IHx8IGFkanVzdENvdW50LmNtcG4oMTAwKSA+IDApIHtcbiAgICB0aGlzLnJlZE4gPSBudWxsO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX21heHdlbGxUcmljayA9IHRydWU7XG4gICAgdGhpcy5yZWROID0gdGhpcy5uLnRvUmVkKHRoaXMucmVkKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBCYXNlQ3VydmU7XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUucG9pbnQgPSBmdW5jdGlvbiBwb2ludCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZSgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUuX2ZpeGVkTmFmTXVsID0gZnVuY3Rpb24gX2ZpeGVkTmFmTXVsKHAsIGspIHtcbiAgYXNzZXJ0KHAucHJlY29tcHV0ZWQpO1xuICB2YXIgZG91YmxlcyA9IHAuX2dldERvdWJsZXMoKTtcblxuICB2YXIgbmFmID0gZ2V0TkFGKGssIDEsIHRoaXMuX2JpdExlbmd0aCk7XG4gIHZhciBJID0gKDEgPDwgKGRvdWJsZXMuc3RlcCArIDEpKSAtIChkb3VibGVzLnN0ZXAgJSAyID09PSAwID8gMiA6IDEpO1xuICBJIC89IDM7XG5cbiAgLy8gVHJhbnNsYXRlIGludG8gbW9yZSB3aW5kb3dlZCBmb3JtXG4gIHZhciByZXByID0gW107XG4gIHZhciBqO1xuICB2YXIgbmFmVztcbiAgZm9yIChqID0gMDsgaiA8IG5hZi5sZW5ndGg7IGogKz0gZG91Ymxlcy5zdGVwKSB7XG4gICAgbmFmVyA9IDA7XG4gICAgZm9yICh2YXIgbCA9IGogKyBkb3VibGVzLnN0ZXAgLSAxOyBsID49IGo7IGwtLSlcbiAgICAgIG5hZlcgPSAobmFmVyA8PCAxKSArIG5hZltsXTtcbiAgICByZXByLnB1c2gobmFmVyk7XG4gIH1cblxuICB2YXIgYSA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICB2YXIgYiA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICBmb3IgKHZhciBpID0gSTsgaSA+IDA7IGktLSkge1xuICAgIGZvciAoaiA9IDA7IGogPCByZXByLmxlbmd0aDsgaisrKSB7XG4gICAgICBuYWZXID0gcmVwcltqXTtcbiAgICAgIGlmIChuYWZXID09PSBpKVxuICAgICAgICBiID0gYi5taXhlZEFkZChkb3VibGVzLnBvaW50c1tqXSk7XG4gICAgICBlbHNlIGlmIChuYWZXID09PSAtaSlcbiAgICAgICAgYiA9IGIubWl4ZWRBZGQoZG91Ymxlcy5wb2ludHNbal0ubmVnKCkpO1xuICAgIH1cbiAgICBhID0gYS5hZGQoYik7XG4gIH1cbiAgcmV0dXJuIGEudG9QKCk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLl93bmFmTXVsID0gZnVuY3Rpb24gX3duYWZNdWwocCwgaykge1xuICB2YXIgdyA9IDQ7XG5cbiAgLy8gUHJlY29tcHV0ZSB3aW5kb3dcbiAgdmFyIG5hZlBvaW50cyA9IHAuX2dldE5BRlBvaW50cyh3KTtcbiAgdyA9IG5hZlBvaW50cy53bmQ7XG4gIHZhciB3bmQgPSBuYWZQb2ludHMucG9pbnRzO1xuXG4gIC8vIEdldCBOQUYgZm9ybVxuICB2YXIgbmFmID0gZ2V0TkFGKGssIHcsIHRoaXMuX2JpdExlbmd0aCk7XG5cbiAgLy8gQWRkIGB0aGlzYCooTisxKSBmb3IgZXZlcnkgdy1OQUYgaW5kZXhcbiAgdmFyIGFjYyA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICBmb3IgKHZhciBpID0gbmFmLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgLy8gQ291bnQgemVyb2VzXG4gICAgZm9yICh2YXIgbCA9IDA7IGkgPj0gMCAmJiBuYWZbaV0gPT09IDA7IGktLSlcbiAgICAgIGwrKztcbiAgICBpZiAoaSA+PSAwKVxuICAgICAgbCsrO1xuICAgIGFjYyA9IGFjYy5kYmxwKGwpO1xuXG4gICAgaWYgKGkgPCAwKVxuICAgICAgYnJlYWs7XG4gICAgdmFyIHogPSBuYWZbaV07XG4gICAgYXNzZXJ0KHogIT09IDApO1xuICAgIGlmIChwLnR5cGUgPT09ICdhZmZpbmUnKSB7XG4gICAgICAvLyBKICstIFBcbiAgICAgIGlmICh6ID4gMClcbiAgICAgICAgYWNjID0gYWNjLm1peGVkQWRkKHduZFsoeiAtIDEpID4+IDFdKTtcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjID0gYWNjLm1peGVkQWRkKHduZFsoLXogLSAxKSA+PiAxXS5uZWcoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEogKy0gSlxuICAgICAgaWYgKHogPiAwKVxuICAgICAgICBhY2MgPSBhY2MuYWRkKHduZFsoeiAtIDEpID4+IDFdKTtcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjID0gYWNjLmFkZCh3bmRbKC16IC0gMSkgPj4gMV0ubmVnKCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcC50eXBlID09PSAnYWZmaW5lJyA/IGFjYy50b1AoKSA6IGFjYztcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUuX3duYWZNdWxBZGQgPSBmdW5jdGlvbiBfd25hZk11bEFkZChkZWZXLFxuICBwb2ludHMsXG4gIGNvZWZmcyxcbiAgbGVuLFxuICBqYWNvYmlhblJlc3VsdCkge1xuICB2YXIgd25kV2lkdGggPSB0aGlzLl93bmFmVDE7XG4gIHZhciB3bmQgPSB0aGlzLl93bmFmVDI7XG4gIHZhciBuYWYgPSB0aGlzLl93bmFmVDM7XG5cbiAgLy8gRmlsbCBhbGwgYXJyYXlzXG4gIHZhciBtYXggPSAwO1xuICB2YXIgaTtcbiAgdmFyIGo7XG4gIHZhciBwO1xuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBwID0gcG9pbnRzW2ldO1xuICAgIHZhciBuYWZQb2ludHMgPSBwLl9nZXROQUZQb2ludHMoZGVmVyk7XG4gICAgd25kV2lkdGhbaV0gPSBuYWZQb2ludHMud25kO1xuICAgIHduZFtpXSA9IG5hZlBvaW50cy5wb2ludHM7XG4gIH1cblxuICAvLyBDb21iIHNtYWxsIHdpbmRvdyBOQUZzXG4gIGZvciAoaSA9IGxlbiAtIDE7IGkgPj0gMTsgaSAtPSAyKSB7XG4gICAgdmFyIGEgPSBpIC0gMTtcbiAgICB2YXIgYiA9IGk7XG4gICAgaWYgKHduZFdpZHRoW2FdICE9PSAxIHx8IHduZFdpZHRoW2JdICE9PSAxKSB7XG4gICAgICBuYWZbYV0gPSBnZXROQUYoY29lZmZzW2FdLCB3bmRXaWR0aFthXSwgdGhpcy5fYml0TGVuZ3RoKTtcbiAgICAgIG5hZltiXSA9IGdldE5BRihjb2VmZnNbYl0sIHduZFdpZHRoW2JdLCB0aGlzLl9iaXRMZW5ndGgpO1xuICAgICAgbWF4ID0gTWF0aC5tYXgobmFmW2FdLmxlbmd0aCwgbWF4KTtcbiAgICAgIG1heCA9IE1hdGgubWF4KG5hZltiXS5sZW5ndGgsIG1heCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgY29tYiA9IFtcbiAgICAgIHBvaW50c1thXSwgLyogMSAqL1xuICAgICAgbnVsbCwgLyogMyAqL1xuICAgICAgbnVsbCwgLyogNSAqL1xuICAgICAgcG9pbnRzW2JdLCAvKiA3ICovXG4gICAgXTtcblxuICAgIC8vIFRyeSB0byBhdm9pZCBQcm9qZWN0aXZlIHBvaW50cywgaWYgcG9zc2libGVcbiAgICBpZiAocG9pbnRzW2FdLnkuY21wKHBvaW50c1tiXS55KSA9PT0gMCkge1xuICAgICAgY29tYlsxXSA9IHBvaW50c1thXS5hZGQocG9pbnRzW2JdKTtcbiAgICAgIGNvbWJbMl0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdLm5lZygpKTtcbiAgICB9IGVsc2UgaWYgKHBvaW50c1thXS55LmNtcChwb2ludHNbYl0ueS5yZWROZWcoKSkgPT09IDApIHtcbiAgICAgIGNvbWJbMV0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdKTtcbiAgICAgIGNvbWJbMl0gPSBwb2ludHNbYV0uYWRkKHBvaW50c1tiXS5uZWcoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbWJbMV0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdKTtcbiAgICAgIGNvbWJbMl0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdLm5lZygpKTtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSBbXG4gICAgICAtMywgLyogLTEgLTEgKi9cbiAgICAgIC0xLCAvKiAtMSAwICovXG4gICAgICAtNSwgLyogLTEgMSAqL1xuICAgICAgLTcsIC8qIDAgLTEgKi9cbiAgICAgIDAsIC8qIDAgMCAqL1xuICAgICAgNywgLyogMCAxICovXG4gICAgICA1LCAvKiAxIC0xICovXG4gICAgICAxLCAvKiAxIDAgKi9cbiAgICAgIDMsICAvKiAxIDEgKi9cbiAgICBdO1xuXG4gICAgdmFyIGpzZiA9IGdldEpTRihjb2VmZnNbYV0sIGNvZWZmc1tiXSk7XG4gICAgbWF4ID0gTWF0aC5tYXgoanNmWzBdLmxlbmd0aCwgbWF4KTtcbiAgICBuYWZbYV0gPSBuZXcgQXJyYXkobWF4KTtcbiAgICBuYWZbYl0gPSBuZXcgQXJyYXkobWF4KTtcbiAgICBmb3IgKGogPSAwOyBqIDwgbWF4OyBqKyspIHtcbiAgICAgIHZhciBqYSA9IGpzZlswXVtqXSB8IDA7XG4gICAgICB2YXIgamIgPSBqc2ZbMV1bal0gfCAwO1xuXG4gICAgICBuYWZbYV1bal0gPSBpbmRleFsoamEgKyAxKSAqIDMgKyAoamIgKyAxKV07XG4gICAgICBuYWZbYl1bal0gPSAwO1xuICAgICAgd25kW2FdID0gY29tYjtcbiAgICB9XG4gIH1cblxuICB2YXIgYWNjID0gdGhpcy5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gIHZhciB0bXAgPSB0aGlzLl93bmFmVDQ7XG4gIGZvciAoaSA9IG1heDsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgayA9IDA7XG5cbiAgICB3aGlsZSAoaSA+PSAwKSB7XG4gICAgICB2YXIgemVybyA9IHRydWU7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgICAgdG1wW2pdID0gbmFmW2pdW2ldIHwgMDtcbiAgICAgICAgaWYgKHRtcFtqXSAhPT0gMClcbiAgICAgICAgICB6ZXJvID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIXplcm8pXG4gICAgICAgIGJyZWFrO1xuICAgICAgaysrO1xuICAgICAgaS0tO1xuICAgIH1cbiAgICBpZiAoaSA+PSAwKVxuICAgICAgaysrO1xuICAgIGFjYyA9IGFjYy5kYmxwKGspO1xuICAgIGlmIChpIDwgMClcbiAgICAgIGJyZWFrO1xuXG4gICAgZm9yIChqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICB2YXIgeiA9IHRtcFtqXTtcbiAgICAgIHA7XG4gICAgICBpZiAoeiA9PT0gMClcbiAgICAgICAgY29udGludWU7XG4gICAgICBlbHNlIGlmICh6ID4gMClcbiAgICAgICAgcCA9IHduZFtqXVsoeiAtIDEpID4+IDFdO1xuICAgICAgZWxzZSBpZiAoeiA8IDApXG4gICAgICAgIHAgPSB3bmRbal1bKC16IC0gMSkgPj4gMV0ubmVnKCk7XG5cbiAgICAgIGlmIChwLnR5cGUgPT09ICdhZmZpbmUnKVxuICAgICAgICBhY2MgPSBhY2MubWl4ZWRBZGQocCk7XG4gICAgICBlbHNlXG4gICAgICAgIGFjYyA9IGFjYy5hZGQocCk7XG4gICAgfVxuICB9XG4gIC8vIFplcm9pZnkgcmVmZXJlbmNlc1xuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspXG4gICAgd25kW2ldID0gbnVsbDtcblxuICBpZiAoamFjb2JpYW5SZXN1bHQpXG4gICAgcmV0dXJuIGFjYztcbiAgZWxzZVxuICAgIHJldHVybiBhY2MudG9QKCk7XG59O1xuXG5mdW5jdGlvbiBCYXNlUG9pbnQoY3VydmUsIHR5cGUpIHtcbiAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICB0aGlzLnR5cGUgPSB0eXBlO1xuICB0aGlzLnByZWNvbXB1dGVkID0gbnVsbDtcbn1cbkJhc2VDdXJ2ZS5CYXNlUG9pbnQgPSBCYXNlUG9pbnQ7XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcSgvKm90aGVyKi8pIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZSgpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUudmFsaWRhdGUodGhpcyk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLmRlY29kZVBvaW50ID0gZnVuY3Rpb24gZGVjb2RlUG9pbnQoYnl0ZXMsIGVuYykge1xuICBieXRlcyA9IHV0aWxzLnRvQXJyYXkoYnl0ZXMsIGVuYyk7XG5cbiAgdmFyIGxlbiA9IHRoaXMucC5ieXRlTGVuZ3RoKCk7XG5cbiAgLy8gdW5jb21wcmVzc2VkLCBoeWJyaWQtb2RkLCBoeWJyaWQtZXZlblxuICBpZiAoKGJ5dGVzWzBdID09PSAweDA0IHx8IGJ5dGVzWzBdID09PSAweDA2IHx8IGJ5dGVzWzBdID09PSAweDA3KSAmJlxuICAgICAgYnl0ZXMubGVuZ3RoIC0gMSA9PT0gMiAqIGxlbikge1xuICAgIGlmIChieXRlc1swXSA9PT0gMHgwNilcbiAgICAgIGFzc2VydChieXRlc1tieXRlcy5sZW5ndGggLSAxXSAlIDIgPT09IDApO1xuICAgIGVsc2UgaWYgKGJ5dGVzWzBdID09PSAweDA3KVxuICAgICAgYXNzZXJ0KGJ5dGVzW2J5dGVzLmxlbmd0aCAtIDFdICUgMiA9PT0gMSk7XG5cbiAgICB2YXIgcmVzID0gIHRoaXMucG9pbnQoYnl0ZXMuc2xpY2UoMSwgMSArIGxlbiksXG4gICAgICBieXRlcy5zbGljZSgxICsgbGVuLCAxICsgMiAqIGxlbikpO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSBlbHNlIGlmICgoYnl0ZXNbMF0gPT09IDB4MDIgfHwgYnl0ZXNbMF0gPT09IDB4MDMpICYmXG4gICAgICAgICAgICAgIGJ5dGVzLmxlbmd0aCAtIDEgPT09IGxlbikge1xuICAgIHJldHVybiB0aGlzLnBvaW50RnJvbVgoYnl0ZXMuc2xpY2UoMSwgMSArIGxlbiksIGJ5dGVzWzBdID09PSAweDAzKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcG9pbnQgZm9ybWF0Jyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVuY29kZUNvbXByZXNzZWQgPSBmdW5jdGlvbiBlbmNvZGVDb21wcmVzc2VkKGVuYykge1xuICByZXR1cm4gdGhpcy5lbmNvZGUoZW5jLCB0cnVlKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2VuY29kZSA9IGZ1bmN0aW9uIF9lbmNvZGUoY29tcGFjdCkge1xuICB2YXIgbGVuID0gdGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIHggPSB0aGlzLmdldFgoKS50b0FycmF5KCdiZScsIGxlbik7XG5cbiAgaWYgKGNvbXBhY3QpXG4gICAgcmV0dXJuIFsgdGhpcy5nZXRZKCkuaXNFdmVuKCkgPyAweDAyIDogMHgwMyBdLmNvbmNhdCh4KTtcblxuICByZXR1cm4gWyAweDA0IF0uY29uY2F0KHgsIHRoaXMuZ2V0WSgpLnRvQXJyYXkoJ2JlJywgbGVuKSk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShlbmMsIGNvbXBhY3QpIHtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLl9lbmNvZGUoY29tcGFjdCksIGVuYyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLnByZWNvbXB1dGUgPSBmdW5jdGlvbiBwcmVjb21wdXRlKHBvd2VyKSB7XG4gIGlmICh0aGlzLnByZWNvbXB1dGVkKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIHZhciBwcmVjb21wdXRlZCA9IHtcbiAgICBkb3VibGVzOiBudWxsLFxuICAgIG5hZjogbnVsbCxcbiAgICBiZXRhOiBudWxsLFxuICB9O1xuICBwcmVjb21wdXRlZC5uYWYgPSB0aGlzLl9nZXROQUZQb2ludHMoOCk7XG4gIHByZWNvbXB1dGVkLmRvdWJsZXMgPSB0aGlzLl9nZXREb3VibGVzKDQsIHBvd2VyKTtcbiAgcHJlY29tcHV0ZWQuYmV0YSA9IHRoaXMuX2dldEJldGEoKTtcbiAgdGhpcy5wcmVjb21wdXRlZCA9IHByZWNvbXB1dGVkO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5faGFzRG91YmxlcyA9IGZ1bmN0aW9uIF9oYXNEb3VibGVzKGspIHtcbiAgaWYgKCF0aGlzLnByZWNvbXB1dGVkKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB2YXIgZG91YmxlcyA9IHRoaXMucHJlY29tcHV0ZWQuZG91YmxlcztcbiAgaWYgKCFkb3VibGVzKVxuICAgIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gZG91Ymxlcy5wb2ludHMubGVuZ3RoID49IE1hdGguY2VpbCgoay5iaXRMZW5ndGgoKSArIDEpIC8gZG91Ymxlcy5zdGVwKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2dldERvdWJsZXMgPSBmdW5jdGlvbiBfZ2V0RG91YmxlcyhzdGVwLCBwb3dlcikge1xuICBpZiAodGhpcy5wcmVjb21wdXRlZCAmJiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMpXG4gICAgcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQuZG91YmxlcztcblxuICB2YXIgZG91YmxlcyA9IFsgdGhpcyBdO1xuICB2YXIgYWNjID0gdGhpcztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3dlcjsgaSArPSBzdGVwKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzdGVwOyBqKyspXG4gICAgICBhY2MgPSBhY2MuZGJsKCk7XG4gICAgZG91Ymxlcy5wdXNoKGFjYyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdGVwOiBzdGVwLFxuICAgIHBvaW50czogZG91YmxlcyxcbiAgfTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2dldE5BRlBvaW50cyA9IGZ1bmN0aW9uIF9nZXROQUZQb2ludHMod25kKSB7XG4gIGlmICh0aGlzLnByZWNvbXB1dGVkICYmIHRoaXMucHJlY29tcHV0ZWQubmFmKVxuICAgIHJldHVybiB0aGlzLnByZWNvbXB1dGVkLm5hZjtcblxuICB2YXIgcmVzID0gWyB0aGlzIF07XG4gIHZhciBtYXggPSAoMSA8PCB3bmQpIC0gMTtcbiAgdmFyIGRibCA9IG1heCA9PT0gMSA/IG51bGwgOiB0aGlzLmRibCgpO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IG1heDsgaSsrKVxuICAgIHJlc1tpXSA9IHJlc1tpIC0gMV0uYWRkKGRibCk7XG4gIHJldHVybiB7XG4gICAgd25kOiB3bmQsXG4gICAgcG9pbnRzOiByZXMsXG4gIH07XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9nZXRCZXRhID0gZnVuY3Rpb24gX2dldEJldGEoKSB7XG4gIHJldHVybiBudWxsO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5kYmxwID0gZnVuY3Rpb24gZGJscChrKSB7XG4gIHZhciByID0gdGhpcztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrOyBpKyspXG4gICAgciA9IHIuZGJsKCk7XG4gIHJldHVybiByO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKTtcblxudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gRWR3YXJkc0N1cnZlKGNvbmYpIHtcbiAgLy8gTk9URTogSW1wb3J0YW50IGFzIHdlIGFyZSBjcmVhdGluZyBwb2ludCBpbiBCYXNlLmNhbGwoKVxuICB0aGlzLnR3aXN0ZWQgPSAoY29uZi5hIHwgMCkgIT09IDE7XG4gIHRoaXMubU9uZUEgPSB0aGlzLnR3aXN0ZWQgJiYgKGNvbmYuYSB8IDApID09PSAtMTtcbiAgdGhpcy5leHRlbmRlZCA9IHRoaXMubU9uZUE7XG5cbiAgQmFzZS5jYWxsKHRoaXMsICdlZHdhcmRzJywgY29uZik7XG5cbiAgdGhpcy5hID0gbmV3IEJOKGNvbmYuYSwgMTYpLnVtb2QodGhpcy5yZWQubSk7XG4gIHRoaXMuYSA9IHRoaXMuYS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYyA9IG5ldyBCTihjb25mLmMsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYzIgPSB0aGlzLmMucmVkU3FyKCk7XG4gIHRoaXMuZCA9IG5ldyBCTihjb25mLmQsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuZGQgPSB0aGlzLmQucmVkQWRkKHRoaXMuZCk7XG5cbiAgYXNzZXJ0KCF0aGlzLnR3aXN0ZWQgfHwgdGhpcy5jLmZyb21SZWQoKS5jbXBuKDEpID09PSAwKTtcbiAgdGhpcy5vbmVDID0gKGNvbmYuYyB8IDApID09PSAxO1xufVxuaW5oZXJpdHMoRWR3YXJkc0N1cnZlLCBCYXNlKTtcbm1vZHVsZS5leHBvcnRzID0gRWR3YXJkc0N1cnZlO1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLl9tdWxBID0gZnVuY3Rpb24gX211bEEobnVtKSB7XG4gIGlmICh0aGlzLm1PbmVBKVxuICAgIHJldHVybiBudW0ucmVkTmVnKCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5hLnJlZE11bChudW0pO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5fbXVsQyA9IGZ1bmN0aW9uIF9tdWxDKG51bSkge1xuICBpZiAodGhpcy5vbmVDKVxuICAgIHJldHVybiBudW07XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jLnJlZE11bChudW0pO1xufTtcblxuLy8gSnVzdCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNob3J0IGN1cnZlXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLmpwb2ludCA9IGZ1bmN0aW9uIGpwb2ludCh4LCB5LCB6LCB0KSB7XG4gIHJldHVybiB0aGlzLnBvaW50KHgsIHksIHosIHQpO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludEZyb21YID0gZnVuY3Rpb24gcG9pbnRGcm9tWCh4LCBvZGQpIHtcbiAgeCA9IG5ldyBCTih4LCAxNik7XG4gIGlmICgheC5yZWQpXG4gICAgeCA9IHgudG9SZWQodGhpcy5yZWQpO1xuXG4gIHZhciB4MiA9IHgucmVkU3FyKCk7XG4gIHZhciByaHMgPSB0aGlzLmMyLnJlZFN1Yih0aGlzLmEucmVkTXVsKHgyKSk7XG4gIHZhciBsaHMgPSB0aGlzLm9uZS5yZWRTdWIodGhpcy5jMi5yZWRNdWwodGhpcy5kKS5yZWRNdWwoeDIpKTtcblxuICB2YXIgeTIgPSByaHMucmVkTXVsKGxocy5yZWRJbnZtKCkpO1xuICB2YXIgeSA9IHkyLnJlZFNxcnQoKTtcbiAgaWYgKHkucmVkU3FyKCkucmVkU3ViKHkyKS5jbXAodGhpcy56ZXJvKSAhPT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcblxuICB2YXIgaXNPZGQgPSB5LmZyb21SZWQoKS5pc09kZCgpO1xuICBpZiAob2RkICYmICFpc09kZCB8fCAhb2RkICYmIGlzT2RkKVxuICAgIHkgPSB5LnJlZE5lZygpO1xuXG4gIHJldHVybiB0aGlzLnBvaW50KHgsIHkpO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludEZyb21ZID0gZnVuY3Rpb24gcG9pbnRGcm9tWSh5LCBvZGQpIHtcbiAgeSA9IG5ldyBCTih5LCAxNik7XG4gIGlmICgheS5yZWQpXG4gICAgeSA9IHkudG9SZWQodGhpcy5yZWQpO1xuXG4gIC8vIHheMiA9ICh5XjIgLSBjXjIpIC8gKGNeMiBkIHleMiAtIGEpXG4gIHZhciB5MiA9IHkucmVkU3FyKCk7XG4gIHZhciBsaHMgPSB5Mi5yZWRTdWIodGhpcy5jMik7XG4gIHZhciByaHMgPSB5Mi5yZWRNdWwodGhpcy5kKS5yZWRNdWwodGhpcy5jMikucmVkU3ViKHRoaXMuYSk7XG4gIHZhciB4MiA9IGxocy5yZWRNdWwocmhzLnJlZEludm0oKSk7XG5cbiAgaWYgKHgyLmNtcCh0aGlzLnplcm8pID09PSAwKSB7XG4gICAgaWYgKG9kZClcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiB0aGlzLnBvaW50KHRoaXMuemVybywgeSk7XG4gIH1cblxuICB2YXIgeCA9IHgyLnJlZFNxcnQoKTtcbiAgaWYgKHgucmVkU3FyKCkucmVkU3ViKHgyKS5jbXAodGhpcy56ZXJvKSAhPT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcblxuICBpZiAoeC5mcm9tUmVkKCkuaXNPZGQoKSAhPT0gb2RkKVxuICAgIHggPSB4LnJlZE5lZygpO1xuXG4gIHJldHVybiB0aGlzLnBvaW50KHgsIHkpO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKHBvaW50KSB7XG4gIGlmIChwb2ludC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgLy8gQ3VydmU6IEEgKiBYXjIgKyBZXjIgPSBDXjIgKiAoMSArIEQgKiBYXjIgKiBZXjIpXG4gIHBvaW50Lm5vcm1hbGl6ZSgpO1xuXG4gIHZhciB4MiA9IHBvaW50LngucmVkU3FyKCk7XG4gIHZhciB5MiA9IHBvaW50LnkucmVkU3FyKCk7XG4gIHZhciBsaHMgPSB4Mi5yZWRNdWwodGhpcy5hKS5yZWRBZGQoeTIpO1xuICB2YXIgcmhzID0gdGhpcy5jMi5yZWRNdWwodGhpcy5vbmUucmVkQWRkKHRoaXMuZC5yZWRNdWwoeDIpLnJlZE11bCh5MikpKTtcblxuICByZXR1cm4gbGhzLmNtcChyaHMpID09PSAwO1xufTtcblxuZnVuY3Rpb24gUG9pbnQoY3VydmUsIHgsIHksIHosIHQpIHtcbiAgQmFzZS5CYXNlUG9pbnQuY2FsbCh0aGlzLCBjdXJ2ZSwgJ3Byb2plY3RpdmUnKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeSA9PT0gbnVsbCAmJiB6ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICAgIHRoaXMueSA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueiA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMudCA9IHRoaXMuY3VydmUuemVybztcbiAgICB0aGlzLnpPbmUgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy55ID0gbmV3IEJOKHksIDE2KTtcbiAgICB0aGlzLnogPSB6ID8gbmV3IEJOKHosIDE2KSA6IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMudCA9IHQgJiYgbmV3IEJOKHQsIDE2KTtcbiAgICBpZiAoIXRoaXMueC5yZWQpXG4gICAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICghdGhpcy55LnJlZClcbiAgICAgIHRoaXMueSA9IHRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKCF0aGlzLnoucmVkKVxuICAgICAgdGhpcy56ID0gdGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAodGhpcy50ICYmICF0aGlzLnQucmVkKVxuICAgICAgdGhpcy50ID0gdGhpcy50LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICB0aGlzLnpPbmUgPSB0aGlzLnogPT09IHRoaXMuY3VydmUub25lO1xuXG4gICAgLy8gVXNlIGV4dGVuZGVkIGNvb3JkaW5hdGVzXG4gICAgaWYgKHRoaXMuY3VydmUuZXh0ZW5kZWQgJiYgIXRoaXMudCkge1xuICAgICAgdGhpcy50ID0gdGhpcy54LnJlZE11bCh0aGlzLnkpO1xuICAgICAgaWYgKCF0aGlzLnpPbmUpXG4gICAgICAgIHRoaXMudCA9IHRoaXMudC5yZWRNdWwodGhpcy56LnJlZEludm0oKSk7XG4gICAgfVxuICB9XG59XG5pbmhlcml0cyhQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnBvaW50RnJvbUpTT04gPSBmdW5jdGlvbiBwb2ludEZyb21KU09OKG9iaikge1xuICByZXR1cm4gUG9pbnQuZnJvbUpTT04odGhpcywgb2JqKTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnQgPSBmdW5jdGlvbiBwb2ludCh4LCB5LCB6LCB0KSB7XG4gIHJldHVybiBuZXcgUG9pbnQodGhpcywgeCwgeSwgeiwgdCk7XG59O1xuXG5Qb2ludC5mcm9tSlNPTiA9IGZ1bmN0aW9uIGZyb21KU09OKGN1cnZlLCBvYmopIHtcbiAgcmV0dXJuIG5ldyBQb2ludChjdXJ2ZSwgb2JqWzBdLCBvYmpbMV0sIG9ialsyXSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gJzxFQyBQb2ludCBJbmZpbml0eT4nO1xuICByZXR1cm4gJzxFQyBQb2ludCB4OiAnICsgdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB5OiAnICsgdGhpcy55LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB6OiAnICsgdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgKyAnPic7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuaXNJbmZpbml0eSA9IGZ1bmN0aW9uIGlzSW5maW5pdHkoKSB7XG4gIC8vIFhYWCBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IHplcm8gaXMgYWx3YXlzIHplcm8gaW4gcmVkXG4gIHJldHVybiB0aGlzLnguY21wbigwKSA9PT0gMCAmJlxuICAgICh0aGlzLnkuY21wKHRoaXMueikgPT09IDAgfHxcbiAgICAodGhpcy56T25lICYmIHRoaXMueS5jbXAodGhpcy5jdXJ2ZS5jKSA9PT0gMCkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9leHREYmwgPSBmdW5jdGlvbiBfZXh0RGJsKCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1leHRlbmRlZC0xLmh0bWxcbiAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwOC1od2NkXG4gIC8vIDRNICsgNFNcblxuICAvLyBBID0gWDFeMlxuICB2YXIgYSA9IHRoaXMueC5yZWRTcXIoKTtcbiAgLy8gQiA9IFkxXjJcbiAgdmFyIGIgPSB0aGlzLnkucmVkU3FyKCk7XG4gIC8vIEMgPSAyICogWjFeMlxuICB2YXIgYyA9IHRoaXMuei5yZWRTcXIoKTtcbiAgYyA9IGMucmVkSUFkZChjKTtcbiAgLy8gRCA9IGEgKiBBXG4gIHZhciBkID0gdGhpcy5jdXJ2ZS5fbXVsQShhKTtcbiAgLy8gRSA9IChYMSArIFkxKV4yIC0gQSAtIEJcbiAgdmFyIGUgPSB0aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCkucmVkSVN1YihhKS5yZWRJU3ViKGIpO1xuICAvLyBHID0gRCArIEJcbiAgdmFyIGcgPSBkLnJlZEFkZChiKTtcbiAgLy8gRiA9IEcgLSBDXG4gIHZhciBmID0gZy5yZWRTdWIoYyk7XG4gIC8vIEggPSBEIC0gQlxuICB2YXIgaCA9IGQucmVkU3ViKGIpO1xuICAvLyBYMyA9IEUgKiBGXG4gIHZhciBueCA9IGUucmVkTXVsKGYpO1xuICAvLyBZMyA9IEcgKiBIXG4gIHZhciBueSA9IGcucmVkTXVsKGgpO1xuICAvLyBUMyA9IEUgKiBIXG4gIHZhciBudCA9IGUucmVkTXVsKGgpO1xuICAvLyBaMyA9IEYgKiBHXG4gIHZhciBueiA9IGYucmVkTXVsKGcpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56LCBudCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX3Byb2pEYmwgPSBmdW5jdGlvbiBfcHJvakRibCgpIHtcbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXR3aXN0ZWQtcHJvamVjdGl2ZS5odG1sXG4gIC8vICAgICAjZG91YmxpbmctZGJsLTIwMDgtYmJqbHBcbiAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwNy1ibFxuICAvLyBhbmQgb3RoZXJzXG4gIC8vIEdlbmVyYWxseSAzTSArIDRTIG9yIDJNICsgNFNcblxuICAvLyBCID0gKFgxICsgWTEpXjJcbiAgdmFyIGIgPSB0aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCk7XG4gIC8vIEMgPSBYMV4yXG4gIHZhciBjID0gdGhpcy54LnJlZFNxcigpO1xuICAvLyBEID0gWTFeMlxuICB2YXIgZCA9IHRoaXMueS5yZWRTcXIoKTtcblxuICB2YXIgbng7XG4gIHZhciBueTtcbiAgdmFyIG56O1xuICB2YXIgZTtcbiAgdmFyIGg7XG4gIHZhciBqO1xuICBpZiAodGhpcy5jdXJ2ZS50d2lzdGVkKSB7XG4gICAgLy8gRSA9IGEgKiBDXG4gICAgZSA9IHRoaXMuY3VydmUuX211bEEoYyk7XG4gICAgLy8gRiA9IEUgKyBEXG4gICAgdmFyIGYgPSBlLnJlZEFkZChkKTtcbiAgICBpZiAodGhpcy56T25lKSB7XG4gICAgICAvLyBYMyA9IChCIC0gQyAtIEQpICogKEYgLSAyKVxuICAgICAgbnggPSBiLnJlZFN1YihjKS5yZWRTdWIoZCkucmVkTXVsKGYucmVkU3ViKHRoaXMuY3VydmUudHdvKSk7XG4gICAgICAvLyBZMyA9IEYgKiAoRSAtIEQpXG4gICAgICBueSA9IGYucmVkTXVsKGUucmVkU3ViKGQpKTtcbiAgICAgIC8vIFozID0gRl4yIC0gMiAqIEZcbiAgICAgIG56ID0gZi5yZWRTcXIoKS5yZWRTdWIoZikucmVkU3ViKGYpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIID0gWjFeMlxuICAgICAgaCA9IHRoaXMuei5yZWRTcXIoKTtcbiAgICAgIC8vIEogPSBGIC0gMiAqIEhcbiAgICAgIGogPSBmLnJlZFN1YihoKS5yZWRJU3ViKGgpO1xuICAgICAgLy8gWDMgPSAoQi1DLUQpKkpcbiAgICAgIG54ID0gYi5yZWRTdWIoYykucmVkSVN1YihkKS5yZWRNdWwoaik7XG4gICAgICAvLyBZMyA9IEYgKiAoRSAtIEQpXG4gICAgICBueSA9IGYucmVkTXVsKGUucmVkU3ViKGQpKTtcbiAgICAgIC8vIFozID0gRiAqIEpcbiAgICAgIG56ID0gZi5yZWRNdWwoaik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEUgPSBDICsgRFxuICAgIGUgPSBjLnJlZEFkZChkKTtcbiAgICAvLyBIID0gKGMgKiBaMSleMlxuICAgIGggPSB0aGlzLmN1cnZlLl9tdWxDKHRoaXMueikucmVkU3FyKCk7XG4gICAgLy8gSiA9IEUgLSAyICogSFxuICAgIGogPSBlLnJlZFN1YihoKS5yZWRTdWIoaCk7XG4gICAgLy8gWDMgPSBjICogKEIgLSBFKSAqIEpcbiAgICBueCA9IHRoaXMuY3VydmUuX211bEMoYi5yZWRJU3ViKGUpKS5yZWRNdWwoaik7XG4gICAgLy8gWTMgPSBjICogRSAqIChDIC0gRClcbiAgICBueSA9IHRoaXMuY3VydmUuX211bEMoZSkucmVkTXVsKGMucmVkSVN1YihkKSk7XG4gICAgLy8gWjMgPSBFICogSlxuICAgIG56ID0gZS5yZWRNdWwoaik7XG4gIH1cbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gRG91YmxlIGluIGV4dGVuZGVkIGNvb3JkaW5hdGVzXG4gIGlmICh0aGlzLmN1cnZlLmV4dGVuZGVkKVxuICAgIHJldHVybiB0aGlzLl9leHREYmwoKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl9wcm9qRGJsKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX2V4dEFkZCA9IGZ1bmN0aW9uIF9leHRBZGQocCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1leHRlbmRlZC0xLmh0bWxcbiAgLy8gICAgICNhZGRpdGlvbi1hZGQtMjAwOC1od2NkLTNcbiAgLy8gOE1cblxuICAvLyBBID0gKFkxIC0gWDEpICogKFkyIC0gWDIpXG4gIHZhciBhID0gdGhpcy55LnJlZFN1Yih0aGlzLngpLnJlZE11bChwLnkucmVkU3ViKHAueCkpO1xuICAvLyBCID0gKFkxICsgWDEpICogKFkyICsgWDIpXG4gIHZhciBiID0gdGhpcy55LnJlZEFkZCh0aGlzLngpLnJlZE11bChwLnkucmVkQWRkKHAueCkpO1xuICAvLyBDID0gVDEgKiBrICogVDJcbiAgdmFyIGMgPSB0aGlzLnQucmVkTXVsKHRoaXMuY3VydmUuZGQpLnJlZE11bChwLnQpO1xuICAvLyBEID0gWjEgKiAyICogWjJcbiAgdmFyIGQgPSB0aGlzLnoucmVkTXVsKHAuei5yZWRBZGQocC56KSk7XG4gIC8vIEUgPSBCIC0gQVxuICB2YXIgZSA9IGIucmVkU3ViKGEpO1xuICAvLyBGID0gRCAtIENcbiAgdmFyIGYgPSBkLnJlZFN1YihjKTtcbiAgLy8gRyA9IEQgKyBDXG4gIHZhciBnID0gZC5yZWRBZGQoYyk7XG4gIC8vIEggPSBCICsgQVxuICB2YXIgaCA9IGIucmVkQWRkKGEpO1xuICAvLyBYMyA9IEUgKiBGXG4gIHZhciBueCA9IGUucmVkTXVsKGYpO1xuICAvLyBZMyA9IEcgKiBIXG4gIHZhciBueSA9IGcucmVkTXVsKGgpO1xuICAvLyBUMyA9IEUgKiBIXG4gIHZhciBudCA9IGUucmVkTXVsKGgpO1xuICAvLyBaMyA9IEYgKiBHXG4gIHZhciBueiA9IGYucmVkTXVsKGcpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56LCBudCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX3Byb2pBZGQgPSBmdW5jdGlvbiBfcHJvakFkZChwKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLXByb2plY3RpdmUuaHRtbFxuICAvLyAgICAgI2FkZGl0aW9uLWFkZC0yMDA4LWJiamxwXG4gIC8vICAgICAjYWRkaXRpb24tYWRkLTIwMDctYmxcbiAgLy8gMTBNICsgMVNcblxuICAvLyBBID0gWjEgKiBaMlxuICB2YXIgYSA9IHRoaXMuei5yZWRNdWwocC56KTtcbiAgLy8gQiA9IEFeMlxuICB2YXIgYiA9IGEucmVkU3FyKCk7XG4gIC8vIEMgPSBYMSAqIFgyXG4gIHZhciBjID0gdGhpcy54LnJlZE11bChwLngpO1xuICAvLyBEID0gWTEgKiBZMlxuICB2YXIgZCA9IHRoaXMueS5yZWRNdWwocC55KTtcbiAgLy8gRSA9IGQgKiBDICogRFxuICB2YXIgZSA9IHRoaXMuY3VydmUuZC5yZWRNdWwoYykucmVkTXVsKGQpO1xuICAvLyBGID0gQiAtIEVcbiAgdmFyIGYgPSBiLnJlZFN1YihlKTtcbiAgLy8gRyA9IEIgKyBFXG4gIHZhciBnID0gYi5yZWRBZGQoZSk7XG4gIC8vIFgzID0gQSAqIEYgKiAoKFgxICsgWTEpICogKFgyICsgWTIpIC0gQyAtIEQpXG4gIHZhciB0bXAgPSB0aGlzLngucmVkQWRkKHRoaXMueSkucmVkTXVsKHAueC5yZWRBZGQocC55KSkucmVkSVN1YihjKS5yZWRJU3ViKGQpO1xuICB2YXIgbnggPSBhLnJlZE11bChmKS5yZWRNdWwodG1wKTtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIGlmICh0aGlzLmN1cnZlLnR3aXN0ZWQpIHtcbiAgICAvLyBZMyA9IEEgKiBHICogKEQgLSBhICogQylcbiAgICBueSA9IGEucmVkTXVsKGcpLnJlZE11bChkLnJlZFN1Yih0aGlzLmN1cnZlLl9tdWxBKGMpKSk7XG4gICAgLy8gWjMgPSBGICogR1xuICAgIG56ID0gZi5yZWRNdWwoZyk7XG4gIH0gZWxzZSB7XG4gICAgLy8gWTMgPSBBICogRyAqIChEIC0gQylcbiAgICBueSA9IGEucmVkTXVsKGcpLnJlZE11bChkLnJlZFN1YihjKSk7XG4gICAgLy8gWjMgPSBjICogRiAqIEdcbiAgICBueiA9IHRoaXMuY3VydmUuX211bEMoZikucmVkTXVsKGcpO1xuICB9XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChwKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gcDtcbiAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIGlmICh0aGlzLmN1cnZlLmV4dGVuZGVkKVxuICAgIHJldHVybiB0aGlzLl9leHRBZGQocCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fcHJvakFkZChwKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwoaykge1xuICBpZiAodGhpcy5faGFzRG91YmxlcyhrKSlcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZml4ZWROYWZNdWwodGhpcywgayk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLCBrKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWxBZGQgPSBmdW5jdGlvbiBtdWxBZGQoazEsIHAsIGsyKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIFsgdGhpcywgcCBdLCBbIGsxLCBrMiBdLCAyLCBmYWxzZSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuam11bEFkZCA9IGZ1bmN0aW9uIGptdWxBZGQoazEsIHAsIGsyKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIFsgdGhpcywgcCBdLCBbIGsxLCBrMiBdLCAyLCB0cnVlKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gIGlmICh0aGlzLnpPbmUpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gTm9ybWFsaXplIGNvb3JkaW5hdGVzXG4gIHZhciB6aSA9IHRoaXMuei5yZWRJbnZtKCk7XG4gIHRoaXMueCA9IHRoaXMueC5yZWRNdWwoemkpO1xuICB0aGlzLnkgPSB0aGlzLnkucmVkTXVsKHppKTtcbiAgaWYgKHRoaXMudClcbiAgICB0aGlzLnQgPSB0aGlzLnQucmVkTXVsKHppKTtcbiAgdGhpcy56ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gIHRoaXMuek9uZSA9IHRydWU7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZygpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQodGhpcy54LnJlZE5lZygpLFxuICAgIHRoaXMueSxcbiAgICB0aGlzLnosXG4gICAgdGhpcy50ICYmIHRoaXMudC5yZWROZWcoKSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uIGdldFgoKSB7XG4gIHRoaXMubm9ybWFsaXplKCk7XG4gIHJldHVybiB0aGlzLnguZnJvbVJlZCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFkgPSBmdW5jdGlvbiBnZXRZKCkge1xuICB0aGlzLm5vcm1hbGl6ZSgpO1xuICByZXR1cm4gdGhpcy55LmZyb21SZWQoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKG90aGVyKSB7XG4gIHJldHVybiB0aGlzID09PSBvdGhlciB8fFxuICAgICAgICAgdGhpcy5nZXRYKCkuY21wKG90aGVyLmdldFgoKSkgPT09IDAgJiZcbiAgICAgICAgIHRoaXMuZ2V0WSgpLmNtcChvdGhlci5nZXRZKCkpID09PSAwO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmVxWFRvUCA9IGZ1bmN0aW9uIGVxWFRvUCh4KSB7XG4gIHZhciByeCA9IHgudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh0aGlzLnopO1xuICBpZiAodGhpcy54LmNtcChyeCkgPT09IDApXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgdmFyIHhjID0geC5jbG9uZSgpO1xuICB2YXIgdCA9IHRoaXMuY3VydmUucmVkTi5yZWRNdWwodGhpcy56KTtcbiAgZm9yICg7Oykge1xuICAgIHhjLmlhZGQodGhpcy5jdXJ2ZS5uKTtcbiAgICBpZiAoeGMuY21wKHRoaXMuY3VydmUucCkgPj0gMClcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHJ4LnJlZElBZGQodCk7XG4gICAgaWYgKHRoaXMueC5jbXAocngpID09PSAwKVxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG5cbi8vIENvbXBhdGliaWxpdHkgd2l0aCBCYXNlQ3VydmVcblBvaW50LnByb3RvdHlwZS50b1AgPSBQb2ludC5wcm90b3R5cGUubm9ybWFsaXplO1xuUG9pbnQucHJvdG90eXBlLm1peGVkQWRkID0gUG9pbnQucHJvdG90eXBlLmFkZDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGN1cnZlID0gZXhwb3J0cztcblxuY3VydmUuYmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpO1xuY3VydmUuc2hvcnQgPSByZXF1aXJlKCcuL3Nob3J0Jyk7XG5jdXJ2ZS5tb250ID0gcmVxdWlyZSgnLi9tb250Jyk7XG5jdXJ2ZS5lZHdhcmRzID0gcmVxdWlyZSgnLi9lZHdhcmRzJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKTtcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxuZnVuY3Rpb24gTW9udEN1cnZlKGNvbmYpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdtb250JywgY29uZik7XG5cbiAgdGhpcy5hID0gbmV3IEJOKGNvbmYuYSwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5iID0gbmV3IEJOKGNvbmYuYiwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5pNCA9IG5ldyBCTig0KS50b1JlZCh0aGlzLnJlZCkucmVkSW52bSgpO1xuICB0aGlzLnR3byA9IG5ldyBCTigyKS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYTI0ID0gdGhpcy5pNC5yZWRNdWwodGhpcy5hLnJlZEFkZCh0aGlzLnR3bykpO1xufVxuaW5oZXJpdHMoTW9udEN1cnZlLCBCYXNlKTtcbm1vZHVsZS5leHBvcnRzID0gTW9udEN1cnZlO1xuXG5Nb250Q3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgdmFyIHggPSBwb2ludC5ub3JtYWxpemUoKS54O1xuICB2YXIgeDIgPSB4LnJlZFNxcigpO1xuICB2YXIgcmhzID0geDIucmVkTXVsKHgpLnJlZEFkZCh4Mi5yZWRNdWwodGhpcy5hKSkucmVkQWRkKHgpO1xuICB2YXIgeSA9IHJocy5yZWRTcXJ0KCk7XG5cbiAgcmV0dXJuIHkucmVkU3FyKCkuY21wKHJocykgPT09IDA7XG59O1xuXG5mdW5jdGlvbiBQb2ludChjdXJ2ZSwgeCwgeikge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAncHJvamVjdGl2ZScpO1xuICBpZiAoeCA9PT0gbnVsbCAmJiB6ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy56ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy56ID0gbmV3IEJOKHosIDE2KTtcbiAgICBpZiAoIXRoaXMueC5yZWQpXG4gICAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICghdGhpcy56LnJlZClcbiAgICAgIHRoaXMueiA9IHRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUuZGVjb2RlUG9pbnQgPSBmdW5jdGlvbiBkZWNvZGVQb2ludChieXRlcywgZW5jKSB7XG4gIHJldHVybiB0aGlzLnBvaW50KHV0aWxzLnRvQXJyYXkoYnl0ZXMsIGVuYyksIDEpO1xufTtcblxuTW9udEN1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHopIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB6KTtcbn07XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqKSB7XG4gIHJldHVybiBQb2ludC5mcm9tSlNPTih0aGlzLCBvYmopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLnByZWNvbXB1dGUgPSBmdW5jdGlvbiBwcmVjb21wdXRlKCkge1xuICAvLyBOby1vcFxufTtcblxuUG9pbnQucHJvdG90eXBlLl9lbmNvZGUgPSBmdW5jdGlvbiBfZW5jb2RlKCkge1xuICByZXR1cm4gdGhpcy5nZXRYKCkudG9BcnJheSgnYmUnLCB0aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpKTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaikge1xuICByZXR1cm4gbmV3IFBvaW50KGN1cnZlLCBvYmpbMF0sIG9ialsxXSB8fCBjdXJ2ZS5vbmUpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgejogJyArIHRoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICAvLyBYWFggVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB6ZXJvIGlzIGFsd2F5cyB6ZXJvIGluIHJlZFxuICByZXR1cm4gdGhpcy56LmNtcG4oMCkgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICAvLyBodHRwOi8vaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLW1vbnRnb20teHouaHRtbCNkb3VibGluZy1kYmwtMTk4Ny1tLTNcbiAgLy8gMk0gKyAyUyArIDRBXG5cbiAgLy8gQSA9IFgxICsgWjFcbiAgdmFyIGEgPSB0aGlzLngucmVkQWRkKHRoaXMueik7XG4gIC8vIEFBID0gQV4yXG4gIHZhciBhYSA9IGEucmVkU3FyKCk7XG4gIC8vIEIgPSBYMSAtIFoxXG4gIHZhciBiID0gdGhpcy54LnJlZFN1Yih0aGlzLnopO1xuICAvLyBCQiA9IEJeMlxuICB2YXIgYmIgPSBiLnJlZFNxcigpO1xuICAvLyBDID0gQUEgLSBCQlxuICB2YXIgYyA9IGFhLnJlZFN1YihiYik7XG4gIC8vIFgzID0gQUEgKiBCQlxuICB2YXIgbnggPSBhYS5yZWRNdWwoYmIpO1xuICAvLyBaMyA9IEMgKiAoQkIgKyBBMjQgKiBDKVxuICB2YXIgbnogPSBjLnJlZE11bChiYi5yZWRBZGQodGhpcy5jdXJ2ZS5hMjQucmVkTXVsKGMpKSk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZScpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRpZmZBZGQgPSBmdW5jdGlvbiBkaWZmQWRkKHAsIGRpZmYpIHtcbiAgLy8gaHR0cDovL2h5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1tb250Z29tLXh6Lmh0bWwjZGlmZmFkZC1kYWRkLTE5ODctbS0zXG4gIC8vIDRNICsgMlMgKyA2QVxuXG4gIC8vIEEgPSBYMiArIFoyXG4gIHZhciBhID0gdGhpcy54LnJlZEFkZCh0aGlzLnopO1xuICAvLyBCID0gWDIgLSBaMlxuICB2YXIgYiA9IHRoaXMueC5yZWRTdWIodGhpcy56KTtcbiAgLy8gQyA9IFgzICsgWjNcbiAgdmFyIGMgPSBwLngucmVkQWRkKHAueik7XG4gIC8vIEQgPSBYMyAtIFozXG4gIHZhciBkID0gcC54LnJlZFN1YihwLnopO1xuICAvLyBEQSA9IEQgKiBBXG4gIHZhciBkYSA9IGQucmVkTXVsKGEpO1xuICAvLyBDQiA9IEMgKiBCXG4gIHZhciBjYiA9IGMucmVkTXVsKGIpO1xuICAvLyBYNSA9IFoxICogKERBICsgQ0IpXjJcbiAgdmFyIG54ID0gZGlmZi56LnJlZE11bChkYS5yZWRBZGQoY2IpLnJlZFNxcigpKTtcbiAgLy8gWjUgPSBYMSAqIChEQSAtIENCKV4yXG4gIHZhciBueiA9IGRpZmYueC5yZWRNdWwoZGEucmVkSVN1YihjYikucmVkU3FyKCkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIHZhciB0ID0gay5jbG9uZSgpO1xuICB2YXIgYSA9IHRoaXM7IC8vIChOIC8gMikgKiBRICsgUVxuICB2YXIgYiA9IHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7IC8vIChOIC8gMikgKiBRXG4gIHZhciBjID0gdGhpczsgLy8gUVxuXG4gIGZvciAodmFyIGJpdHMgPSBbXTsgdC5jbXBuKDApICE9PSAwOyB0Lml1c2hybigxKSlcbiAgICBiaXRzLnB1c2godC5hbmRsbigxKSk7XG5cbiAgZm9yICh2YXIgaSA9IGJpdHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoYml0c1tpXSA9PT0gMCkge1xuICAgICAgLy8gTiAqIFEgKyBRID0gKChOIC8gMikgKiBRICsgUSkpICsgKE4gLyAyKSAqIFFcbiAgICAgIGEgPSBhLmRpZmZBZGQoYiwgYyk7XG4gICAgICAvLyBOICogUSA9IDIgKiAoKE4gLyAyKSAqIFEgKyBRKSlcbiAgICAgIGIgPSBiLmRibCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOICogUSA9ICgoTiAvIDIpICogUSArIFEpICsgKChOIC8gMikgKiBRKVxuICAgICAgYiA9IGEuZGlmZkFkZChiLCBjKTtcbiAgICAgIC8vIE4gKiBRICsgUSA9IDIgKiAoKE4gLyAyKSAqIFEgKyBRKVxuICAgICAgYSA9IGEuZGJsKCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBiO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bEFkZCA9IGZ1bmN0aW9uIG11bEFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5qdW1sQWRkID0gZnVuY3Rpb24ganVtbEFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKG90aGVyKSB7XG4gIHJldHVybiB0aGlzLmdldFgoKS5jbXAob3RoZXIuZ2V0WCgpKSA9PT0gMDtcbn07XG5cblBvaW50LnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gIHRoaXMueCA9IHRoaXMueC5yZWRNdWwodGhpcy56LnJlZEludm0oKSk7XG4gIHRoaXMueiA9IHRoaXMuY3VydmUub25lO1xuICByZXR1cm4gdGhpcztcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgLy8gTm9ybWFsaXplIGNvb3JkaW5hdGVzXG4gIHRoaXMubm9ybWFsaXplKCk7XG5cbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpO1xuXG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBTaG9ydEN1cnZlKGNvbmYpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdzaG9ydCcsIGNvbmYpO1xuXG4gIHRoaXMuYSA9IG5ldyBCTihjb25mLmEsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYiA9IG5ldyBCTihjb25mLmIsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMudGludiA9IHRoaXMudHdvLnJlZEludm0oKTtcblxuICB0aGlzLnplcm9BID0gdGhpcy5hLmZyb21SZWQoKS5jbXBuKDApID09PSAwO1xuICB0aGlzLnRocmVlQSA9IHRoaXMuYS5mcm9tUmVkKCkuc3ViKHRoaXMucCkuY21wbigtMykgPT09IDA7XG5cbiAgLy8gSWYgdGhlIGN1cnZlIGlzIGVuZG9tb3JwaGljLCBwcmVjYWxjdWxhdGUgYmV0YSBhbmQgbGFtYmRhXG4gIHRoaXMuZW5kbyA9IHRoaXMuX2dldEVuZG9tb3JwaGlzbShjb25mKTtcbiAgdGhpcy5fZW5kb1duYWZUMSA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fZW5kb1duYWZUMiA9IG5ldyBBcnJheSg0KTtcbn1cbmluaGVyaXRzKFNob3J0Q3VydmUsIEJhc2UpO1xubW9kdWxlLmV4cG9ydHMgPSBTaG9ydEN1cnZlO1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZ2V0RW5kb21vcnBoaXNtID0gZnVuY3Rpb24gX2dldEVuZG9tb3JwaGlzbShjb25mKSB7XG4gIC8vIE5vIGVmZmljaWVudCBlbmRvbW9ycGhpc21cbiAgaWYgKCF0aGlzLnplcm9BIHx8ICF0aGlzLmcgfHwgIXRoaXMubiB8fCB0aGlzLnAubW9kbigzKSAhPT0gMSlcbiAgICByZXR1cm47XG5cbiAgLy8gQ29tcHV0ZSBiZXRhIGFuZCBsYW1iZGEsIHRoYXQgbGFtYmRhICogUCA9IChiZXRhICogUHg7IFB5KVxuICB2YXIgYmV0YTtcbiAgdmFyIGxhbWJkYTtcbiAgaWYgKGNvbmYuYmV0YSkge1xuICAgIGJldGEgPSBuZXcgQk4oY29uZi5iZXRhLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB9IGVsc2Uge1xuICAgIHZhciBiZXRhcyA9IHRoaXMuX2dldEVuZG9Sb290cyh0aGlzLnApO1xuICAgIC8vIENob29zZSB0aGUgc21hbGxlc3QgYmV0YVxuICAgIGJldGEgPSBiZXRhc1swXS5jbXAoYmV0YXNbMV0pIDwgMCA/IGJldGFzWzBdIDogYmV0YXNbMV07XG4gICAgYmV0YSA9IGJldGEudG9SZWQodGhpcy5yZWQpO1xuICB9XG4gIGlmIChjb25mLmxhbWJkYSkge1xuICAgIGxhbWJkYSA9IG5ldyBCTihjb25mLmxhbWJkYSwgMTYpO1xuICB9IGVsc2Uge1xuICAgIC8vIENob29zZSB0aGUgbGFtYmRhIHRoYXQgaXMgbWF0Y2hpbmcgc2VsZWN0ZWQgYmV0YVxuICAgIHZhciBsYW1iZGFzID0gdGhpcy5fZ2V0RW5kb1Jvb3RzKHRoaXMubik7XG4gICAgaWYgKHRoaXMuZy5tdWwobGFtYmRhc1swXSkueC5jbXAodGhpcy5nLngucmVkTXVsKGJldGEpKSA9PT0gMCkge1xuICAgICAgbGFtYmRhID0gbGFtYmRhc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFtYmRhID0gbGFtYmRhc1sxXTtcbiAgICAgIGFzc2VydCh0aGlzLmcubXVsKGxhbWJkYSkueC5jbXAodGhpcy5nLngucmVkTXVsKGJldGEpKSA9PT0gMCk7XG4gICAgfVxuICB9XG5cbiAgLy8gR2V0IGJhc2lzIHZlY3RvcnMsIHVzZWQgZm9yIGJhbGFuY2VkIGxlbmd0aC10d28gcmVwcmVzZW50YXRpb25cbiAgdmFyIGJhc2lzO1xuICBpZiAoY29uZi5iYXNpcykge1xuICAgIGJhc2lzID0gY29uZi5iYXNpcy5tYXAoZnVuY3Rpb24odmVjKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhOiBuZXcgQk4odmVjLmEsIDE2KSxcbiAgICAgICAgYjogbmV3IEJOKHZlYy5iLCAxNiksXG4gICAgICB9O1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGJhc2lzID0gdGhpcy5fZ2V0RW5kb0Jhc2lzKGxhbWJkYSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJldGE6IGJldGEsXG4gICAgbGFtYmRhOiBsYW1iZGEsXG4gICAgYmFzaXM6IGJhc2lzLFxuICB9O1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9Sb290cyA9IGZ1bmN0aW9uIF9nZXRFbmRvUm9vdHMobnVtKSB7XG4gIC8vIEZpbmQgcm9vdHMgb2YgZm9yIHheMiArIHggKyAxIGluIEZcbiAgLy8gUm9vdCA9ICgtMSArLSBTcXJ0KC0zKSkgLyAyXG4gIC8vXG4gIHZhciByZWQgPSBudW0gPT09IHRoaXMucCA/IHRoaXMucmVkIDogQk4ubW9udChudW0pO1xuICB2YXIgdGludiA9IG5ldyBCTigyKS50b1JlZChyZWQpLnJlZEludm0oKTtcbiAgdmFyIG50aW52ID0gdGludi5yZWROZWcoKTtcblxuICB2YXIgcyA9IG5ldyBCTigzKS50b1JlZChyZWQpLnJlZE5lZygpLnJlZFNxcnQoKS5yZWRNdWwodGludik7XG5cbiAgdmFyIGwxID0gbnRpbnYucmVkQWRkKHMpLmZyb21SZWQoKTtcbiAgdmFyIGwyID0gbnRpbnYucmVkU3ViKHMpLmZyb21SZWQoKTtcbiAgcmV0dXJuIFsgbDEsIGwyIF07XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZ2V0RW5kb0Jhc2lzID0gZnVuY3Rpb24gX2dldEVuZG9CYXNpcyhsYW1iZGEpIHtcbiAgLy8gYXByeFNxcnQgPj0gc3FydCh0aGlzLm4pXG4gIHZhciBhcHJ4U3FydCA9IHRoaXMubi51c2hybihNYXRoLmZsb29yKHRoaXMubi5iaXRMZW5ndGgoKSAvIDIpKTtcblxuICAvLyAzLjc0XG4gIC8vIFJ1biBFR0NELCB1bnRpbCByKEwgKyAxKSA8IGFwcnhTcXJ0XG4gIHZhciB1ID0gbGFtYmRhO1xuICB2YXIgdiA9IHRoaXMubi5jbG9uZSgpO1xuICB2YXIgeDEgPSBuZXcgQk4oMSk7XG4gIHZhciB5MSA9IG5ldyBCTigwKTtcbiAgdmFyIHgyID0gbmV3IEJOKDApO1xuICB2YXIgeTIgPSBuZXcgQk4oMSk7XG5cbiAgLy8gTk9URTogYWxsIHZlY3RvcnMgYXJlIHJvb3RzIG9mOiBhICsgYiAqIGxhbWJkYSA9IDAgKG1vZCBuKVxuICB2YXIgYTA7XG4gIHZhciBiMDtcbiAgLy8gRmlyc3QgdmVjdG9yXG4gIHZhciBhMTtcbiAgdmFyIGIxO1xuICAvLyBTZWNvbmQgdmVjdG9yXG4gIHZhciBhMjtcbiAgdmFyIGIyO1xuXG4gIHZhciBwcmV2UjtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcjtcbiAgdmFyIHg7XG4gIHdoaWxlICh1LmNtcG4oMCkgIT09IDApIHtcbiAgICB2YXIgcSA9IHYuZGl2KHUpO1xuICAgIHIgPSB2LnN1YihxLm11bCh1KSk7XG4gICAgeCA9IHgyLnN1YihxLm11bCh4MSkpO1xuICAgIHZhciB5ID0geTIuc3ViKHEubXVsKHkxKSk7XG5cbiAgICBpZiAoIWExICYmIHIuY21wKGFwcnhTcXJ0KSA8IDApIHtcbiAgICAgIGEwID0gcHJldlIubmVnKCk7XG4gICAgICBiMCA9IHgxO1xuICAgICAgYTEgPSByLm5lZygpO1xuICAgICAgYjEgPSB4O1xuICAgIH0gZWxzZSBpZiAoYTEgJiYgKytpID09PSAyKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcHJldlIgPSByO1xuXG4gICAgdiA9IHU7XG4gICAgdSA9IHI7XG4gICAgeDIgPSB4MTtcbiAgICB4MSA9IHg7XG4gICAgeTIgPSB5MTtcbiAgICB5MSA9IHk7XG4gIH1cbiAgYTIgPSByLm5lZygpO1xuICBiMiA9IHg7XG5cbiAgdmFyIGxlbjEgPSBhMS5zcXIoKS5hZGQoYjEuc3FyKCkpO1xuICB2YXIgbGVuMiA9IGEyLnNxcigpLmFkZChiMi5zcXIoKSk7XG4gIGlmIChsZW4yLmNtcChsZW4xKSA+PSAwKSB7XG4gICAgYTIgPSBhMDtcbiAgICBiMiA9IGIwO1xuICB9XG5cbiAgLy8gTm9ybWFsaXplIHNpZ25zXG4gIGlmIChhMS5uZWdhdGl2ZSkge1xuICAgIGExID0gYTEubmVnKCk7XG4gICAgYjEgPSBiMS5uZWcoKTtcbiAgfVxuICBpZiAoYTIubmVnYXRpdmUpIHtcbiAgICBhMiA9IGEyLm5lZygpO1xuICAgIGIyID0gYjIubmVnKCk7XG4gIH1cblxuICByZXR1cm4gW1xuICAgIHsgYTogYTEsIGI6IGIxIH0sXG4gICAgeyBhOiBhMiwgYjogYjIgfSxcbiAgXTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9lbmRvU3BsaXQgPSBmdW5jdGlvbiBfZW5kb1NwbGl0KGspIHtcbiAgdmFyIGJhc2lzID0gdGhpcy5lbmRvLmJhc2lzO1xuICB2YXIgdjEgPSBiYXNpc1swXTtcbiAgdmFyIHYyID0gYmFzaXNbMV07XG5cbiAgdmFyIGMxID0gdjIuYi5tdWwoaykuZGl2Um91bmQodGhpcy5uKTtcbiAgdmFyIGMyID0gdjEuYi5uZWcoKS5tdWwoaykuZGl2Um91bmQodGhpcy5uKTtcblxuICB2YXIgcDEgPSBjMS5tdWwodjEuYSk7XG4gIHZhciBwMiA9IGMyLm11bCh2Mi5hKTtcbiAgdmFyIHExID0gYzEubXVsKHYxLmIpO1xuICB2YXIgcTIgPSBjMi5tdWwodjIuYik7XG5cbiAgLy8gQ2FsY3VsYXRlIGFuc3dlclxuICB2YXIgazEgPSBrLnN1YihwMSkuc3ViKHAyKTtcbiAgdmFyIGsyID0gcTEuYWRkKHEyKS5uZWcoKTtcbiAgcmV0dXJuIHsgazE6IGsxLCBrMjogazIgfTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnBvaW50RnJvbVggPSBmdW5jdGlvbiBwb2ludEZyb21YKHgsIG9kZCkge1xuICB4ID0gbmV3IEJOKHgsIDE2KTtcbiAgaWYgKCF4LnJlZClcbiAgICB4ID0geC50b1JlZCh0aGlzLnJlZCk7XG5cbiAgdmFyIHkyID0geC5yZWRTcXIoKS5yZWRNdWwoeCkucmVkSUFkZCh4LnJlZE11bCh0aGlzLmEpKS5yZWRJQWRkKHRoaXMuYik7XG4gIHZhciB5ID0geTIucmVkU3FydCgpO1xuICBpZiAoeS5yZWRTcXIoKS5yZWRTdWIoeTIpLmNtcCh0aGlzLnplcm8pICE9PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuXG4gIC8vIFhYWCBJcyB0aGVyZSBhbnkgd2F5IHRvIHRlbGwgaWYgdGhlIG51bWJlciBpcyBvZGQgd2l0aG91dCBjb252ZXJ0aW5nIGl0XG4gIC8vIHRvIG5vbi1yZWQgZm9ybT9cbiAgdmFyIGlzT2RkID0geS5mcm9tUmVkKCkuaXNPZGQoKTtcbiAgaWYgKG9kZCAmJiAhaXNPZGQgfHwgIW9kZCAmJiBpc09kZClcbiAgICB5ID0geS5yZWROZWcoKTtcblxuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5KTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgaWYgKHBvaW50LmluZilcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeCA9IHBvaW50Lng7XG4gIHZhciB5ID0gcG9pbnQueTtcblxuICB2YXIgYXggPSB0aGlzLmEucmVkTXVsKHgpO1xuICB2YXIgcmhzID0geC5yZWRTcXIoKS5yZWRNdWwoeCkucmVkSUFkZChheCkucmVkSUFkZCh0aGlzLmIpO1xuICByZXR1cm4geS5yZWRTcXIoKS5yZWRJU3ViKHJocykuY21wbigwKSA9PT0gMDtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9lbmRvV25hZk11bEFkZCA9XG4gICAgZnVuY3Rpb24gX2VuZG9XbmFmTXVsQWRkKHBvaW50cywgY29lZmZzLCBqYWNvYmlhblJlc3VsdCkge1xuICAgICAgdmFyIG5wb2ludHMgPSB0aGlzLl9lbmRvV25hZlQxO1xuICAgICAgdmFyIG5jb2VmZnMgPSB0aGlzLl9lbmRvV25hZlQyO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gdGhpcy5fZW5kb1NwbGl0KGNvZWZmc1tpXSk7XG4gICAgICAgIHZhciBwID0gcG9pbnRzW2ldO1xuICAgICAgICB2YXIgYmV0YSA9IHAuX2dldEJldGEoKTtcblxuICAgICAgICBpZiAoc3BsaXQuazEubmVnYXRpdmUpIHtcbiAgICAgICAgICBzcGxpdC5rMS5pbmVnKCk7XG4gICAgICAgICAgcCA9IHAubmVnKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzcGxpdC5rMi5uZWdhdGl2ZSkge1xuICAgICAgICAgIHNwbGl0LmsyLmluZWcoKTtcbiAgICAgICAgICBiZXRhID0gYmV0YS5uZWcodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBucG9pbnRzW2kgKiAyXSA9IHA7XG4gICAgICAgIG5wb2ludHNbaSAqIDIgKyAxXSA9IGJldGE7XG4gICAgICAgIG5jb2VmZnNbaSAqIDJdID0gc3BsaXQuazE7XG4gICAgICAgIG5jb2VmZnNbaSAqIDIgKyAxXSA9IHNwbGl0LmsyO1xuICAgICAgfVxuICAgICAgdmFyIHJlcyA9IHRoaXMuX3duYWZNdWxBZGQoMSwgbnBvaW50cywgbmNvZWZmcywgaSAqIDIsIGphY29iaWFuUmVzdWx0KTtcblxuICAgICAgLy8gQ2xlYW4tdXAgcmVmZXJlbmNlcyB0byBwb2ludHMgYW5kIGNvZWZmaWNpZW50c1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpICogMjsgaisrKSB7XG4gICAgICAgIG5wb2ludHNbal0gPSBudWxsO1xuICAgICAgICBuY29lZmZzW2pdID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuZnVuY3Rpb24gUG9pbnQoY3VydmUsIHgsIHksIGlzUmVkKSB7XG4gIEJhc2UuQmFzZVBvaW50LmNhbGwodGhpcywgY3VydmUsICdhZmZpbmUnKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeSA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IG51bGw7XG4gICAgdGhpcy55ID0gbnVsbDtcbiAgICB0aGlzLmluZiA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0gbmV3IEJOKHgsIDE2KTtcbiAgICB0aGlzLnkgPSBuZXcgQk4oeSwgMTYpO1xuICAgIC8vIEZvcmNlIHJlZGdvbWVyeSByZXByZXNlbnRhdGlvbiB3aGVuIGxvYWRpbmcgZnJvbSBKU09OXG4gICAgaWYgKGlzUmVkKSB7XG4gICAgICB0aGlzLnguZm9yY2VSZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgICAgdGhpcy55LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLngucmVkKVxuICAgICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMueS5yZWQpXG4gICAgICB0aGlzLnkgPSB0aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIHRoaXMuaW5mID0gZmFsc2U7XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnBvaW50ID0gZnVuY3Rpb24gcG9pbnQoeCwgeSwgaXNSZWQpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB5LCBpc1JlZCk7XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5wb2ludEZyb21KU09OID0gZnVuY3Rpb24gcG9pbnRGcm9tSlNPTihvYmosIHJlZCkge1xuICByZXR1cm4gUG9pbnQuZnJvbUpTT04odGhpcywgb2JqLCByZWQpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9nZXRCZXRhID0gZnVuY3Rpb24gX2dldEJldGEoKSB7XG4gIGlmICghdGhpcy5jdXJ2ZS5lbmRvKVxuICAgIHJldHVybjtcblxuICB2YXIgcHJlID0gdGhpcy5wcmVjb21wdXRlZDtcbiAgaWYgKHByZSAmJiBwcmUuYmV0YSlcbiAgICByZXR1cm4gcHJlLmJldGE7XG5cbiAgdmFyIGJldGEgPSB0aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWRNdWwodGhpcy5jdXJ2ZS5lbmRvLmJldGEpLCB0aGlzLnkpO1xuICBpZiAocHJlKSB7XG4gICAgdmFyIGN1cnZlID0gdGhpcy5jdXJ2ZTtcbiAgICB2YXIgZW5kb011bCA9IGZ1bmN0aW9uKHApIHtcbiAgICAgIHJldHVybiBjdXJ2ZS5wb2ludChwLngucmVkTXVsKGN1cnZlLmVuZG8uYmV0YSksIHAueSk7XG4gICAgfTtcbiAgICBwcmUuYmV0YSA9IGJldGE7XG4gICAgYmV0YS5wcmVjb21wdXRlZCA9IHtcbiAgICAgIGJldGE6IG51bGwsXG4gICAgICBuYWY6IHByZS5uYWYgJiYge1xuICAgICAgICB3bmQ6IHByZS5uYWYud25kLFxuICAgICAgICBwb2ludHM6IHByZS5uYWYucG9pbnRzLm1hcChlbmRvTXVsKSxcbiAgICAgIH0sXG4gICAgICBkb3VibGVzOiBwcmUuZG91YmxlcyAmJiB7XG4gICAgICAgIHN0ZXA6IHByZS5kb3VibGVzLnN0ZXAsXG4gICAgICAgIHBvaW50czogcHJlLmRvdWJsZXMucG9pbnRzLm1hcChlbmRvTXVsKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICByZXR1cm4gYmV0YTtcbn07XG5cblBvaW50LnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gIGlmICghdGhpcy5wcmVjb21wdXRlZClcbiAgICByZXR1cm4gWyB0aGlzLngsIHRoaXMueSBdO1xuXG4gIHJldHVybiBbIHRoaXMueCwgdGhpcy55LCB0aGlzLnByZWNvbXB1dGVkICYmIHtcbiAgICBkb3VibGVzOiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMgJiYge1xuICAgICAgc3RlcDogdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnN0ZXAsXG4gICAgICBwb2ludHM6IHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5wb2ludHMuc2xpY2UoMSksXG4gICAgfSxcbiAgICBuYWY6IHRoaXMucHJlY29tcHV0ZWQubmFmICYmIHtcbiAgICAgIHduZDogdGhpcy5wcmVjb21wdXRlZC5uYWYud25kLFxuICAgICAgcG9pbnRzOiB0aGlzLnByZWNvbXB1dGVkLm5hZi5wb2ludHMuc2xpY2UoMSksXG4gICAgfSxcbiAgfSBdO1xufTtcblxuUG9pbnQuZnJvbUpTT04gPSBmdW5jdGlvbiBmcm9tSlNPTihjdXJ2ZSwgb2JqLCByZWQpIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKVxuICAgIG9iaiA9IEpTT04ucGFyc2Uob2JqKTtcbiAgdmFyIHJlcyA9IGN1cnZlLnBvaW50KG9ialswXSwgb2JqWzFdLCByZWQpO1xuICBpZiAoIW9ialsyXSlcbiAgICByZXR1cm4gcmVzO1xuXG4gIGZ1bmN0aW9uIG9iajJwb2ludChvYmopIHtcbiAgICByZXR1cm4gY3VydmUucG9pbnQob2JqWzBdLCBvYmpbMV0sIHJlZCk7XG4gIH1cblxuICB2YXIgcHJlID0gb2JqWzJdO1xuICByZXMucHJlY29tcHV0ZWQgPSB7XG4gICAgYmV0YTogbnVsbCxcbiAgICBkb3VibGVzOiBwcmUuZG91YmxlcyAmJiB7XG4gICAgICBzdGVwOiBwcmUuZG91Ymxlcy5zdGVwLFxuICAgICAgcG9pbnRzOiBbIHJlcyBdLmNvbmNhdChwcmUuZG91Ymxlcy5wb2ludHMubWFwKG9iajJwb2ludCkpLFxuICAgIH0sXG4gICAgbmFmOiBwcmUubmFmICYmIHtcbiAgICAgIHduZDogcHJlLm5hZi53bmQsXG4gICAgICBwb2ludHM6IFsgcmVzIF0uY29uY2F0KHByZS5uYWYucG9pbnRzLm1hcChvYmoycG9pbnQpKSxcbiAgICB9LFxuICB9O1xuICByZXR1cm4gcmVzO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgeTogJyArIHRoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICByZXR1cm4gdGhpcy5pbmY7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgLy8gTyArIFAgPSBQXG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gcDtcblxuICAvLyBQICsgTyA9IFBcbiAgaWYgKHAuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIFAgKyBQID0gMlBcbiAgaWYgKHRoaXMuZXEocCkpXG4gICAgcmV0dXJuIHRoaXMuZGJsKCk7XG5cbiAgLy8gUCArICgtUCkgPSBPXG4gIGlmICh0aGlzLm5lZygpLmVxKHApKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIC8vIFAgKyBRID0gT1xuICBpZiAodGhpcy54LmNtcChwLngpID09PSAwKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciBjID0gdGhpcy55LnJlZFN1YihwLnkpO1xuICBpZiAoYy5jbXBuKDApICE9PSAwKVxuICAgIGMgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKHAueCkucmVkSW52bSgpKTtcbiAgdmFyIG54ID0gYy5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueCkucmVkSVN1YihwLngpO1xuICB2YXIgbnkgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKG54KSkucmVkSVN1Yih0aGlzLnkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRibCA9IGZ1bmN0aW9uIGRibCgpIHtcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIDJQID0gT1xuICB2YXIgeXMxID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICBpZiAoeXMxLmNtcG4oMCkgPT09IDApXG4gICAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7XG5cbiAgdmFyIGEgPSB0aGlzLmN1cnZlLmE7XG5cbiAgdmFyIHgyID0gdGhpcy54LnJlZFNxcigpO1xuICB2YXIgZHlpbnYgPSB5czEucmVkSW52bSgpO1xuICB2YXIgYyA9IHgyLnJlZEFkZCh4MikucmVkSUFkZCh4MikucmVkSUFkZChhKS5yZWRNdWwoZHlpbnYpO1xuXG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0aGlzLngucmVkQWRkKHRoaXMueCkpO1xuICB2YXIgbnkgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKG54KSkucmVkSVN1Yih0aGlzLnkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFggPSBmdW5jdGlvbiBnZXRYKCkge1xuICByZXR1cm4gdGhpcy54LmZyb21SZWQoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRZID0gZnVuY3Rpb24gZ2V0WSgpIHtcbiAgcmV0dXJuIHRoaXMueS5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKGspIHtcbiAgayA9IG5ldyBCTihrLCAxNik7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcbiAgZWxzZSBpZiAodGhpcy5faGFzRG91YmxlcyhrKSlcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZml4ZWROYWZNdWwodGhpcywgayk7XG4gIGVsc2UgaWYgKHRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQoWyB0aGlzIF0sIFsgayBdKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsIGspO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bEFkZCA9IGZ1bmN0aW9uIG11bEFkZChrMSwgcDIsIGsyKSB7XG4gIHZhciBwb2ludHMgPSBbIHRoaXMsIHAyIF07XG4gIHZhciBjb2VmZnMgPSBbIGsxLCBrMiBdO1xuICBpZiAodGhpcy5jdXJ2ZS5lbmRvKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChwb2ludHMsIGNvZWZmcyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLCBwb2ludHMsIGNvZWZmcywgMik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuam11bEFkZCA9IGZ1bmN0aW9uIGptdWxBZGQoazEsIHAyLCBrMikge1xuICB2YXIgcG9pbnRzID0gWyB0aGlzLCBwMiBdO1xuICB2YXIgY29lZmZzID0gWyBrMSwgazIgXTtcbiAgaWYgKHRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQocG9pbnRzLCBjb2VmZnMsIHRydWUpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgcG9pbnRzLCBjb2VmZnMsIDIsIHRydWUpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEocCkge1xuICByZXR1cm4gdGhpcyA9PT0gcCB8fFxuICAgICAgICAgdGhpcy5pbmYgPT09IHAuaW5mICYmXG4gICAgICAgICAgICAgKHRoaXMuaW5mIHx8IHRoaXMueC5jbXAocC54KSA9PT0gMCAmJiB0aGlzLnkuY21wKHAueSkgPT09IDApO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyhfcHJlY29tcHV0ZSkge1xuICBpZiAodGhpcy5pbmYpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgdmFyIHJlcyA9IHRoaXMuY3VydmUucG9pbnQodGhpcy54LCB0aGlzLnkucmVkTmVnKCkpO1xuICBpZiAoX3ByZWNvbXB1dGUgJiYgdGhpcy5wcmVjb21wdXRlZCkge1xuICAgIHZhciBwcmUgPSB0aGlzLnByZWNvbXB1dGVkO1xuICAgIHZhciBuZWdhdGUgPSBmdW5jdGlvbihwKSB7XG4gICAgICByZXR1cm4gcC5uZWcoKTtcbiAgICB9O1xuICAgIHJlcy5wcmVjb21wdXRlZCA9IHtcbiAgICAgIG5hZjogcHJlLm5hZiAmJiB7XG4gICAgICAgIHduZDogcHJlLm5hZi53bmQsXG4gICAgICAgIHBvaW50czogcHJlLm5hZi5wb2ludHMubWFwKG5lZ2F0ZSksXG4gICAgICB9LFxuICAgICAgZG91YmxlczogcHJlLmRvdWJsZXMgJiYge1xuICAgICAgICBzdGVwOiBwcmUuZG91Ymxlcy5zdGVwLFxuICAgICAgICBwb2ludHM6IHByZS5kb3VibGVzLnBvaW50cy5tYXAobmVnYXRlKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVzO1xufTtcblxuUG9pbnQucHJvdG90eXBlLnRvSiA9IGZ1bmN0aW9uIHRvSigpIHtcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcblxuICB2YXIgcmVzID0gdGhpcy5jdXJ2ZS5qcG9pbnQodGhpcy54LCB0aGlzLnksIHRoaXMuY3VydmUub25lKTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbmZ1bmN0aW9uIEpQb2ludChjdXJ2ZSwgeCwgeSwgeikge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAnamFjb2JpYW4nKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeSA9PT0gbnVsbCAmJiB6ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy55ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy56ID0gbmV3IEJOKDApO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy55ID0gbmV3IEJOKHksIDE2KTtcbiAgICB0aGlzLnogPSBuZXcgQk4oeiwgMTYpO1xuICB9XG4gIGlmICghdGhpcy54LnJlZClcbiAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICBpZiAoIXRoaXMueS5yZWQpXG4gICAgdGhpcy55ID0gdGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgaWYgKCF0aGlzLnoucmVkKVxuICAgIHRoaXMueiA9IHRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG5cbiAgdGhpcy56T25lID0gdGhpcy56ID09PSB0aGlzLmN1cnZlLm9uZTtcbn1cbmluaGVyaXRzKEpQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5qcG9pbnQgPSBmdW5jdGlvbiBqcG9pbnQoeCwgeSwgeikge1xuICByZXR1cm4gbmV3IEpQb2ludCh0aGlzLCB4LCB5LCB6KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUudG9QID0gZnVuY3Rpb24gdG9QKCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7XG5cbiAgdmFyIHppbnYgPSB0aGlzLnoucmVkSW52bSgpO1xuICB2YXIgemludjIgPSB6aW52LnJlZFNxcigpO1xuICB2YXIgYXggPSB0aGlzLngucmVkTXVsKHppbnYyKTtcbiAgdmFyIGF5ID0gdGhpcy55LnJlZE11bCh6aW52MikucmVkTXVsKHppbnYpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KGF4LCBheSk7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZygpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KHRoaXMueCwgdGhpcy55LnJlZE5lZygpLCB0aGlzLnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQocCkge1xuICAvLyBPICsgUCA9IFBcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiBwO1xuXG4gIC8vIFAgKyBPID0gUFxuICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gMTJNICsgNFMgKyA3QVxuICB2YXIgcHoyID0gcC56LnJlZFNxcigpO1xuICB2YXIgejIgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciB1MSA9IHRoaXMueC5yZWRNdWwocHoyKTtcbiAgdmFyIHUyID0gcC54LnJlZE11bCh6Mik7XG4gIHZhciBzMSA9IHRoaXMueS5yZWRNdWwocHoyLnJlZE11bChwLnopKTtcbiAgdmFyIHMyID0gcC55LnJlZE11bCh6Mi5yZWRNdWwodGhpcy56KSk7XG5cbiAgdmFyIGggPSB1MS5yZWRTdWIodTIpO1xuICB2YXIgciA9IHMxLnJlZFN1YihzMik7XG4gIGlmIChoLmNtcG4oMCkgPT09IDApIHtcbiAgICBpZiAoci5jbXBuKDApICE9PSAwKVxuICAgICAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiB0aGlzLmRibCgpO1xuICB9XG5cbiAgdmFyIGgyID0gaC5yZWRTcXIoKTtcbiAgdmFyIGgzID0gaDIucmVkTXVsKGgpO1xuICB2YXIgdiA9IHUxLnJlZE11bChoMik7XG5cbiAgdmFyIG54ID0gci5yZWRTcXIoKS5yZWRJQWRkKGgzKS5yZWRJU3ViKHYpLnJlZElTdWIodik7XG4gIHZhciBueSA9IHIucmVkTXVsKHYucmVkSVN1YihueCkpLnJlZElTdWIoczEucmVkTXVsKGgzKSk7XG4gIHZhciBueiA9IHRoaXMuei5yZWRNdWwocC56KS5yZWRNdWwoaCk7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5taXhlZEFkZCA9IGZ1bmN0aW9uIG1peGVkQWRkKHApIHtcbiAgLy8gTyArIFAgPSBQXG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gcC50b0ooKTtcblxuICAvLyBQICsgTyA9IFBcbiAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIDhNICsgM1MgKyA3QVxuICB2YXIgejIgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciB1MSA9IHRoaXMueDtcbiAgdmFyIHUyID0gcC54LnJlZE11bCh6Mik7XG4gIHZhciBzMSA9IHRoaXMueTtcbiAgdmFyIHMyID0gcC55LnJlZE11bCh6MikucmVkTXVsKHRoaXMueik7XG5cbiAgdmFyIGggPSB1MS5yZWRTdWIodTIpO1xuICB2YXIgciA9IHMxLnJlZFN1YihzMik7XG4gIGlmIChoLmNtcG4oMCkgPT09IDApIHtcbiAgICBpZiAoci5jbXBuKDApICE9PSAwKVxuICAgICAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiB0aGlzLmRibCgpO1xuICB9XG5cbiAgdmFyIGgyID0gaC5yZWRTcXIoKTtcbiAgdmFyIGgzID0gaDIucmVkTXVsKGgpO1xuICB2YXIgdiA9IHUxLnJlZE11bChoMik7XG5cbiAgdmFyIG54ID0gci5yZWRTcXIoKS5yZWRJQWRkKGgzKS5yZWRJU3ViKHYpLnJlZElTdWIodik7XG4gIHZhciBueSA9IHIucmVkTXVsKHYucmVkSVN1YihueCkpLnJlZElTdWIoczEucmVkTXVsKGgzKSk7XG4gIHZhciBueiA9IHRoaXMuei5yZWRNdWwoaCk7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5kYmxwID0gZnVuY3Rpb24gZGJscChwb3cpIHtcbiAgaWYgKHBvdyA9PT0gMClcbiAgICByZXR1cm4gdGhpcztcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuICBpZiAoIXBvdylcbiAgICByZXR1cm4gdGhpcy5kYmwoKTtcblxuICB2YXIgaTtcbiAgaWYgKHRoaXMuY3VydmUuemVyb0EgfHwgdGhpcy5jdXJ2ZS50aHJlZUEpIHtcbiAgICB2YXIgciA9IHRoaXM7XG4gICAgZm9yIChpID0gMDsgaSA8IHBvdzsgaSsrKVxuICAgICAgciA9IHIuZGJsKCk7XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICAvLyAxTSArIDJTICsgMUEgKyBOICogKDRTICsgNU0gKyA4QSlcbiAgLy8gTiA9IDEgPT4gNk0gKyA2UyArIDlBXG4gIHZhciBhID0gdGhpcy5jdXJ2ZS5hO1xuICB2YXIgdGludiA9IHRoaXMuY3VydmUudGludjtcblxuICB2YXIganggPSB0aGlzLng7XG4gIHZhciBqeSA9IHRoaXMueTtcbiAgdmFyIGp6ID0gdGhpcy56O1xuICB2YXIgano0ID0ganoucmVkU3FyKCkucmVkU3FyKCk7XG5cbiAgLy8gUmV1c2UgcmVzdWx0c1xuICB2YXIganlkID0gankucmVkQWRkKGp5KTtcbiAgZm9yIChpID0gMDsgaSA8IHBvdzsgaSsrKSB7XG4gICAgdmFyIGp4MiA9IGp4LnJlZFNxcigpO1xuICAgIHZhciBqeWQyID0ganlkLnJlZFNxcigpO1xuICAgIHZhciBqeWQ0ID0ganlkMi5yZWRTcXIoKTtcbiAgICB2YXIgYyA9IGp4Mi5yZWRBZGQoangyKS5yZWRJQWRkKGp4MikucmVkSUFkZChhLnJlZE11bChqejQpKTtcblxuICAgIHZhciB0MSA9IGp4LnJlZE11bChqeWQyKTtcbiAgICB2YXIgbnggPSBjLnJlZFNxcigpLnJlZElTdWIodDEucmVkQWRkKHQxKSk7XG4gICAgdmFyIHQyID0gdDEucmVkSVN1YihueCk7XG4gICAgdmFyIGRueSA9IGMucmVkTXVsKHQyKTtcbiAgICBkbnkgPSBkbnkucmVkSUFkZChkbnkpLnJlZElTdWIoanlkNCk7XG4gICAgdmFyIG56ID0ganlkLnJlZE11bChqeik7XG4gICAgaWYgKGkgKyAxIDwgcG93KVxuICAgICAgano0ID0gano0LnJlZE11bChqeWQ0KTtcblxuICAgIGp4ID0gbng7XG4gICAganogPSBuejtcbiAgICBqeWQgPSBkbnk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoangsIGp5ZC5yZWRNdWwodGludiksIGp6KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgaWYgKHRoaXMuY3VydmUuemVyb0EpXG4gICAgcmV0dXJuIHRoaXMuX3plcm9EYmwoKTtcbiAgZWxzZSBpZiAodGhpcy5jdXJ2ZS50aHJlZUEpXG4gICAgcmV0dXJuIHRoaXMuX3RocmVlRGJsKCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fZGJsKCk7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLl96ZXJvRGJsID0gZnVuY3Rpb24gX3plcm9EYmwoKSB7XG4gIHZhciBueDtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIC8vIFogPSAxXG4gIGlmICh0aGlzLnpPbmUpIHtcbiAgICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTAuaHRtbFxuICAgIC8vICAgICAjZG91YmxpbmctbWRibC0yMDA3LWJsXG4gICAgLy8gMU0gKyA1UyArIDE0QVxuXG4gICAgLy8gWFggPSBYMV4yXG4gICAgdmFyIHh4ID0gdGhpcy54LnJlZFNxcigpO1xuICAgIC8vIFlZID0gWTFeMlxuICAgIHZhciB5eSA9IHRoaXMueS5yZWRTcXIoKTtcbiAgICAvLyBZWVlZID0gWVleMlxuICAgIHZhciB5eXl5ID0geXkucmVkU3FyKCk7XG4gICAgLy8gUyA9IDIgKiAoKFgxICsgWVkpXjIgLSBYWCAtIFlZWVkpXG4gICAgdmFyIHMgPSB0aGlzLngucmVkQWRkKHl5KS5yZWRTcXIoKS5yZWRJU3ViKHh4KS5yZWRJU3ViKHl5eXkpO1xuICAgIHMgPSBzLnJlZElBZGQocyk7XG4gICAgLy8gTSA9IDMgKiBYWCArIGE7IGEgPSAwXG4gICAgdmFyIG0gPSB4eC5yZWRBZGQoeHgpLnJlZElBZGQoeHgpO1xuICAgIC8vIFQgPSBNIF4gMiAtIDIqU1xuICAgIHZhciB0ID0gbS5yZWRTcXIoKS5yZWRJU3ViKHMpLnJlZElTdWIocyk7XG5cbiAgICAvLyA4ICogWVlZWVxuICAgIHZhciB5eXl5OCA9IHl5eXkucmVkSUFkZCh5eXl5KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuICAgIHl5eXk4ID0geXl5eTgucmVkSUFkZCh5eXl5OCk7XG5cbiAgICAvLyBYMyA9IFRcbiAgICBueCA9IHQ7XG4gICAgLy8gWTMgPSBNICogKFMgLSBUKSAtIDggKiBZWVlZXG4gICAgbnkgPSBtLnJlZE11bChzLnJlZElTdWIodCkpLnJlZElTdWIoeXl5eTgpO1xuICAgIC8vIFozID0gMipZMVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICB9IGVsc2Uge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMC5odG1sXG4gICAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwOS1sXG4gICAgLy8gMk0gKyA1UyArIDEzQVxuXG4gICAgLy8gQSA9IFgxXjJcbiAgICB2YXIgYSA9IHRoaXMueC5yZWRTcXIoKTtcbiAgICAvLyBCID0gWTFeMlxuICAgIHZhciBiID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIEMgPSBCXjJcbiAgICB2YXIgYyA9IGIucmVkU3FyKCk7XG4gICAgLy8gRCA9IDIgKiAoKFgxICsgQileMiAtIEEgLSBDKVxuICAgIHZhciBkID0gdGhpcy54LnJlZEFkZChiKS5yZWRTcXIoKS5yZWRJU3ViKGEpLnJlZElTdWIoYyk7XG4gICAgZCA9IGQucmVkSUFkZChkKTtcbiAgICAvLyBFID0gMyAqIEFcbiAgICB2YXIgZSA9IGEucmVkQWRkKGEpLnJlZElBZGQoYSk7XG4gICAgLy8gRiA9IEVeMlxuICAgIHZhciBmID0gZS5yZWRTcXIoKTtcblxuICAgIC8vIDggKiBDXG4gICAgdmFyIGM4ID0gYy5yZWRJQWRkKGMpO1xuICAgIGM4ID0gYzgucmVkSUFkZChjOCk7XG4gICAgYzggPSBjOC5yZWRJQWRkKGM4KTtcblxuICAgIC8vIFgzID0gRiAtIDIgKiBEXG4gICAgbnggPSBmLnJlZElTdWIoZCkucmVkSVN1YihkKTtcbiAgICAvLyBZMyA9IEUgKiAoRCAtIFgzKSAtIDggKiBDXG4gICAgbnkgPSBlLnJlZE11bChkLnJlZElTdWIobngpKS5yZWRJU3ViKGM4KTtcbiAgICAvLyBaMyA9IDIgKiBZMSAqIFoxXG4gICAgbnogPSB0aGlzLnkucmVkTXVsKHRoaXMueik7XG4gICAgbnogPSBuei5yZWRJQWRkKG56KTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuX3RocmVlRGJsID0gZnVuY3Rpb24gX3RocmVlRGJsKCkge1xuICB2YXIgbng7XG4gIHZhciBueTtcbiAgdmFyIG56O1xuICAvLyBaID0gMVxuICBpZiAodGhpcy56T25lKSB7XG4gICAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0zLmh0bWxcbiAgICAvLyAgICAgI2RvdWJsaW5nLW1kYmwtMjAwNy1ibFxuICAgIC8vIDFNICsgNVMgKyAxNUFcblxuICAgIC8vIFhYID0gWDFeMlxuICAgIHZhciB4eCA9IHRoaXMueC5yZWRTcXIoKTtcbiAgICAvLyBZWSA9IFkxXjJcbiAgICB2YXIgeXkgPSB0aGlzLnkucmVkU3FyKCk7XG4gICAgLy8gWVlZWSA9IFlZXjJcbiAgICB2YXIgeXl5eSA9IHl5LnJlZFNxcigpO1xuICAgIC8vIFMgPSAyICogKChYMSArIFlZKV4yIC0gWFggLSBZWVlZKVxuICAgIHZhciBzID0gdGhpcy54LnJlZEFkZCh5eSkucmVkU3FyKCkucmVkSVN1Yih4eCkucmVkSVN1Yih5eXl5KTtcbiAgICBzID0gcy5yZWRJQWRkKHMpO1xuICAgIC8vIE0gPSAzICogWFggKyBhXG4gICAgdmFyIG0gPSB4eC5yZWRBZGQoeHgpLnJlZElBZGQoeHgpLnJlZElBZGQodGhpcy5jdXJ2ZS5hKTtcbiAgICAvLyBUID0gTV4yIC0gMiAqIFNcbiAgICB2YXIgdCA9IG0ucmVkU3FyKCkucmVkSVN1YihzKS5yZWRJU3ViKHMpO1xuICAgIC8vIFgzID0gVFxuICAgIG54ID0gdDtcbiAgICAvLyBZMyA9IE0gKiAoUyAtIFQpIC0gOCAqIFlZWVlcbiAgICB2YXIgeXl5eTggPSB5eXl5LnJlZElBZGQoeXl5eSk7XG4gICAgeXl5eTggPSB5eXl5OC5yZWRJQWRkKHl5eXk4KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuICAgIG55ID0gbS5yZWRNdWwocy5yZWRJU3ViKHQpKS5yZWRJU3ViKHl5eXk4KTtcbiAgICAvLyBaMyA9IDIgKiBZMVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICB9IGVsc2Uge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMy5odG1sI2RvdWJsaW5nLWRibC0yMDAxLWJcbiAgICAvLyAzTSArIDVTXG5cbiAgICAvLyBkZWx0YSA9IFoxXjJcbiAgICB2YXIgZGVsdGEgPSB0aGlzLnoucmVkU3FyKCk7XG4gICAgLy8gZ2FtbWEgPSBZMV4yXG4gICAgdmFyIGdhbW1hID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIGJldGEgPSBYMSAqIGdhbW1hXG4gICAgdmFyIGJldGEgPSB0aGlzLngucmVkTXVsKGdhbW1hKTtcbiAgICAvLyBhbHBoYSA9IDMgKiAoWDEgLSBkZWx0YSkgKiAoWDEgKyBkZWx0YSlcbiAgICB2YXIgYWxwaGEgPSB0aGlzLngucmVkU3ViKGRlbHRhKS5yZWRNdWwodGhpcy54LnJlZEFkZChkZWx0YSkpO1xuICAgIGFscGhhID0gYWxwaGEucmVkQWRkKGFscGhhKS5yZWRJQWRkKGFscGhhKTtcbiAgICAvLyBYMyA9IGFscGhhXjIgLSA4ICogYmV0YVxuICAgIHZhciBiZXRhNCA9IGJldGEucmVkSUFkZChiZXRhKTtcbiAgICBiZXRhNCA9IGJldGE0LnJlZElBZGQoYmV0YTQpO1xuICAgIHZhciBiZXRhOCA9IGJldGE0LnJlZEFkZChiZXRhNCk7XG4gICAgbnggPSBhbHBoYS5yZWRTcXIoKS5yZWRJU3ViKGJldGE4KTtcbiAgICAvLyBaMyA9IChZMSArIFoxKV4yIC0gZ2FtbWEgLSBkZWx0YVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnopLnJlZFNxcigpLnJlZElTdWIoZ2FtbWEpLnJlZElTdWIoZGVsdGEpO1xuICAgIC8vIFkzID0gYWxwaGEgKiAoNCAqIGJldGEgLSBYMykgLSA4ICogZ2FtbWFeMlxuICAgIHZhciBnZ2FtbWE4ID0gZ2FtbWEucmVkU3FyKCk7XG4gICAgZ2dhbW1hOCA9IGdnYW1tYTgucmVkSUFkZChnZ2FtbWE4KTtcbiAgICBnZ2FtbWE4ID0gZ2dhbW1hOC5yZWRJQWRkKGdnYW1tYTgpO1xuICAgIGdnYW1tYTggPSBnZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7XG4gICAgbnkgPSBhbHBoYS5yZWRNdWwoYmV0YTQucmVkSVN1YihueCkpLnJlZElTdWIoZ2dhbW1hOCk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLl9kYmwgPSBmdW5jdGlvbiBfZGJsKCkge1xuICB2YXIgYSA9IHRoaXMuY3VydmUuYTtcblxuICAvLyA0TSArIDZTICsgMTBBXG4gIHZhciBqeCA9IHRoaXMueDtcbiAgdmFyIGp5ID0gdGhpcy55O1xuICB2YXIganogPSB0aGlzLno7XG4gIHZhciBqejQgPSBqei5yZWRTcXIoKS5yZWRTcXIoKTtcblxuICB2YXIgangyID0gangucmVkU3FyKCk7XG4gIHZhciBqeTIgPSBqeS5yZWRTcXIoKTtcblxuICB2YXIgYyA9IGp4Mi5yZWRBZGQoangyKS5yZWRJQWRkKGp4MikucmVkSUFkZChhLnJlZE11bChqejQpKTtcblxuICB2YXIganhkNCA9IGp4LnJlZEFkZChqeCk7XG4gIGp4ZDQgPSBqeGQ0LnJlZElBZGQoanhkNCk7XG4gIHZhciB0MSA9IGp4ZDQucmVkTXVsKGp5Mik7XG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0MS5yZWRBZGQodDEpKTtcbiAgdmFyIHQyID0gdDEucmVkSVN1YihueCk7XG5cbiAgdmFyIGp5ZDggPSBqeTIucmVkU3FyKCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIHZhciBueSA9IGMucmVkTXVsKHQyKS5yZWRJU3ViKGp5ZDgpO1xuICB2YXIgbnogPSBqeS5yZWRBZGQoankpLnJlZE11bChqeik7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS50cnBsID0gZnVuY3Rpb24gdHJwbCgpIHtcbiAgaWYgKCF0aGlzLmN1cnZlLnplcm9BKVxuICAgIHJldHVybiB0aGlzLmRibCgpLmFkZCh0aGlzKTtcblxuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTAuaHRtbCN0cmlwbGluZy10cGwtMjAwNy1ibFxuICAvLyA1TSArIDEwUyArIC4uLlxuXG4gIC8vIFhYID0gWDFeMlxuICB2YXIgeHggPSB0aGlzLngucmVkU3FyKCk7XG4gIC8vIFlZID0gWTFeMlxuICB2YXIgeXkgPSB0aGlzLnkucmVkU3FyKCk7XG4gIC8vIFpaID0gWjFeMlxuICB2YXIgenogPSB0aGlzLnoucmVkU3FyKCk7XG4gIC8vIFlZWVkgPSBZWV4yXG4gIHZhciB5eXl5ID0geXkucmVkU3FyKCk7XG4gIC8vIE0gPSAzICogWFggKyBhICogWloyOyBhID0gMFxuICB2YXIgbSA9IHh4LnJlZEFkZCh4eCkucmVkSUFkZCh4eCk7XG4gIC8vIE1NID0gTV4yXG4gIHZhciBtbSA9IG0ucmVkU3FyKCk7XG4gIC8vIEUgPSA2ICogKChYMSArIFlZKV4yIC0gWFggLSBZWVlZKSAtIE1NXG4gIHZhciBlID0gdGhpcy54LnJlZEFkZCh5eSkucmVkU3FyKCkucmVkSVN1Yih4eCkucmVkSVN1Yih5eXl5KTtcbiAgZSA9IGUucmVkSUFkZChlKTtcbiAgZSA9IGUucmVkQWRkKGUpLnJlZElBZGQoZSk7XG4gIGUgPSBlLnJlZElTdWIobW0pO1xuICAvLyBFRSA9IEVeMlxuICB2YXIgZWUgPSBlLnJlZFNxcigpO1xuICAvLyBUID0gMTYqWVlZWVxuICB2YXIgdCA9IHl5eXkucmVkSUFkZCh5eXl5KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgLy8gVSA9IChNICsgRSleMiAtIE1NIC0gRUUgLSBUXG4gIHZhciB1ID0gbS5yZWRJQWRkKGUpLnJlZFNxcigpLnJlZElTdWIobW0pLnJlZElTdWIoZWUpLnJlZElTdWIodCk7XG4gIC8vIFgzID0gNCAqIChYMSAqIEVFIC0gNCAqIFlZICogVSlcbiAgdmFyIHl5dTQgPSB5eS5yZWRNdWwodSk7XG4gIHl5dTQgPSB5eXU0LnJlZElBZGQoeXl1NCk7XG4gIHl5dTQgPSB5eXU0LnJlZElBZGQoeXl1NCk7XG4gIHZhciBueCA9IHRoaXMueC5yZWRNdWwoZWUpLnJlZElTdWIoeXl1NCk7XG4gIG54ID0gbngucmVkSUFkZChueCk7XG4gIG54ID0gbngucmVkSUFkZChueCk7XG4gIC8vIFkzID0gOCAqIFkxICogKFUgKiAoVCAtIFUpIC0gRSAqIEVFKVxuICB2YXIgbnkgPSB0aGlzLnkucmVkTXVsKHUucmVkTXVsKHQucmVkSVN1Yih1KSkucmVkSVN1YihlLnJlZE11bChlZSkpKTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgLy8gWjMgPSAoWjEgKyBFKV4yIC0gWlogLSBFRVxuICB2YXIgbnogPSB0aGlzLnoucmVkQWRkKGUpLnJlZFNxcigpLnJlZElTdWIoenopLnJlZElTdWIoZWUpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKGssIGtiYXNlKSB7XG4gIGsgPSBuZXcgQk4oaywga2Jhc2UpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsIGspO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKHApIHtcbiAgaWYgKHAudHlwZSA9PT0gJ2FmZmluZScpXG4gICAgcmV0dXJuIHRoaXMuZXEocC50b0ooKSk7XG5cbiAgaWYgKHRoaXMgPT09IHApXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgLy8geDEgKiB6Ml4yID09IHgyICogejFeMlxuICB2YXIgejIgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciBwejIgPSBwLnoucmVkU3FyKCk7XG4gIGlmICh0aGlzLngucmVkTXVsKHB6MikucmVkSVN1YihwLngucmVkTXVsKHoyKSkuY21wbigwKSAhPT0gMClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8geTEgKiB6Ml4zID09IHkyICogejFeM1xuICB2YXIgejMgPSB6Mi5yZWRNdWwodGhpcy56KTtcbiAgdmFyIHB6MyA9IHB6Mi5yZWRNdWwocC56KTtcbiAgcmV0dXJuIHRoaXMueS5yZWRNdWwocHozKS5yZWRJU3ViKHAueS5yZWRNdWwoejMpKS5jbXBuKDApID09PSAwO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5lcVhUb1AgPSBmdW5jdGlvbiBlcVhUb1AoeCkge1xuICB2YXIgenMgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciByeCA9IHgudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh6cyk7XG4gIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeGMgPSB4LmNsb25lKCk7XG4gIHZhciB0ID0gdGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh6cyk7XG4gIGZvciAoOzspIHtcbiAgICB4Yy5pYWRkKHRoaXMuY3VydmUubik7XG4gICAgaWYgKHhjLmNtcCh0aGlzLmN1cnZlLnApID49IDApXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICByeC5yZWRJQWRkKHQpO1xuICAgIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgSlBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIEpQb2ludCB4OiAnICsgdGhpcy54LnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHk6ICcgKyB0aGlzLnkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgejogJyArIHRoaXMuei50b1N0cmluZygxNiwgMikgKyAnPic7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICAvLyBYWFggVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB6ZXJvIGlzIGFsd2F5cyB6ZXJvIGluIHJlZFxuICByZXR1cm4gdGhpcy56LmNtcG4oMCkgPT09IDA7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmVzID0gZXhwb3J0cztcblxudmFyIGhhc2ggPSByZXF1aXJlKCdoYXNoLmpzJyk7XG52YXIgY3VydmUgPSByZXF1aXJlKCcuL2N1cnZlJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIFByZXNldEN1cnZlKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ3Nob3J0JylcbiAgICB0aGlzLmN1cnZlID0gbmV3IGN1cnZlLnNob3J0KG9wdGlvbnMpO1xuICBlbHNlIGlmIChvcHRpb25zLnR5cGUgPT09ICdlZHdhcmRzJylcbiAgICB0aGlzLmN1cnZlID0gbmV3IGN1cnZlLmVkd2FyZHMob3B0aW9ucyk7XG4gIGVsc2VcbiAgICB0aGlzLmN1cnZlID0gbmV3IGN1cnZlLm1vbnQob3B0aW9ucyk7XG4gIHRoaXMuZyA9IHRoaXMuY3VydmUuZztcbiAgdGhpcy5uID0gdGhpcy5jdXJ2ZS5uO1xuICB0aGlzLmhhc2ggPSBvcHRpb25zLmhhc2g7XG5cbiAgYXNzZXJ0KHRoaXMuZy52YWxpZGF0ZSgpLCAnSW52YWxpZCBjdXJ2ZScpO1xuICBhc3NlcnQodGhpcy5nLm11bCh0aGlzLm4pLmlzSW5maW5pdHkoKSwgJ0ludmFsaWQgY3VydmUsIEcqTiAhPSBPJyk7XG59XG5jdXJ2ZXMuUHJlc2V0Q3VydmUgPSBQcmVzZXRDdXJ2ZTtcblxuZnVuY3Rpb24gZGVmaW5lQ3VydmUobmFtZSwgb3B0aW9ucykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3VydmVzLCBuYW1lLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjdXJ2ZSA9IG5ldyBQcmVzZXRDdXJ2ZShvcHRpb25zKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdXJ2ZXMsIG5hbWUsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogY3VydmUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjdXJ2ZTtcbiAgICB9LFxuICB9KTtcbn1cblxuZGVmaW5lQ3VydmUoJ3AxOTInLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiAncDE5MicsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZicsXG4gIGE6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmYycsXG4gIGI6ICc2NDIxMDUxOSBlNTljODBlNyAwZmE3ZTlhYiA3MjI0MzA0OSBmZWI4ZGVlYyBjMTQ2YjliMScsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiA5OWRlZjgzNiAxNDZiYzliMSBiNGQyMjgzMScsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICcxODhkYTgwZSBiMDMwOTBmNiA3Y2JmMjBlYiA0M2ExODgwMCBmNGZmMGFmZCA4MmZmMTAxMicsXG4gICAgJzA3MTkyYjk1IGZmYzhkYTc4IDYzMTAxMWVkIDZiMjRjZGQ1IDczZjk3N2ExIDFlNzk0ODExJyxcbiAgXSxcbn0pO1xuXG5kZWZpbmVDdXJ2ZSgncDIyNCcsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6ICdwMjI0JyxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyxcbiAgYTogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlJyxcbiAgYjogJ2I0MDUwYTg1IDBjMDRiM2FiIGY1NDEzMjU2IDUwNDRiMGI3IGQ3YmZkOGJhIDI3MGIzOTQzIDIzNTVmZmI0JyxcbiAgbjogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmYxNmEyIGUwYjhmMDNlIDEzZGQyOTQ1IDVjNWMyYTNkJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJ2I3MGUwY2JkIDZiYjRiZjdmIDMyMTM5MGI5IDRhMDNjMWQzIDU2YzIxMTIyIDM0MzI4MGQ2IDExNWMxZDIxJyxcbiAgICAnYmQzNzYzODggYjVmNzIzZmIgNGMyMmRmZTYgY2Q0Mzc1YTAgNWEwNzQ3NjQgNDRkNTgxOTkgODUwMDdlMzQnLFxuICBdLFxufSk7XG5cbmRlZmluZUN1cnZlKCdwMjU2Jywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogbnVsbCxcbiAgcDogJ2ZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmJyxcbiAgYTogJ2ZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjJyxcbiAgYjogJzVhYzYzNWQ4IGFhM2E5M2U3IGIzZWJiZDU1IDc2OTg4NmJjIDY1MWQwNmIwIGNjNTNiMGY2IDNiY2UzYzNlIDI3ZDI2MDRiJyxcbiAgbjogJ2ZmZmZmZmZmIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGJjZTZmYWFkIGE3MTc5ZTg0IGYzYjljYWMyIGZjNjMyNTUxJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzZiMTdkMWYyIGUxMmM0MjQ3IGY4YmNlNmU1IDYzYTQ0MGYyIDc3MDM3ZDgxIDJkZWIzM2EwIGY0YTEzOTQ1IGQ4OThjMjk2JyxcbiAgICAnNGZlMzQyZTIgZmUxYTdmOWIgOGVlN2ViNGEgN2MwZjllMTYgMmJjZTMzNTcgNmIzMTVlY2UgY2JiNjQwNjggMzdiZjUxZjUnLFxuICBdLFxufSk7XG5cbmRlZmluZUN1cnZlKCdwMzg0Jywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogbnVsbCxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYnLFxuICBhOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZSBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmYycsXG4gIGI6ICdiMzMxMmZhNyBlMjNlZTdlNCA5ODhlMDU2YiBlM2Y4MmQxOSAxODFkOWM2ZSBmZTgxNDExMiAwMzE0MDg4ZiAnICtcbiAgICAgJzUwMTM4NzVhIGM2NTYzOThkIDhhMmVkMTlkIDJhODVjOGVkIGQzZWMyYWVmJyxcbiAgbjogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGM3NjM0ZDgxICcgK1xuICAgICAnZjQzNzJkZGYgNTgxYTBkYjIgNDhiMGE3N2EgZWNlYzE5NmEgY2NjNTI5NzMnLFxuICBoYXNoOiBoYXNoLnNoYTM4NCxcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnYWE4N2NhMjIgYmU4YjA1MzcgOGViMWM3MWUgZjMyMGFkNzQgNmUxZDNiNjIgOGJhNzliOTggNTlmNzQxZTAgODI1NDJhMzggJyArXG4gICAgJzU1MDJmMjVkIGJmNTUyOTZjIDNhNTQ1ZTM4IDcyNzYwYWI3JyxcbiAgICAnMzYxN2RlNGEgOTYyNjJjNmYgNWQ5ZTk4YmYgOTI5MmRjMjkgZjhmNDFkYmQgMjg5YTE0N2MgZTlkYTMxMTMgYjVmMGI4YzAgJyArXG4gICAgJzBhNjBiMWNlIDFkN2U4MTlkIDdhNDMxZDdjIDkwZWEwZTVmJyxcbiAgXSxcbn0pO1xuXG5kZWZpbmVDdXJ2ZSgncDUyMScsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6IG51bGwsXG4gIHA6ICcwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYnLFxuICBhOiAnMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjJyxcbiAgYjogJzAwMDAwMDUxIDk1M2ViOTYxIDhlMWM5YTFmIDkyOWEyMWEwIGI2ODU0MGVlIGEyZGE3MjViICcgK1xuICAgICAnOTliMzE1ZjMgYjhiNDg5OTEgOGVmMTA5ZTEgNTYxOTM5NTEgZWM3ZTkzN2IgMTY1MmMwYmQgJyArXG4gICAgICczYmIxYmYwNyAzNTczZGY4OCAzZDJjMzRmMSBlZjQ1MWZkNCA2YjUwM2YwMCcsXG4gIG46ICcwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZhIDUxODY4NzgzIGJmMmY5NjZiIDdmY2MwMTQ4ICcgK1xuICAgICAnZjcwOWE1ZDAgM2JiNWM5YjggODk5YzQ3YWUgYmI2ZmI3MWUgOTEzODY0MDknLFxuICBoYXNoOiBoYXNoLnNoYTUxMixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnMDAwMDAwYzYgODU4ZTA2YjcgMDQwNGU5Y2QgOWUzZWNiNjYgMjM5NWI0NDIgOWM2NDgxMzkgJyArXG4gICAgJzA1M2ZiNTIxIGY4MjhhZjYwIDZiNGQzZGJhIGExNGI1ZTc3IGVmZTc1OTI4IGZlMWRjMTI3ICcgK1xuICAgICdhMmZmYThkZSAzMzQ4YjNjMSA4NTZhNDI5YiBmOTdlN2UzMSBjMmU1YmQ2NicsXG4gICAgJzAwMDAwMTE4IDM5Mjk2YTc4IDlhM2JjMDA0IDVjOGE1ZmI0IDJjN2QxYmQ5IDk4ZjU0NDQ5ICcgK1xuICAgICc1NzliNDQ2OCAxN2FmYmQxNyAyNzNlNjYyYyA5N2VlNzI5OSA1ZWY0MjY0MCBjNTUwYjkwMSAnICtcbiAgICAnM2ZhZDA3NjEgMzUzYzcwODYgYTI3MmMyNDAgODhiZTk0NzYgOWZkMTY2NTAnLFxuICBdLFxufSk7XG5cbmRlZmluZUN1cnZlKCdjdXJ2ZTI1NTE5Jywge1xuICB0eXBlOiAnbW9udCcsXG4gIHByaW1lOiAncDI1NTE5JyxcbiAgcDogJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnLFxuICBhOiAnNzZkMDYnLFxuICBiOiAnMScsXG4gIG46ICcxMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgMTRkZWY5ZGVhMmY3OWNkNiA1ODEyNjMxYTVjZjVkM2VkJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzknLFxuICBdLFxufSk7XG5cbmRlZmluZUN1cnZlKCdlZDI1NTE5Jywge1xuICB0eXBlOiAnZWR3YXJkcycsXG4gIHByaW1lOiAncDI1NTE5JyxcbiAgcDogJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnLFxuICBhOiAnLTEnLFxuICBjOiAnMScsXG4gIC8vIC0xMjE2NjUgKiAoMTIxNjY2XigtMSkpIChtb2QgUClcbiAgZDogJzUyMDM2Y2VlMmI2ZmZlNzMgOGNjNzQwNzk3Nzc5ZTg5OCAwMDcwMGE0ZDQxNDFkOGFiIDc1ZWI0ZGNhMTM1OTc4YTMnLFxuICBuOiAnMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCcsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICcyMTY5MzZkM2NkNmU1M2ZlYzBhNGUyMzFmZGQ2ZGM1YzY5MmNjNzYwOTUyNWE3YjJjOTU2MmQ2MDhmMjVkNTFhJyxcblxuICAgIC8vIDQvNVxuICAgICc2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjU4JyxcbiAgXSxcbn0pO1xuXG52YXIgcHJlO1xudHJ5IHtcbiAgcHJlID0gcmVxdWlyZSgnLi9wcmVjb21wdXRlZC9zZWNwMjU2azEnKTtcbn0gY2F0Y2ggKGUpIHtcbiAgcHJlID0gdW5kZWZpbmVkO1xufVxuXG5kZWZpbmVDdXJ2ZSgnc2VjcDI1NmsxJywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogJ2syNTYnLFxuICBwOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYnLFxuICBhOiAnMCcsXG4gIGI6ICc3JyxcbiAgbjogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGJhYWVkY2U2IGFmNDhhMDNiIGJmZDI1ZThjIGQwMzY0MTQxJyxcbiAgaDogJzEnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcblxuICAvLyBQcmVjb21wdXRlZCBlbmRvbW9ycGhpc21cbiAgYmV0YTogJzdhZTk2YTJiNjU3YzA3MTA2ZTY0NDc5ZWFjMzQzNGU5OWNmMDQ5NzUxMmY1ODk5NWMxMzk2YzI4NzE5NTAxZWUnLFxuICBsYW1iZGE6ICc1MzYzYWQ0Y2MwNWMzMGUwYTUyNjFjMDI4ODEyNjQ1YTEyMmUyMmVhMjA4MTY2NzhkZjAyOTY3YzFiMjNiZDcyJyxcbiAgYmFzaXM6IFtcbiAgICB7XG4gICAgICBhOiAnMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUnLFxuICAgICAgYjogJy1lNDQzN2VkNjAxMGU4ODI4NmY1NDdmYTkwYWJmZTRjMycsXG4gICAgfSxcbiAgICB7XG4gICAgICBhOiAnMTE0Y2E1MGY3YThlMmYzZjY1N2MxMTA4ZDlkNDRjZmQ4JyxcbiAgICAgIGI6ICczMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNScsXG4gICAgfSxcbiAgXSxcblxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICc3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAyOWJmY2RiMmRjZTI4ZDk1OWYyODE1YjE2ZjgxNzk4JyxcbiAgICAnNDgzYWRhNzcyNmEzYzQ2NTVkYTRmYmZjMGUxMTA4YThmZDE3YjQ0OGE2ODU1NDE5OWM0N2QwOGZmYjEwZDRiOCcsXG4gICAgcHJlLFxuICBdLFxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgSG1hY0RSQkcgPSByZXF1aXJlKCdobWFjLWRyYmcnKTtcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi4vY3VydmVzJyk7XG52YXIgcmFuZCA9IHJlcXVpcmUoJ2Jyb3JhbmQnKTtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbnZhciBLZXlQYWlyID0gcmVxdWlyZSgnLi9rZXknKTtcbnZhciBTaWduYXR1cmUgPSByZXF1aXJlKCcuL3NpZ25hdHVyZScpO1xuXG5mdW5jdGlvbiBFQyhvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBFQykpXG4gICAgcmV0dXJuIG5ldyBFQyhvcHRpb25zKTtcblxuICAvLyBTaG9ydGN1dCBgZWxsaXB0aWMuZWMoY3VydmUtbmFtZSlgXG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICBhc3NlcnQoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGN1cnZlcywgb3B0aW9ucyksXG4gICAgICAnVW5rbm93biBjdXJ2ZSAnICsgb3B0aW9ucyk7XG5cbiAgICBvcHRpb25zID0gY3VydmVzW29wdGlvbnNdO1xuICB9XG5cbiAgLy8gU2hvcnRjdXQgZm9yIGBlbGxpcHRpYy5lYyhlbGxpcHRpYy5jdXJ2ZXMuY3VydmVOYW1lKWBcbiAgaWYgKG9wdGlvbnMgaW5zdGFuY2VvZiBjdXJ2ZXMuUHJlc2V0Q3VydmUpXG4gICAgb3B0aW9ucyA9IHsgY3VydmU6IG9wdGlvbnMgfTtcblxuICB0aGlzLmN1cnZlID0gb3B0aW9ucy5jdXJ2ZS5jdXJ2ZTtcbiAgdGhpcy5uID0gdGhpcy5jdXJ2ZS5uO1xuICB0aGlzLm5oID0gdGhpcy5uLnVzaHJuKDEpO1xuICB0aGlzLmcgPSB0aGlzLmN1cnZlLmc7XG5cbiAgLy8gUG9pbnQgb24gY3VydmVcbiAgdGhpcy5nID0gb3B0aW9ucy5jdXJ2ZS5nO1xuICB0aGlzLmcucHJlY29tcHV0ZShvcHRpb25zLmN1cnZlLm4uYml0TGVuZ3RoKCkgKyAxKTtcblxuICAvLyBIYXNoIGZvciBmdW5jdGlvbiBmb3IgRFJCR1xuICB0aGlzLmhhc2ggPSBvcHRpb25zLmhhc2ggfHwgb3B0aW9ucy5jdXJ2ZS5oYXNoO1xufVxubW9kdWxlLmV4cG9ydHMgPSBFQztcblxuRUMucHJvdG90eXBlLmtleVBhaXIgPSBmdW5jdGlvbiBrZXlQYWlyKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBLZXlQYWlyKHRoaXMsIG9wdGlvbnMpO1xufTtcblxuRUMucHJvdG90eXBlLmtleUZyb21Qcml2YXRlID0gZnVuY3Rpb24ga2V5RnJvbVByaXZhdGUocHJpdiwgZW5jKSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21Qcml2YXRlKHRoaXMsIHByaXYsIGVuYyk7XG59O1xuXG5FQy5wcm90b3R5cGUua2V5RnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGtleUZyb21QdWJsaWMocHViLCBlbmMpIHtcbiAgcmV0dXJuIEtleVBhaXIuZnJvbVB1YmxpYyh0aGlzLCBwdWIsIGVuYyk7XG59O1xuXG5FQy5wcm90b3R5cGUuZ2VuS2V5UGFpciA9IGZ1bmN0aW9uIGdlbktleVBhaXIob3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpXG4gICAgb3B0aW9ucyA9IHt9O1xuXG4gIC8vIEluc3RhbnRpYXRlIEhtYWNfRFJCR1xuICB2YXIgZHJiZyA9IG5ldyBIbWFjRFJCRyh7XG4gICAgaGFzaDogdGhpcy5oYXNoLFxuICAgIHBlcnM6IG9wdGlvbnMucGVycyxcbiAgICBwZXJzRW5jOiBvcHRpb25zLnBlcnNFbmMgfHwgJ3V0ZjgnLFxuICAgIGVudHJvcHk6IG9wdGlvbnMuZW50cm9weSB8fCByYW5kKHRoaXMuaGFzaC5obWFjU3RyZW5ndGgpLFxuICAgIGVudHJvcHlFbmM6IG9wdGlvbnMuZW50cm9weSAmJiBvcHRpb25zLmVudHJvcHlFbmMgfHwgJ3V0ZjgnLFxuICAgIG5vbmNlOiB0aGlzLm4udG9BcnJheSgpLFxuICB9KTtcblxuICB2YXIgYnl0ZXMgPSB0aGlzLm4uYnl0ZUxlbmd0aCgpO1xuICB2YXIgbnMyID0gdGhpcy5uLnN1YihuZXcgQk4oMikpO1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIHByaXYgPSBuZXcgQk4oZHJiZy5nZW5lcmF0ZShieXRlcykpO1xuICAgIGlmIChwcml2LmNtcChuczIpID4gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgcHJpdi5pYWRkbigxKTtcbiAgICByZXR1cm4gdGhpcy5rZXlGcm9tUHJpdmF0ZShwcml2KTtcbiAgfVxufTtcblxuRUMucHJvdG90eXBlLl90cnVuY2F0ZVRvTiA9IGZ1bmN0aW9uIF90cnVuY2F0ZVRvTihtc2csIHRydW5jT25seSkge1xuICB2YXIgZGVsdGEgPSBtc2cuYnl0ZUxlbmd0aCgpICogOCAtIHRoaXMubi5iaXRMZW5ndGgoKTtcbiAgaWYgKGRlbHRhID4gMClcbiAgICBtc2cgPSBtc2cudXNocm4oZGVsdGEpO1xuICBpZiAoIXRydW5jT25seSAmJiBtc2cuY21wKHRoaXMubikgPj0gMClcbiAgICByZXR1cm4gbXNnLnN1Yih0aGlzLm4pO1xuICBlbHNlXG4gICAgcmV0dXJuIG1zZztcbn07XG5cbkVDLnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbihtc2csIGtleSwgZW5jLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgZW5jID09PSAnb2JqZWN0Jykge1xuICAgIG9wdGlvbnMgPSBlbmM7XG4gICAgZW5jID0gbnVsbDtcbiAgfVxuICBpZiAoIW9wdGlvbnMpXG4gICAgb3B0aW9ucyA9IHt9O1xuXG4gIGtleSA9IHRoaXMua2V5RnJvbVByaXZhdGUoa2V5LCBlbmMpO1xuICBtc2cgPSB0aGlzLl90cnVuY2F0ZVRvTihuZXcgQk4obXNnLCAxNikpO1xuXG4gIC8vIFplcm8tZXh0ZW5kIGtleSB0byBwcm92aWRlIGVub3VnaCBlbnRyb3B5XG4gIHZhciBieXRlcyA9IHRoaXMubi5ieXRlTGVuZ3RoKCk7XG4gIHZhciBia2V5ID0ga2V5LmdldFByaXZhdGUoKS50b0FycmF5KCdiZScsIGJ5dGVzKTtcblxuICAvLyBaZXJvLWV4dGVuZCBub25jZSB0byBoYXZlIHRoZSBzYW1lIGJ5dGUgc2l6ZSBhcyBOXG4gIHZhciBub25jZSA9IG1zZy50b0FycmF5KCdiZScsIGJ5dGVzKTtcblxuICAvLyBJbnN0YW50aWF0ZSBIbWFjX0RSQkdcbiAgdmFyIGRyYmcgPSBuZXcgSG1hY0RSQkcoe1xuICAgIGhhc2g6IHRoaXMuaGFzaCxcbiAgICBlbnRyb3B5OiBia2V5LFxuICAgIG5vbmNlOiBub25jZSxcbiAgICBwZXJzOiBvcHRpb25zLnBlcnMsXG4gICAgcGVyc0VuYzogb3B0aW9ucy5wZXJzRW5jIHx8ICd1dGY4JyxcbiAgfSk7XG5cbiAgLy8gTnVtYmVyIG9mIGJ5dGVzIHRvIGdlbmVyYXRlXG4gIHZhciBuczEgPSB0aGlzLm4uc3ViKG5ldyBCTigxKSk7XG5cbiAgZm9yICh2YXIgaXRlciA9IDA7IDsgaXRlcisrKSB7XG4gICAgdmFyIGsgPSBvcHRpb25zLmsgP1xuICAgICAgb3B0aW9ucy5rKGl0ZXIpIDpcbiAgICAgIG5ldyBCTihkcmJnLmdlbmVyYXRlKHRoaXMubi5ieXRlTGVuZ3RoKCkpKTtcbiAgICBrID0gdGhpcy5fdHJ1bmNhdGVUb04oaywgdHJ1ZSk7XG4gICAgaWYgKGsuY21wbigxKSA8PSAwIHx8IGsuY21wKG5zMSkgPj0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIGtwID0gdGhpcy5nLm11bChrKTtcbiAgICBpZiAoa3AuaXNJbmZpbml0eSgpKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIga3BYID0ga3AuZ2V0WCgpO1xuICAgIHZhciByID0ga3BYLnVtb2QodGhpcy5uKTtcbiAgICBpZiAoci5jbXBuKDApID09PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIgcyA9IGsuaW52bSh0aGlzLm4pLm11bChyLm11bChrZXkuZ2V0UHJpdmF0ZSgpKS5pYWRkKG1zZykpO1xuICAgIHMgPSBzLnVtb2QodGhpcy5uKTtcbiAgICBpZiAocy5jbXBuKDApID09PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIgcmVjb3ZlcnlQYXJhbSA9IChrcC5nZXRZKCkuaXNPZGQoKSA/IDEgOiAwKSB8XG4gICAgICAgICAgICAgICAgICAgICAgICAoa3BYLmNtcChyKSAhPT0gMCA/IDIgOiAwKTtcblxuICAgIC8vIFVzZSBjb21wbGVtZW50IG9mIGBzYCwgaWYgaXQgaXMgPiBgbiAvIDJgXG4gICAgaWYgKG9wdGlvbnMuY2Fub25pY2FsICYmIHMuY21wKHRoaXMubmgpID4gMCkge1xuICAgICAgcyA9IHRoaXMubi5zdWIocyk7XG4gICAgICByZWNvdmVyeVBhcmFtIF49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTaWduYXR1cmUoeyByOiByLCBzOiBzLCByZWNvdmVyeVBhcmFtOiByZWNvdmVyeVBhcmFtIH0pO1xuICB9XG59O1xuXG5FQy5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1zZywgc2lnbmF0dXJlLCBrZXksIGVuYykge1xuICBtc2cgPSB0aGlzLl90cnVuY2F0ZVRvTihuZXcgQk4obXNnLCAxNikpO1xuICBrZXkgPSB0aGlzLmtleUZyb21QdWJsaWMoa2V5LCBlbmMpO1xuICBzaWduYXR1cmUgPSBuZXcgU2lnbmF0dXJlKHNpZ25hdHVyZSwgJ2hleCcpO1xuXG4gIC8vIFBlcmZvcm0gcHJpbWl0aXZlIHZhbHVlcyB2YWxpZGF0aW9uXG4gIHZhciByID0gc2lnbmF0dXJlLnI7XG4gIHZhciBzID0gc2lnbmF0dXJlLnM7XG4gIGlmIChyLmNtcG4oMSkgPCAwIHx8IHIuY21wKHRoaXMubikgPj0gMClcbiAgICByZXR1cm4gZmFsc2U7XG4gIGlmIChzLmNtcG4oMSkgPCAwIHx8IHMuY21wKHRoaXMubikgPj0gMClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gVmFsaWRhdGUgc2lnbmF0dXJlXG4gIHZhciBzaW52ID0gcy5pbnZtKHRoaXMubik7XG4gIHZhciB1MSA9IHNpbnYubXVsKG1zZykudW1vZCh0aGlzLm4pO1xuICB2YXIgdTIgPSBzaW52Lm11bChyKS51bW9kKHRoaXMubik7XG4gIHZhciBwO1xuXG4gIGlmICghdGhpcy5jdXJ2ZS5fbWF4d2VsbFRyaWNrKSB7XG4gICAgcCA9IHRoaXMuZy5tdWxBZGQodTEsIGtleS5nZXRQdWJsaWMoKSwgdTIpO1xuICAgIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiBwLmdldFgoKS51bW9kKHRoaXMubikuY21wKHIpID09PSAwO1xuICB9XG5cbiAgLy8gTk9URTogR3JlZyBNYXh3ZWxsJ3MgdHJpY2ssIGluc3BpcmVkIGJ5OlxuICAvLyBodHRwczovL2dpdC5pby92YWQzS1xuXG4gIHAgPSB0aGlzLmcuam11bEFkZCh1MSwga2V5LmdldFB1YmxpYygpLCB1Mik7XG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gQ29tcGFyZSBgcC54YCBvZiBKYWNvYmlhbiBwb2ludCB3aXRoIGByYCxcbiAgLy8gdGhpcyB3aWxsIGRvIGBwLnggPT0gciAqIHAuel4yYCBpbnN0ZWFkIG9mIG11bHRpcGx5aW5nIGBwLnhgIGJ5IHRoZVxuICAvLyBpbnZlcnNlIG9mIGBwLnpeMmBcbiAgcmV0dXJuIHAuZXFYVG9QKHIpO1xufTtcblxuRUMucHJvdG90eXBlLnJlY292ZXJQdWJLZXkgPSBmdW5jdGlvbihtc2csIHNpZ25hdHVyZSwgaiwgZW5jKSB7XG4gIGFzc2VydCgoMyAmIGopID09PSBqLCAnVGhlIHJlY292ZXJ5IHBhcmFtIGlzIG1vcmUgdGhhbiB0d28gYml0cycpO1xuICBzaWduYXR1cmUgPSBuZXcgU2lnbmF0dXJlKHNpZ25hdHVyZSwgZW5jKTtcblxuICB2YXIgbiA9IHRoaXMubjtcbiAgdmFyIGUgPSBuZXcgQk4obXNnKTtcbiAgdmFyIHIgPSBzaWduYXR1cmUucjtcbiAgdmFyIHMgPSBzaWduYXR1cmUucztcblxuICAvLyBBIHNldCBMU0Igc2lnbmlmaWVzIHRoYXQgdGhlIHktY29vcmRpbmF0ZSBpcyBvZGRcbiAgdmFyIGlzWU9kZCA9IGogJiAxO1xuICB2YXIgaXNTZWNvbmRLZXkgPSBqID4+IDE7XG4gIGlmIChyLmNtcCh0aGlzLmN1cnZlLnAudW1vZCh0aGlzLmN1cnZlLm4pKSA+PSAwICYmIGlzU2Vjb25kS2V5KVxuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgc2VuY29uZCBrZXkgY2FuZGluYXRlJyk7XG5cbiAgLy8gMS4xLiBMZXQgeCA9IHIgKyBqbi5cbiAgaWYgKGlzU2Vjb25kS2V5KVxuICAgIHIgPSB0aGlzLmN1cnZlLnBvaW50RnJvbVgoci5hZGQodGhpcy5jdXJ2ZS5uKSwgaXNZT2RkKTtcbiAgZWxzZVxuICAgIHIgPSB0aGlzLmN1cnZlLnBvaW50RnJvbVgociwgaXNZT2RkKTtcblxuICB2YXIgckludiA9IHNpZ25hdHVyZS5yLmludm0obik7XG4gIHZhciBzMSA9IG4uc3ViKGUpLm11bChySW52KS51bW9kKG4pO1xuICB2YXIgczIgPSBzLm11bChySW52KS51bW9kKG4pO1xuXG4gIC8vIDEuNi4xIENvbXB1dGUgUSA9IHJeLTEgKHNSIC0gIGVHKVxuICAvLyAgICAgICAgICAgICAgIFEgPSByXi0xIChzUiArIC1lRylcbiAgcmV0dXJuIHRoaXMuZy5tdWxBZGQoczEsIHIsIHMyKTtcbn07XG5cbkVDLnByb3RvdHlwZS5nZXRLZXlSZWNvdmVyeVBhcmFtID0gZnVuY3Rpb24oZSwgc2lnbmF0dXJlLCBRLCBlbmMpIHtcbiAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShzaWduYXR1cmUsIGVuYyk7XG4gIGlmIChzaWduYXR1cmUucmVjb3ZlcnlQYXJhbSAhPT0gbnVsbClcbiAgICByZXR1cm4gc2lnbmF0dXJlLnJlY292ZXJ5UGFyYW07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgUXByaW1lO1xuICAgIHRyeSB7XG4gICAgICBRcHJpbWUgPSB0aGlzLnJlY292ZXJQdWJLZXkoZSwgc2lnbmF0dXJlLCBpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoUXByaW1lLmVxKFEpKVxuICAgICAgcmV0dXJuIGk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCB2YWxpZCByZWNvdmVyeSBmYWN0b3InKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gS2V5UGFpcihlYywgb3B0aW9ucykge1xuICB0aGlzLmVjID0gZWM7XG4gIHRoaXMucHJpdiA9IG51bGw7XG4gIHRoaXMucHViID0gbnVsbDtcblxuICAvLyBLZXlQYWlyKGVjLCB7IHByaXY6IC4uLiwgcHViOiAuLi4gfSlcbiAgaWYgKG9wdGlvbnMucHJpdilcbiAgICB0aGlzLl9pbXBvcnRQcml2YXRlKG9wdGlvbnMucHJpdiwgb3B0aW9ucy5wcml2RW5jKTtcbiAgaWYgKG9wdGlvbnMucHViKVxuICAgIHRoaXMuX2ltcG9ydFB1YmxpYyhvcHRpb25zLnB1Yiwgb3B0aW9ucy5wdWJFbmMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBLZXlQYWlyO1xuXG5LZXlQYWlyLmZyb21QdWJsaWMgPSBmdW5jdGlvbiBmcm9tUHVibGljKGVjLCBwdWIsIGVuYykge1xuICBpZiAocHViIGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gcHViO1xuXG4gIHJldHVybiBuZXcgS2V5UGFpcihlYywge1xuICAgIHB1YjogcHViLFxuICAgIHB1YkVuYzogZW5jLFxuICB9KTtcbn07XG5cbktleVBhaXIuZnJvbVByaXZhdGUgPSBmdW5jdGlvbiBmcm9tUHJpdmF0ZShlYywgcHJpdiwgZW5jKSB7XG4gIGlmIChwcml2IGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gcHJpdjtcblxuICByZXR1cm4gbmV3IEtleVBhaXIoZWMsIHtcbiAgICBwcml2OiBwcml2LFxuICAgIHByaXZFbmM6IGVuYyxcbiAgfSk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKCkge1xuICB2YXIgcHViID0gdGhpcy5nZXRQdWJsaWMoKTtcblxuICBpZiAocHViLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4geyByZXN1bHQ6IGZhbHNlLCByZWFzb246ICdJbnZhbGlkIHB1YmxpYyBrZXknIH07XG4gIGlmICghcHViLnZhbGlkYXRlKCkpXG4gICAgcmV0dXJuIHsgcmVzdWx0OiBmYWxzZSwgcmVhc29uOiAnUHVibGljIGtleSBpcyBub3QgYSBwb2ludCcgfTtcbiAgaWYgKCFwdWIubXVsKHRoaXMuZWMuY3VydmUubikuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB7IHJlc3VsdDogZmFsc2UsIHJlYXNvbjogJ1B1YmxpYyBrZXkgKiBOICE9IE8nIH07XG5cbiAgcmV0dXJuIHsgcmVzdWx0OiB0cnVlLCByZWFzb246IG51bGwgfTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFB1YmxpYyA9IGZ1bmN0aW9uIGdldFB1YmxpYyhjb21wYWN0LCBlbmMpIHtcbiAgLy8gY29tcGFjdCBpcyBvcHRpb25hbCBhcmd1bWVudFxuICBpZiAodHlwZW9mIGNvbXBhY3QgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jID0gY29tcGFjdDtcbiAgICBjb21wYWN0ID0gbnVsbDtcbiAgfVxuXG4gIGlmICghdGhpcy5wdWIpXG4gICAgdGhpcy5wdWIgPSB0aGlzLmVjLmcubXVsKHRoaXMucHJpdik7XG5cbiAgaWYgKCFlbmMpXG4gICAgcmV0dXJuIHRoaXMucHViO1xuXG4gIHJldHVybiB0aGlzLnB1Yi5lbmNvZGUoZW5jLCBjb21wYWN0KTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFByaXZhdGUgPSBmdW5jdGlvbiBnZXRQcml2YXRlKGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdGhpcy5wcml2LnRvU3RyaW5nKDE2LCAyKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLnByaXY7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5faW1wb3J0UHJpdmF0ZSA9IGZ1bmN0aW9uIF9pbXBvcnRQcml2YXRlKGtleSwgZW5jKSB7XG4gIHRoaXMucHJpdiA9IG5ldyBCTihrZXksIGVuYyB8fCAxNik7XG5cbiAgLy8gRW5zdXJlIHRoYXQgdGhlIHByaXYgd29uJ3QgYmUgYmlnZ2VyIHRoYW4gbiwgb3RoZXJ3aXNlIHdlIG1heSBmYWlsXG4gIC8vIGluIGZpeGVkIG11bHRpcGxpY2F0aW9uIG1ldGhvZFxuICB0aGlzLnByaXYgPSB0aGlzLnByaXYudW1vZCh0aGlzLmVjLmN1cnZlLm4pO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuX2ltcG9ydFB1YmxpYyA9IGZ1bmN0aW9uIF9pbXBvcnRQdWJsaWMoa2V5LCBlbmMpIHtcbiAgaWYgKGtleS54IHx8IGtleS55KSB7XG4gICAgLy8gTW9udGdvbWVyeSBwb2ludHMgb25seSBoYXZlIGFuIGB4YCBjb29yZGluYXRlLlxuICAgIC8vIFdlaWVyc3RyYXNzL0Vkd2FyZHMgcG9pbnRzIG9uIHRoZSBvdGhlciBoYW5kIGhhdmUgYm90aCBgeGAgYW5kXG4gICAgLy8gYHlgIGNvb3JkaW5hdGVzLlxuICAgIGlmICh0aGlzLmVjLmN1cnZlLnR5cGUgPT09ICdtb250Jykge1xuICAgICAgYXNzZXJ0KGtleS54LCAnTmVlZCB4IGNvb3JkaW5hdGUnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZWMuY3VydmUudHlwZSA9PT0gJ3Nob3J0JyB8fFxuICAgICAgICAgICAgICAgdGhpcy5lYy5jdXJ2ZS50eXBlID09PSAnZWR3YXJkcycpIHtcbiAgICAgIGFzc2VydChrZXkueCAmJiBrZXkueSwgJ05lZWQgYm90aCB4IGFuZCB5IGNvb3JkaW5hdGUnKTtcbiAgICB9XG4gICAgdGhpcy5wdWIgPSB0aGlzLmVjLmN1cnZlLnBvaW50KGtleS54LCBrZXkueSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRoaXMucHViID0gdGhpcy5lYy5jdXJ2ZS5kZWNvZGVQb2ludChrZXksIGVuYyk7XG59O1xuXG4vLyBFQ0RIXG5LZXlQYWlyLnByb3RvdHlwZS5kZXJpdmUgPSBmdW5jdGlvbiBkZXJpdmUocHViKSB7XG4gIGlmKCFwdWIudmFsaWRhdGUoKSkge1xuICAgIGFzc2VydChwdWIudmFsaWRhdGUoKSwgJ3B1YmxpYyBwb2ludCBub3QgdmFsaWRhdGVkJyk7XG4gIH1cbiAgcmV0dXJuIHB1Yi5tdWwodGhpcy5wcml2KS5nZXRYKCk7XG59O1xuXG4vLyBFQ0RTQVxuS2V5UGFpci5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obXNnLCBlbmMsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHRoaXMuZWMuc2lnbihtc2csIHRoaXMsIGVuYywgb3B0aW9ucyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkobXNnLCBzaWduYXR1cmUpIHtcbiAgcmV0dXJuIHRoaXMuZWMudmVyaWZ5KG1zZywgc2lnbmF0dXJlLCB0aGlzKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICByZXR1cm4gJzxLZXkgcHJpdjogJyArICh0aGlzLnByaXYgJiYgdGhpcy5wcml2LnRvU3RyaW5nKDE2LCAyKSkgK1xuICAgICAgICAgJyBwdWI6ICcgKyAodGhpcy5wdWIgJiYgdGhpcy5wdWIuaW5zcGVjdCgpKSArICcgPic7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gU2lnbmF0dXJlKG9wdGlvbnMsIGVuYykge1xuICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIFNpZ25hdHVyZSlcbiAgICByZXR1cm4gb3B0aW9ucztcblxuICBpZiAodGhpcy5faW1wb3J0REVSKG9wdGlvbnMsIGVuYykpXG4gICAgcmV0dXJuO1xuXG4gIGFzc2VydChvcHRpb25zLnIgJiYgb3B0aW9ucy5zLCAnU2lnbmF0dXJlIHdpdGhvdXQgciBvciBzJyk7XG4gIHRoaXMuciA9IG5ldyBCTihvcHRpb25zLnIsIDE2KTtcbiAgdGhpcy5zID0gbmV3IEJOKG9wdGlvbnMucywgMTYpO1xuICBpZiAob3B0aW9ucy5yZWNvdmVyeVBhcmFtID09PSB1bmRlZmluZWQpXG4gICAgdGhpcy5yZWNvdmVyeVBhcmFtID0gbnVsbDtcbiAgZWxzZVxuICAgIHRoaXMucmVjb3ZlcnlQYXJhbSA9IG9wdGlvbnMucmVjb3ZlcnlQYXJhbTtcbn1cbm1vZHVsZS5leHBvcnRzID0gU2lnbmF0dXJlO1xuXG5mdW5jdGlvbiBQb3NpdGlvbigpIHtcbiAgdGhpcy5wbGFjZSA9IDA7XG59XG5cbmZ1bmN0aW9uIGdldExlbmd0aChidWYsIHApIHtcbiAgdmFyIGluaXRpYWwgPSBidWZbcC5wbGFjZSsrXTtcbiAgaWYgKCEoaW5pdGlhbCAmIDB4ODApKSB7XG4gICAgcmV0dXJuIGluaXRpYWw7XG4gIH1cbiAgdmFyIG9jdGV0TGVuID0gaW5pdGlhbCAmIDB4ZjtcblxuICAvLyBJbmRlZmluaXRlIGxlbmd0aCBvciBvdmVyZmxvd1xuICBpZiAob2N0ZXRMZW4gPT09IDAgfHwgb2N0ZXRMZW4gPiA0KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIHZhbCA9IDA7XG4gIGZvciAodmFyIGkgPSAwLCBvZmYgPSBwLnBsYWNlOyBpIDwgb2N0ZXRMZW47IGkrKywgb2ZmKyspIHtcbiAgICB2YWwgPDw9IDg7XG4gICAgdmFsIHw9IGJ1ZltvZmZdO1xuICAgIHZhbCA+Pj49IDA7XG4gIH1cblxuICAvLyBMZWFkaW5nIHplcm9lc1xuICBpZiAodmFsIDw9IDB4N2YpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwLnBsYWNlID0gb2ZmO1xuICByZXR1cm4gdmFsO1xufVxuXG5mdW5jdGlvbiBybVBhZGRpbmcoYnVmKSB7XG4gIHZhciBpID0gMDtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGggLSAxO1xuICB3aGlsZSAoIWJ1ZltpXSAmJiAhKGJ1ZltpICsgMV0gJiAweDgwKSAmJiBpIDwgbGVuKSB7XG4gICAgaSsrO1xuICB9XG4gIGlmIChpID09PSAwKSB7XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuICByZXR1cm4gYnVmLnNsaWNlKGkpO1xufVxuXG5TaWduYXR1cmUucHJvdG90eXBlLl9pbXBvcnRERVIgPSBmdW5jdGlvbiBfaW1wb3J0REVSKGRhdGEsIGVuYykge1xuICBkYXRhID0gdXRpbHMudG9BcnJheShkYXRhLCBlbmMpO1xuICB2YXIgcCA9IG5ldyBQb3NpdGlvbigpO1xuICBpZiAoZGF0YVtwLnBsYWNlKytdICE9PSAweDMwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsZW4gPSBnZXRMZW5ndGgoZGF0YSwgcCk7XG4gIGlmIChsZW4gPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICgobGVuICsgcC5wbGFjZSkgIT09IGRhdGEubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChkYXRhW3AucGxhY2UrK10gIT09IDB4MDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHJsZW4gPSBnZXRMZW5ndGgoZGF0YSwgcCk7XG4gIGlmIChybGVuID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgciA9IGRhdGEuc2xpY2UocC5wbGFjZSwgcmxlbiArIHAucGxhY2UpO1xuICBwLnBsYWNlICs9IHJsZW47XG4gIGlmIChkYXRhW3AucGxhY2UrK10gIT09IDB4MDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHNsZW4gPSBnZXRMZW5ndGgoZGF0YSwgcCk7XG4gIGlmIChzbGVuID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoZGF0YS5sZW5ndGggIT09IHNsZW4gKyBwLnBsYWNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBzID0gZGF0YS5zbGljZShwLnBsYWNlLCBzbGVuICsgcC5wbGFjZSk7XG4gIGlmIChyWzBdID09PSAwKSB7XG4gICAgaWYgKHJbMV0gJiAweDgwKSB7XG4gICAgICByID0gci5zbGljZSgxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTGVhZGluZyB6ZXJvZXNcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKHNbMF0gPT09IDApIHtcbiAgICBpZiAoc1sxXSAmIDB4ODApIHtcbiAgICAgIHMgPSBzLnNsaWNlKDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBMZWFkaW5nIHplcm9lc1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHRoaXMuciA9IG5ldyBCTihyKTtcbiAgdGhpcy5zID0gbmV3IEJOKHMpO1xuICB0aGlzLnJlY292ZXJ5UGFyYW0gPSBudWxsO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZnVuY3Rpb24gY29uc3RydWN0TGVuZ3RoKGFyciwgbGVuKSB7XG4gIGlmIChsZW4gPCAweDgwKSB7XG4gICAgYXJyLnB1c2gobGVuKTtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG9jdGV0cyA9IDEgKyAoTWF0aC5sb2cobGVuKSAvIE1hdGguTE4yID4+PiAzKTtcbiAgYXJyLnB1c2gob2N0ZXRzIHwgMHg4MCk7XG4gIHdoaWxlICgtLW9jdGV0cykge1xuICAgIGFyci5wdXNoKChsZW4gPj4+IChvY3RldHMgPDwgMykpICYgMHhmZik7XG4gIH1cbiAgYXJyLnB1c2gobGVuKTtcbn1cblxuU2lnbmF0dXJlLnByb3RvdHlwZS50b0RFUiA9IGZ1bmN0aW9uIHRvREVSKGVuYykge1xuICB2YXIgciA9IHRoaXMuci50b0FycmF5KCk7XG4gIHZhciBzID0gdGhpcy5zLnRvQXJyYXkoKTtcblxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChyWzBdICYgMHg4MClcbiAgICByID0gWyAwIF0uY29uY2F0KHIpO1xuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChzWzBdICYgMHg4MClcbiAgICBzID0gWyAwIF0uY29uY2F0KHMpO1xuXG4gIHIgPSBybVBhZGRpbmcocik7XG4gIHMgPSBybVBhZGRpbmcocyk7XG5cbiAgd2hpbGUgKCFzWzBdICYmICEoc1sxXSAmIDB4ODApKSB7XG4gICAgcyA9IHMuc2xpY2UoMSk7XG4gIH1cbiAgdmFyIGFyciA9IFsgMHgwMiBdO1xuICBjb25zdHJ1Y3RMZW5ndGgoYXJyLCByLmxlbmd0aCk7XG4gIGFyciA9IGFyci5jb25jYXQocik7XG4gIGFyci5wdXNoKDB4MDIpO1xuICBjb25zdHJ1Y3RMZW5ndGgoYXJyLCBzLmxlbmd0aCk7XG4gIHZhciBiYWNrSGFsZiA9IGFyci5jb25jYXQocyk7XG4gIHZhciByZXMgPSBbIDB4MzAgXTtcbiAgY29uc3RydWN0TGVuZ3RoKHJlcywgYmFja0hhbGYubGVuZ3RoKTtcbiAgcmVzID0gcmVzLmNvbmNhdChiYWNrSGFsZik7XG4gIHJldHVybiB1dGlscy5lbmNvZGUocmVzLCBlbmMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGhhc2ggPSByZXF1aXJlKCdoYXNoLmpzJyk7XG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi4vY3VydmVzJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcbnZhciBwYXJzZUJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcztcbnZhciBLZXlQYWlyID0gcmVxdWlyZSgnLi9rZXknKTtcbnZhciBTaWduYXR1cmUgPSByZXF1aXJlKCcuL3NpZ25hdHVyZScpO1xuXG5mdW5jdGlvbiBFRERTQShjdXJ2ZSkge1xuICBhc3NlcnQoY3VydmUgPT09ICdlZDI1NTE5JywgJ29ubHkgdGVzdGVkIHdpdGggZWQyNTUxOSBzbyBmYXInKTtcblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRUREU0EpKVxuICAgIHJldHVybiBuZXcgRUREU0EoY3VydmUpO1xuXG4gIGN1cnZlID0gY3VydmVzW2N1cnZlXS5jdXJ2ZTtcbiAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICB0aGlzLmcgPSBjdXJ2ZS5nO1xuICB0aGlzLmcucHJlY29tcHV0ZShjdXJ2ZS5uLmJpdExlbmd0aCgpICsgMSk7XG5cbiAgdGhpcy5wb2ludENsYXNzID0gY3VydmUucG9pbnQoKS5jb25zdHJ1Y3RvcjtcbiAgdGhpcy5lbmNvZGluZ0xlbmd0aCA9IE1hdGguY2VpbChjdXJ2ZS5uLmJpdExlbmd0aCgpIC8gOCk7XG4gIHRoaXMuaGFzaCA9IGhhc2guc2hhNTEyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVERFNBO1xuXG4vKipcbiogQHBhcmFtIHtBcnJheXxTdHJpbmd9IG1lc3NhZ2UgLSBtZXNzYWdlIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfEtleVBhaXJ9IHNlY3JldCAtIHNlY3JldCBieXRlcyBvciBhIGtleXBhaXJcbiogQHJldHVybnMge1NpZ25hdHVyZX0gLSBzaWduYXR1cmVcbiovXG5FRERTQS5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obWVzc2FnZSwgc2VjcmV0KSB7XG4gIG1lc3NhZ2UgPSBwYXJzZUJ5dGVzKG1lc3NhZ2UpO1xuICB2YXIga2V5ID0gdGhpcy5rZXlGcm9tU2VjcmV0KHNlY3JldCk7XG4gIHZhciByID0gdGhpcy5oYXNoSW50KGtleS5tZXNzYWdlUHJlZml4KCksIG1lc3NhZ2UpO1xuICB2YXIgUiA9IHRoaXMuZy5tdWwocik7XG4gIHZhciBSZW5jb2RlZCA9IHRoaXMuZW5jb2RlUG9pbnQoUik7XG4gIHZhciBzXyA9IHRoaXMuaGFzaEludChSZW5jb2RlZCwga2V5LnB1YkJ5dGVzKCksIG1lc3NhZ2UpXG4gICAgLm11bChrZXkucHJpdigpKTtcbiAgdmFyIFMgPSByLmFkZChzXykudW1vZCh0aGlzLmN1cnZlLm4pO1xuICByZXR1cm4gdGhpcy5tYWtlU2lnbmF0dXJlKHsgUjogUiwgUzogUywgUmVuY29kZWQ6IFJlbmNvZGVkIH0pO1xufTtcblxuLyoqXG4qIEBwYXJhbSB7QXJyYXl9IG1lc3NhZ2UgLSBtZXNzYWdlIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfFNpZ25hdHVyZX0gc2lnIC0gc2lnIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfFBvaW50fEtleVBhaXJ9IHB1YiAtIHB1YmxpYyBrZXlcbiogQHJldHVybnMge0Jvb2xlYW59IC0gdHJ1ZSBpZiBwdWJsaWMga2V5IG1hdGNoZXMgc2lnIG9mIG1lc3NhZ2VcbiovXG5FRERTQS5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1lc3NhZ2UsIHNpZywgcHViKSB7XG4gIG1lc3NhZ2UgPSBwYXJzZUJ5dGVzKG1lc3NhZ2UpO1xuICBzaWcgPSB0aGlzLm1ha2VTaWduYXR1cmUoc2lnKTtcbiAgdmFyIGtleSA9IHRoaXMua2V5RnJvbVB1YmxpYyhwdWIpO1xuICB2YXIgaCA9IHRoaXMuaGFzaEludChzaWcuUmVuY29kZWQoKSwga2V5LnB1YkJ5dGVzKCksIG1lc3NhZ2UpO1xuICB2YXIgU0cgPSB0aGlzLmcubXVsKHNpZy5TKCkpO1xuICB2YXIgUnBsdXNBaCA9IHNpZy5SKCkuYWRkKGtleS5wdWIoKS5tdWwoaCkpO1xuICByZXR1cm4gUnBsdXNBaC5lcShTRyk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuaGFzaEludCA9IGZ1bmN0aW9uIGhhc2hJbnQoKSB7XG4gIHZhciBoYXNoID0gdGhpcy5oYXNoKCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxuICAgIGhhc2gudXBkYXRlKGFyZ3VtZW50c1tpXSk7XG4gIHJldHVybiB1dGlscy5pbnRGcm9tTEUoaGFzaC5kaWdlc3QoKSkudW1vZCh0aGlzLmN1cnZlLm4pO1xufTtcblxuRUREU0EucHJvdG90eXBlLmtleUZyb21QdWJsaWMgPSBmdW5jdGlvbiBrZXlGcm9tUHVibGljKHB1Yikge1xuICByZXR1cm4gS2V5UGFpci5mcm9tUHVibGljKHRoaXMsIHB1Yik7XG59O1xuXG5FRERTQS5wcm90b3R5cGUua2V5RnJvbVNlY3JldCA9IGZ1bmN0aW9uIGtleUZyb21TZWNyZXQoc2VjcmV0KSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21TZWNyZXQodGhpcywgc2VjcmV0KTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5tYWtlU2lnbmF0dXJlID0gZnVuY3Rpb24gbWFrZVNpZ25hdHVyZShzaWcpIHtcbiAgaWYgKHNpZyBpbnN0YW5jZW9mIFNpZ25hdHVyZSlcbiAgICByZXR1cm4gc2lnO1xuICByZXR1cm4gbmV3IFNpZ25hdHVyZSh0aGlzLCBzaWcpO1xufTtcblxuLyoqXG4qICogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWpvc2Vmc3Nvbi1lZGRzYS1lZDI1NTE5LTAzI3NlY3Rpb24tNS4yXG4qXG4qIEVERFNBIGRlZmluZXMgbWV0aG9kcyBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHBvaW50cyBhbmQgaW50ZWdlcnMuIFRoZXNlIGFyZVxuKiBoZWxwZXIgY29udmVuaWVuY2UgbWV0aG9kcywgdGhhdCBwYXNzIGFsb25nIHRvIHV0aWxpdHkgZnVuY3Rpb25zIGltcGxpZWRcbiogcGFyYW1ldGVycy5cbipcbiovXG5FRERTQS5wcm90b3R5cGUuZW5jb2RlUG9pbnQgPSBmdW5jdGlvbiBlbmNvZGVQb2ludChwb2ludCkge1xuICB2YXIgZW5jID0gcG9pbnQuZ2V0WSgpLnRvQXJyYXkoJ2xlJywgdGhpcy5lbmNvZGluZ0xlbmd0aCk7XG4gIGVuY1t0aGlzLmVuY29kaW5nTGVuZ3RoIC0gMV0gfD0gcG9pbnQuZ2V0WCgpLmlzT2RkKCkgPyAweDgwIDogMDtcbiAgcmV0dXJuIGVuYztcbn07XG5cbkVERFNBLnByb3RvdHlwZS5kZWNvZGVQb2ludCA9IGZ1bmN0aW9uIGRlY29kZVBvaW50KGJ5dGVzKSB7XG4gIGJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcyhieXRlcyk7XG5cbiAgdmFyIGxhc3RJeCA9IGJ5dGVzLmxlbmd0aCAtIDE7XG4gIHZhciBub3JtZWQgPSBieXRlcy5zbGljZSgwLCBsYXN0SXgpLmNvbmNhdChieXRlc1tsYXN0SXhdICYgfjB4ODApO1xuICB2YXIgeElzT2RkID0gKGJ5dGVzW2xhc3RJeF0gJiAweDgwKSAhPT0gMDtcblxuICB2YXIgeSA9IHV0aWxzLmludEZyb21MRShub3JtZWQpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludEZyb21ZKHksIHhJc09kZCk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuZW5jb2RlSW50ID0gZnVuY3Rpb24gZW5jb2RlSW50KG51bSkge1xuICByZXR1cm4gbnVtLnRvQXJyYXkoJ2xlJywgdGhpcy5lbmNvZGluZ0xlbmd0aCk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuZGVjb2RlSW50ID0gZnVuY3Rpb24gZGVjb2RlSW50KGJ5dGVzKSB7XG4gIHJldHVybiB1dGlscy5pbnRGcm9tTEUoYnl0ZXMpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmlzUG9pbnQgPSBmdW5jdGlvbiBpc1BvaW50KHZhbCkge1xuICByZXR1cm4gdmFsIGluc3RhbmNlb2YgdGhpcy5wb2ludENsYXNzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG52YXIgcGFyc2VCeXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXM7XG52YXIgY2FjaGVkUHJvcGVydHkgPSB1dGlscy5jYWNoZWRQcm9wZXJ0eTtcblxuLyoqXG4qIEBwYXJhbSB7RUREU0F9IGVkZHNhIC0gaW5zdGFuY2VcbiogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyAtIHB1YmxpYy9wcml2YXRlIGtleSBwYXJhbWV0ZXJzXG4qXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZT59IFtwYXJhbXMuc2VjcmV0XSAtIHNlY3JldCBzZWVkIGJ5dGVzXG4qIEBwYXJhbSB7UG9pbnR9IFtwYXJhbXMucHViXSAtIHB1YmxpYyBrZXkgcG9pbnQgKGFrYSBgQWAgaW4gZWRkc2EgdGVybXMpXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZT59IFtwYXJhbXMucHViXSAtIHB1YmxpYyBrZXkgcG9pbnQgZW5jb2RlZCBhcyBieXRlc1xuKlxuKi9cbmZ1bmN0aW9uIEtleVBhaXIoZWRkc2EsIHBhcmFtcykge1xuICB0aGlzLmVkZHNhID0gZWRkc2E7XG4gIHRoaXMuX3NlY3JldCA9IHBhcnNlQnl0ZXMocGFyYW1zLnNlY3JldCk7XG4gIGlmIChlZGRzYS5pc1BvaW50KHBhcmFtcy5wdWIpKVxuICAgIHRoaXMuX3B1YiA9IHBhcmFtcy5wdWI7XG4gIGVsc2VcbiAgICB0aGlzLl9wdWJCeXRlcyA9IHBhcnNlQnl0ZXMocGFyYW1zLnB1Yik7XG59XG5cbktleVBhaXIuZnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGZyb21QdWJsaWMoZWRkc2EsIHB1Yikge1xuICBpZiAocHViIGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gcHViO1xuICByZXR1cm4gbmV3IEtleVBhaXIoZWRkc2EsIHsgcHViOiBwdWIgfSk7XG59O1xuXG5LZXlQYWlyLmZyb21TZWNyZXQgPSBmdW5jdGlvbiBmcm9tU2VjcmV0KGVkZHNhLCBzZWNyZXQpIHtcbiAgaWYgKHNlY3JldCBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHNlY3JldDtcbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVkZHNhLCB7IHNlY3JldDogc2VjcmV0IH0pO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuc2VjcmV0ID0gZnVuY3Rpb24gc2VjcmV0KCkge1xuICByZXR1cm4gdGhpcy5fc2VjcmV0O1xufTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3B1YkJ5dGVzJywgZnVuY3Rpb24gcHViQnl0ZXMoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMucHViKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdwdWInLCBmdW5jdGlvbiBwdWIoKSB7XG4gIGlmICh0aGlzLl9wdWJCeXRlcylcbiAgICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVQb2ludCh0aGlzLl9wdWJCeXRlcyk7XG4gIHJldHVybiB0aGlzLmVkZHNhLmcubXVsKHRoaXMucHJpdigpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAncHJpdkJ5dGVzJywgZnVuY3Rpb24gcHJpdkJ5dGVzKCkge1xuICB2YXIgZWRkc2EgPSB0aGlzLmVkZHNhO1xuICB2YXIgaGFzaCA9IHRoaXMuaGFzaCgpO1xuICB2YXIgbGFzdEl4ID0gZWRkc2EuZW5jb2RpbmdMZW5ndGggLSAxO1xuXG4gIHZhciBhID0gaGFzaC5zbGljZSgwLCBlZGRzYS5lbmNvZGluZ0xlbmd0aCk7XG4gIGFbMF0gJj0gMjQ4O1xuICBhW2xhc3RJeF0gJj0gMTI3O1xuICBhW2xhc3RJeF0gfD0gNjQ7XG5cbiAgcmV0dXJuIGE7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3ByaXYnLCBmdW5jdGlvbiBwcml2KCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5wcml2Qnl0ZXMoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ2hhc2gnLCBmdW5jdGlvbiBoYXNoKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5oYXNoKCkudXBkYXRlKHRoaXMuc2VjcmV0KCkpLmRpZ2VzdCgpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdtZXNzYWdlUHJlZml4JywgZnVuY3Rpb24gbWVzc2FnZVByZWZpeCgpIHtcbiAgcmV0dXJuIHRoaXMuaGFzaCgpLnNsaWNlKHRoaXMuZWRkc2EuZW5jb2RpbmdMZW5ndGgpO1xufSk7XG5cbktleVBhaXIucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1lc3NhZ2UpIHtcbiAgYXNzZXJ0KHRoaXMuX3NlY3JldCwgJ0tleVBhaXIgY2FuIG9ubHkgdmVyaWZ5Jyk7XG4gIHJldHVybiB0aGlzLmVkZHNhLnNpZ24obWVzc2FnZSwgdGhpcyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkobWVzc2FnZSwgc2lnKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLnZlcmlmeShtZXNzYWdlLCBzaWcsIHRoaXMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuZ2V0U2VjcmV0ID0gZnVuY3Rpb24gZ2V0U2VjcmV0KGVuYykge1xuICBhc3NlcnQodGhpcy5fc2VjcmV0LCAnS2V5UGFpciBpcyBwdWJsaWMgb25seScpO1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHRoaXMuc2VjcmV0KCksIGVuYyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5nZXRQdWJsaWMgPSBmdW5jdGlvbiBnZXRQdWJsaWMoZW5jKSB7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy5wdWJCeXRlcygpLCBlbmMpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBLZXlQYWlyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG52YXIgY2FjaGVkUHJvcGVydHkgPSB1dGlscy5jYWNoZWRQcm9wZXJ0eTtcbnZhciBwYXJzZUJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcztcblxuLyoqXG4qIEBwYXJhbSB7RUREU0F9IGVkZHNhIC0gZWRkc2EgaW5zdGFuY2VcbiogQHBhcmFtIHtBcnJheTxCeXRlcz58T2JqZWN0fSBzaWcgLVxuKiBAcGFyYW0ge0FycmF5PEJ5dGVzPnxQb2ludH0gW3NpZy5SXSAtIFIgcG9pbnQgYXMgUG9pbnQgb3IgYnl0ZXNcbiogQHBhcmFtIHtBcnJheTxCeXRlcz58Ym59IFtzaWcuU10gLSBTIHNjYWxhciBhcyBibiBvciBieXRlc1xuKiBAcGFyYW0ge0FycmF5PEJ5dGVzPn0gW3NpZy5SZW5jb2RlZF0gLSBSIHBvaW50IGVuY29kZWRcbiogQHBhcmFtIHtBcnJheTxCeXRlcz59IFtzaWcuU2VuY29kZWRdIC0gUyBzY2FsYXIgZW5jb2RlZFxuKi9cbmZ1bmN0aW9uIFNpZ25hdHVyZShlZGRzYSwgc2lnKSB7XG4gIHRoaXMuZWRkc2EgPSBlZGRzYTtcblxuICBpZiAodHlwZW9mIHNpZyAhPT0gJ29iamVjdCcpXG4gICAgc2lnID0gcGFyc2VCeXRlcyhzaWcpO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHNpZykpIHtcbiAgICBzaWcgPSB7XG4gICAgICBSOiBzaWcuc2xpY2UoMCwgZWRkc2EuZW5jb2RpbmdMZW5ndGgpLFxuICAgICAgUzogc2lnLnNsaWNlKGVkZHNhLmVuY29kaW5nTGVuZ3RoKSxcbiAgICB9O1xuICB9XG5cbiAgYXNzZXJ0KHNpZy5SICYmIHNpZy5TLCAnU2lnbmF0dXJlIHdpdGhvdXQgUiBvciBTJyk7XG5cbiAgaWYgKGVkZHNhLmlzUG9pbnQoc2lnLlIpKVxuICAgIHRoaXMuX1IgPSBzaWcuUjtcbiAgaWYgKHNpZy5TIGluc3RhbmNlb2YgQk4pXG4gICAgdGhpcy5fUyA9IHNpZy5TO1xuXG4gIHRoaXMuX1JlbmNvZGVkID0gQXJyYXkuaXNBcnJheShzaWcuUikgPyBzaWcuUiA6IHNpZy5SZW5jb2RlZDtcbiAgdGhpcy5fU2VuY29kZWQgPSBBcnJheS5pc0FycmF5KHNpZy5TKSA/IHNpZy5TIDogc2lnLlNlbmNvZGVkO1xufVxuXG5jYWNoZWRQcm9wZXJ0eShTaWduYXR1cmUsICdTJywgZnVuY3Rpb24gUygpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMuU2VuY29kZWQoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUicsIGZ1bmN0aW9uIFIoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuUmVuY29kZWQoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUmVuY29kZWQnLCBmdW5jdGlvbiBSZW5jb2RlZCgpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5SKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KFNpZ25hdHVyZSwgJ1NlbmNvZGVkJywgZnVuY3Rpb24gU2VuY29kZWQoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmVuY29kZUludCh0aGlzLlMoKSk7XG59KTtcblxuU2lnbmF0dXJlLnByb3RvdHlwZS50b0J5dGVzID0gZnVuY3Rpb24gdG9CeXRlcygpIHtcbiAgcmV0dXJuIHRoaXMuUmVuY29kZWQoKS5jb25jYXQodGhpcy5TZW5jb2RlZCgpKTtcbn07XG5cblNpZ25hdHVyZS5wcm90b3R5cGUudG9IZXggPSBmdW5jdGlvbiB0b0hleCgpIHtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLnRvQnl0ZXMoKSwgJ2hleCcpLnRvVXBwZXJDYXNlKCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNpZ25hdHVyZTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBkb3VibGVzOiB7XG4gICAgc3RlcDogNCxcbiAgICBwb2ludHM6IFtcbiAgICAgIFtcbiAgICAgICAgJ2U2MGZjZTkzYjU5ZTllYzUzMDExYWFiYzIxYzIzZTk3YjJhMzEzNjliODdhNWFlOWM0NGVlODllMmE2ZGVjMGEnLFxuICAgICAgICAnZjdlMzUwNzM5OWU1OTU5MjlkYjk5ZjM0ZjU3OTM3MTAxMjk2ODkxZTQ0ZDIzZjBiZTFmMzJjY2U2OTYxNjgyMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODI4MjI2MzIxMmM2MDlkOWVhMmE2ZTNlMTcyZGUyMzhkOGMzOWNhYmQ1YWMxY2ExMDY0NmUyM2ZkNWY1MTUwOCcsXG4gICAgICAgICcxMWY4YTgwOTg1NTdkZmU0NWU4MjU2ZTgzMGI2MGFjZTYyZDYxM2FjMmY3YjE3YmVkMzFiNmVhZmY2ZTI2Y2FmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNzVlMTU5ZjcyOGI4NjVhNzJmOTljYzZjNmZjODQ2ZGUwYjkzODMzZmQyMjIyZWQ3M2ZjZTViNTUxZTViNzM5JyxcbiAgICAgICAgJ2QzNTA2ZTBkOWUzYzc5ZWJhNGVmOTdhNTFmZjcxZjVlYWNiNTk1NWFkZDI0MzQ1YzZlZmE2ZmZlZTlmZWQ2OTUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM2M2Q5MGQ0NDdiMDBjOWM5OWNlYWMwNWI2MjYyZWUwNTM0NDFjN2U1NTU1MmZmZTUyNmJhZDhmODNmZjQ2NDAnLFxuICAgICAgICAnNGUyNzNhZGZjNzMyMjIxOTUzYjQ0NTM5N2YzMzYzMTQ1YjlhODkwMDgxOTllY2I2MjAwM2M3ZjNiZWU5ZGU5JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4YjRiNWYxNjVkZjNjMmJlOGM2MjQ0YjViNzQ1NjM4ODQzZTRhNzgxYTE1YmNkMWI2OWY3OWE1NWRmZmRmODBjJyxcbiAgICAgICAgJzRhYWQwYTZmNjhkMzA4YjRiM2ZiZDc4MTNhYjBkYTA0ZjllMzM2NTQ2MTYyZWU1NmIzZWZmMGM2NWZkNGZkMzYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzcyM2NiYWE2ZTVkYjk5NmQ2YmY3NzFjMDBiZDU0OGM3YjcwMGRiZmZhNmMwZTc3YmNiNjExNTkyNTIzMmZjZGEnLFxuICAgICAgICAnOTZlODY3YjU1OTVjYzQ5OGE5MjExMzc0ODg4MjRkNmUyNjYwYTA2NTM3Nzk0OTQ4MDFkYzA2OWQ5ZWIzOWY1ZicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWViZmE0ZDQ5M2JlYmY5OGJhNWZlZWM4MTJjMmQzYjUwOTQ3OTYxMjM3YTkxOTgzOWE1MzNlY2EwZTdkZDdmYScsXG4gICAgICAgICc1ZDlhOGNhMzk3MGVmMGYyNjllZTdlZGFmMTc4MDg5ZDlhZTRjZGMzYTcxMWY3MTJkZGZkNGZkYWUxZGU4OTk5JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxMDBmNDRkYTY5NmU3MTY3Mjc5MWQwYTA5YjdiZGU0NTlmMTIxNWEyOWIzYzAzYmZlZmQ3ODM1YjM5YTQ4ZGIwJyxcbiAgICAgICAgJ2NkZDllMTMxOTJhMDBiNzcyZWM4ZjMzMDBjMDkwNjY2YjdmZjRhMThmZjUxOTVhYzBmYmQ1Y2Q2MmJjNjVhMDknLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UxMDMxYmUyNjJjN2VkMWIxZGM5MjI3YTRhMDRjMDE3YTc3ZjhkNDQ2NGYzYjM4NTJjOGFjZGU2ZTUzNGZkMmQnLFxuICAgICAgICAnOWQ3MDYxOTI4OTQwNDA1ZTZiYjZhNDE3NjU5NzUzNWFmMjkyZGQ0MTllMWNlZDc5YTQ0ZjE4ZjI5NDU2YTAwZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmVlYTZjYWU0NmQ1NWI1MzBhYzI4MzlmMTQzYmQ3ZWM1Y2Y4YjI2NmE0MWQ2YWY1MmQ1ZTY4OGQ5MDk0Njk2ZCcsXG4gICAgICAgICdlNTdjNmI2Yzk3ZGNlMWJhYjA2ZTRlMTJiZjNlY2Q1Yzk4MWM4OTU3Y2M0MTQ0MmQzMTU1ZGViZjE4MDkwMDg4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkYTY3YTkxZDkxMDQ5Y2RjYjM2N2JlNGJlNmZmY2EzY2ZlZWQ2NTdkODA4NTgzZGUzM2ZhOTc4YmMxZWM2Y2IxJyxcbiAgICAgICAgJzliYWNhYTM1NDgxNjQyYmM0MWY0NjNmN2VjOTc4MGU1ZGVjN2FkYzUwOGY3NDBhMTdlOWVhOGUyN2E2OGJlMWQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzUzOTA0ZmFhMGIzMzRjZGRhNmUwMDA5MzVlZjIyMTUxZWMwOGQwZjdiYjExMDY5ZjU3NTQ1Y2NjMWEzN2I3YzAnLFxuICAgICAgICAnNWJjMDg3ZDBiYzgwMTA2ZDg4YzllY2NhYzIwZDNjMWMxMzk5OTk4MWUxNDQzNDY5OWRjYjA5NmIwMjI3NzFjOCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGU3YmNkMGJkMzU5ODNhNzcxOWNjYTc3NjRjYTkwNjc3OWI1M2EwNDNhOWI4YmNhZWZmOTU5ZjQzYWQ4NjA0NycsXG4gICAgICAgICcxMGI3NzcwYjJhM2RhNGIzOTQwMzEwNDIwY2E5NTE0NTc5ZTg4ZTJlNDdmZDY4YjNlYTEwMDQ3ZTg0NjAzNzJhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczODVlZWQzNGMxY2RmZjIxZTZkMDgxODY4OWI4MWJkZTcxYTdmNGYxODM5N2U2NjkwYTg0MWUxNTk5YzQzODYyJyxcbiAgICAgICAgJzI4M2JlYmMzZThlYTIzZjU2NzAxZGUxOWU5ZWJmNDU3NmIzMDRlZWMyMDg2ZGM4Y2MwNDU4ZmU1NTQyZTU0NTMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzZmOWQ5YjgwM2VjZjE5MTYzN2M3M2E0NDEzZGZhMTgwZmRkZjg0YTU5NDdmYmM5YzYwNmVkODZjM2ZhYzNhNycsXG4gICAgICAgICc3YzgwYzY4ZTYwMzA1OWJhNjliOGUyYTMwZTQ1YzRkNDdlYTRkZDJmNWMyODEwMDJkODY4OTA2MDNhODQyMTYwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMzIyZDQwMTI0M2M0ZTI1ODJhMjE0N2MxMDRkNmVjYmY3NzRkMTYzZGIwZjVlNTMxM2I3ZTBlNzQyZDBlNmJkJyxcbiAgICAgICAgJzU2ZTcwNzk3ZTk2NjRlZjViZmIwMTliYzRkZGFmOWI3MjgwNWY2M2VhMjg3M2FmNjI0ZjNhMmU5NmMyOGIyYTAnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg1NjcyYzdkMmRlMGI3ZGEyYmQxNzcwZDg5NjY1ODY4NzQxYjNmOWFmNzY0MzM5NzcyMWQ3NGQyODEzNGFiODMnLFxuICAgICAgICAnN2M0ODFiOWI1YjQzYjJlYjYzNzQwNDliZmE2MmMyZTVlNzdmMTdmY2M1Mjk4ZjQ0YzhlMzA5NGY3OTAzMTNhNicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTQ4YmY4MDliMTk4OGE0NmIwNmM5ZjE5MTk0MTNiMTBmOTIyNmM2MGY2Njg4MzJmZmQ5NTlhZjYwYzgyYTBhJyxcbiAgICAgICAgJzUzYTU2Mjg1NmRjYjY2NDZkYzZiNzRjNWQxYzM0MThjNmQ0ZGZmMDhjOTdjZDJiZWQ0Y2I3Zjg4ZDhjOGU1ODknLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzYyNjBjZTdmNDYxODAxYzM0ZjA2N2NlMGYwMjg3M2E4ZjFiMGU0NGRmYzY5NzUyYWNjZWNkODE5ZjM4ZmQ4ZTgnLFxuICAgICAgICAnYmMyZGE4MmI2ZmE1YjU3MWE3ZjA5MDQ5Nzc2YTFlZjdlY2QyOTIyMzgwNTFjMTk4YzFhODRlOTViMmI0YWUxNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTUwMzdkZTBhZmMxZDhkNDNkODM0ODQxNGJiZjQxMDMwNDNlYzhmNTc1YmZkYzQzMjk1M2NjOGQyMDM3ZmEyZCcsXG4gICAgICAgICc0NTcxNTM0YmFhOTRkM2I1ZjlmOThkMDlmYjk5MGJkZGJkNWY1YjAzZWM0ODFmMTBlMGU1ZGM4NDFkNzU1YmRhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlMDYzNzJiMGY0YTIwN2FkZjVlYTkwNWU4ZjE3NzFiNGU3ZThkYmQxYzZhNmM1YjcyNTg2NmEwYWU0ZmNlNzI1JyxcbiAgICAgICAgJzdhOTA4OTc0YmNlMThjZmUxMmEyN2JiMmFkNWE0ODhjZDc0ODRhNzc4NzEwNDg3MGIyNzAzNGY5NGVlZTMxZGQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzIxM2M3YTcxNWNkNWQ0NTM1OGQwYmJmOWRjMGNlMDIyMDRiMTBiZGRlMmEzZjU4NTQwYWQ2OTA4ZDA1NTk3NTQnLFxuICAgICAgICAnNGI2ZGFkMGI1YWU0NjI1MDcwMTNhZDA2MjQ1YmExOTBiYjQ4NTBmNWYzNmE3ZWVkZGZmMmMyNzUzNGI0NThmMicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGU3YzI3MmE3YWY0YjM0ZThkYmI5MzUyYTU0MTlhODdlMjgzOGM3MGFkYzYyY2RkZjBjYzNhM2IwOGZiZDUzYycsXG4gICAgICAgICcxNzc0OWM3NjZjOWQwYjE4ZTE2ZmQwOWY2ZGVmNjgxYjUzMGI5NjE0YmZmN2RkMzNlMGIzOTQxODE3ZGNhYWU2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmZWE3NGUzZGJlNzc4YjFiMTBmMjM4YWQ2MTY4NmFhNWM3NmUzZGIyYmU0MzA1NzYzMjQyN2UyODQwZmIyN2I2JyxcbiAgICAgICAgJzZlMDU2OGRiOWIwYjEzMjk3Y2Y2NzRkZWNjYjZhZjkzMTI2YjU5NmI5NzNmN2I3NzcwMWQzZGI3ZjIzY2I5NmYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc2ZTY0MTEzZjY3N2NmMGUxMGEyNTcwZDU5OTk2OGQzMTU0NGUxNzliNzYwNDMyOTUyYzAyYTQ0MTdiZGRlMzknLFxuICAgICAgICAnYzkwZGRmOGRlZTRlOTVjZjU3NzA2NmQ3MDY4MWYwZDM1ZTJhMzNkMmI1NmQyMDMyYjRiMTc1MmQxOTAxYWMwMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzczOGM1NmIwM2IyYWJlMWU4MjgxYmFhNzQzZjhmOWE4ZjdjYzY0M2RmMjZjYmVlM2FiMTUwMjQyYmNiYjg5MScsXG4gICAgICAgICc4OTNmYjU3ODk1MWFkMjUzN2Y3MThmMmVhY2JmYmJiYjgyMzE0ZWVmNzg4MGNmZTkxN2U3MzVkOTY5OWE4NGMzJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkODk1NjI2NTQ4YjY1YjgxZTI2NGM3NjM3Yzk3Mjg3N2QxZDcyZTVmM2E5MjUwMTQzNzJlOWY2NTg4ZjZjMTRiJyxcbiAgICAgICAgJ2ZlYmZhYTM4ZjJiYzdlYWU3MjhlYzYwODE4YzM0MGViMDM0MjhkNjMyYmIwNjdlMTc5MzYzZWQ3NWQ3ZDk5MWYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2I4ZGE5NDAzMmE5NTc1MThlYjBmNjQzMzU3MWU4NzYxY2VmZmM3MzY5M2U4NGVkZDQ5MTUwYTU2NGY2NzZlMDMnLFxuICAgICAgICAnMjgwNGRmYTQ0ODA1YTFlNGQ3Yzk5Y2M5NzYyODA4YjA5MmNjNTg0ZDk1ZmYzYjUxMTQ4OGU0ZTc0ZWZkZjZlNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTgwZmVhMTQ0NDFmYjMzYTdkOGFkYWI5NDc1ZDdmYWIyMDE5ZWZmYjUxNTZhNzkyZjFhMTE3NzhlM2MwZGY1ZCcsXG4gICAgICAgICdlZWQxZGU3ZjYzOGUwMDc3MWU4OTc2OGNhM2NhOTQ0NzJkMTU1ZTgwYWYzMjJlYTlmY2I0MjkxYjZhYzllYzc4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhMzAxNjk3YmRmY2Q3MDQzMTNiYTQ4ZTUxZDU2NzU0M2YyYTE4MjAzMWVmZDY5MTVkZGMwN2JiY2M0ZTE2MDcwJyxcbiAgICAgICAgJzczNzBmOTFjZmI2N2U0ZjUwODE4MDlmYTI1ZDQwZjliMTczNWRiZjdjMGExMWExMzBjMGQxYTA0MWUxNzdlYTEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzkwYWQ4NWIzODlkNmI5MzY0NjNmOWQwNTEyNjc4ZGUyMDhjYzMzMGIxMTMwN2ZmZmFiN2FjNjNlM2ZiMDRlZDQnLFxuICAgICAgICAnZTUwN2EzNjIwYTM4MjYxYWZmZGNiZDk0MjcyMjJiODM5YWVmYWJlMTU4Mjg5NGQ5OTFkNGQ0OGNiNmVmMTUwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZjY4YjlkMmY2M2I1ZjMzOTIzOWMxYWQ5ODFmMTYyZWU4OGM1Njc4NzIzZWEzMzUxYjdiNDQ0YzllYzRjMGRhJyxcbiAgICAgICAgJzY2MmE5ZjJkYmEwNjM5ODZkZTFkOTBjMmI2YmUyMTVkYmJlYTJjZmU5NTUxMGJmZGYyM2NiZjc5NTAxZmZmODInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U0ZjNmYjAxNzZhZjg1ZDY1ZmY5OWZmOTE5OGMzNjA5MWY0OGU4NjUwMzY4MWUzZTY2ODZmZDUwNTMyMzFlMTEnLFxuICAgICAgICAnMWU2MzYzM2FkMGVmNGYxYzE2NjFhNmQwZWEwMmI3Mjg2Y2M3ZTc0ZWM5NTFkMWM5ODIyYzM4NTc2ZmViNzNiYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGMwMGZhOWIxOGViZjMzMWViOTYxNTM3YTQ1YTQyNjZjNzAzNGYyZjBkNGUxZDA3MTZmYjZlYWUyMGVhZTI5ZScsXG4gICAgICAgICdlZmE0NzI2N2ZlYTUyMWExYTlkYzM0M2EzNzM2Yzk3NGMyZmFkYWZhODFlMzZjNTRlN2QyYTRjNjY3MDI0MTRiJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlN2EyNmNlNjlkZDQ4MjlmM2UxMGNlYzBhOWU5OGVkMzE0M2QwODRmMzA4YjkyYzA5OTdmZGRmYzYwY2IzZTQxJyxcbiAgICAgICAgJzJhNzU4ZTMwMGZhNzk4NGI0NzFiMDA2YTFhYWZiYjE4ZDBhNmIyYzA0MjBlODNlMjBlOGE5NDIxY2YyY2ZkNTEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2I2NDU5ZTBlZTM2NjJlYzhkMjM1NDBjMjIzYmNiZGM1NzFjYmNiOTY3ZDc5NDI0ZjNjZjI5ZWIzZGU2YjgwZWYnLFxuICAgICAgICAnNjdjODc2ZDA2ZjNlMDZkZTFkYWRmMTZlNTY2MWRiM2M0YjNhZTZkNDhlMzViMmZmMzBiZjBiNjFhNzFiYTQ1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNjhhODBjODI4MGJiODQwNzkzMjM0YWExMThmMDYyMzFkNmYxZmM2N2U3M2M1YTVkZWRhMGY1YjQ5Njk0M2U4JyxcbiAgICAgICAgJ2RiOGJhOWZmZjRiNTg2ZDAwYzRiMWY5MTc3YjBlMjhiNWIwZTdiOGY3ODQ1Mjk1YTI5NGM4NDI2NmIxMzMxMjAnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyNGFlZDdkZjY1YzgwNDI1MmRjMDI3MDkwN2EzMGIwOTYxMmFlYjk3MzQ0OWNlYTQwOTU5ODBmYzI4ZDNkNWQnLFxuICAgICAgICAnNjQ4YTM2NTc3NGI2MWYyZmYxMzBjMGMzNWFlYzFmNGYxOTIxM2IwYzdlMzMyODQzOTY3MjI0YWY5NmFiN2M4NCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGRmOWMxNDkxOWNkZTYxZjZkNTFkZmRiZTVmZWU1ZGNlZWM0MTQzYmE4ZDFjYTg4OGU4YmQzNzNmZDA1NGM5NicsXG4gICAgICAgICczNWVjNTEwOTJkODcyODA1MDk3NGMyM2ExZDg1ZDRiNWQ1MDZjZGMyODg0OTAxOTJlYmFjMDZjYWQxMGQ1ZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOWMzOTE5YTg0YTQ3NDg3MGZhZWQ4YTljMWNjNjYwMjE1MjM0ODkwNTRkN2YwMzA4Y2JmYzk5YzhhYzFmOThjZCcsXG4gICAgICAgICdkZGI4NGYwZjRhNGRkZDU3NTg0ZjA0NGJmMjYwZTY0MTkwNTMyNmY3NmM2NGM4ZTZiZTdlNWUwM2Q0ZmM1OTlkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MDU3MTcwYjFkZDEyZmRmOGRlMDVmMjgxZDhlMDZiYjkxZTE0OTNhOGI5MWQ0Y2M1YTIxMzgyMTIwYTk1OWU1JyxcbiAgICAgICAgJzlhMWFmMGIyNmE2YTQ4MDdhZGQ5YTJkYWY3MWRmMjYyNDY1MTUyYmMzZWUyNGM2NWU4OTliZTkzMjM4NWEyYTgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E1NzZkZjhlMjNhMDg0MTE0MjE0MzlhNDUxOGRhMzE4ODBjZWYwZmJhN2Q0ZGYxMmIxYTY5NzNlZWNiOTQyNjYnLFxuICAgICAgICAnNDBhNmJmMjBlNzY2NDBiMmM5MmI5N2FmZTU4Y2Q4MmM0MzJlMTBhN2Y1MTRkOWYzZWU4YmUxMWFlMWIyOGVjOCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzc3OGE3OGMyOGRlYzNlMzBhMDVmZTk2MjlkZThjMzhiYjMwZDFmNWNmOWEzYTIwOGY3NjM4ODliZTU4YWQ3MScsXG4gICAgICAgICczNDYyNmQ5YWI1YTViMjJmZjcwOThlMTJmMmZmNTgwMDg3YjM4NDExZmYyNGFjNTYzYjUxM2ZjMWZkOWY0M2FjJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5Mjg5NTVlZTYzN2E4NDQ2MzcyOWZkMzBlN2FmZDJlZDVmOTYyNzRlNWFkN2U1Y2IwOWVkYTljMDZkOTAzYWMnLFxuICAgICAgICAnYzI1NjIxMDAzZDNmNDJhODI3Yjc4YTEzMDkzYTk1ZWVhYzNkMjZlZmE4YThkODNmYzUxODBlOTM1YmNkMDkxZicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODVkMGZlZjNlYzZkYjEwOTM5OTA2NGYzYTBlM2IyODU1NjQ1YjRhOTA3YWQzNTQ1MjdhYWU3NTE2M2Q4Mjc1MScsXG4gICAgICAgICcxZjAzNjQ4NDEzYTM4YzBiZTI5ZDQ5NmU1ODJjZjU2NjNlODc1MWU5Njg3NzMzMTU4MmMyMzdhMjRlYjFmOTYyJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmZjJiMGRjZTk3ZWVjZTk3YzFjOWI2MDQxNzk4Yjg1ZGZkZmI2ZDg4ODJkYTIwMzA4ZjU0MDQ4MjQ1MjYwODdlJyxcbiAgICAgICAgJzQ5M2QxM2ZlZjUyNGJhMTg4YWY0YzRkYzU0ZDA3OTM2YzdiN2VkNmZiOTBlMmNlYjJjOTUxZTAxZjBjMjk5MDcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgyN2ZiYmU0YjFlODgwZWE5ZWQyYjJlNjMwMWIyMTJiNTdmMWVlMTQ4Y2Q2ZGQyODc4MGU1ZTJjZjg1NmUyNDEnLFxuICAgICAgICAnYzYwZjljOTIzYzcyN2IwYjcxYmVmMmM2N2QxZDEyNjg3ZmY3YTYzMTg2OTAzMTY2ZDYwNWI2OGJhZWMyOTNlYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWFhNjQ5ZjIxZjUxYmRiYWU3YmU0YWUzNGNlNmU1MjE3YTU4ZmRjZTdmNDdmOWFhN2YzYjU4ZmEyMTIwZTJiMycsXG4gICAgICAgICdiZTMyNzllZDViYmJiMDNhYzY5YTgwZjg5ODc5YWE1YTAxYTZiOTY1ZjEzZjdlNTlkNDdhNTMwNWJhNWFkOTNkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNGE0MmQ0M2M1Y2YxNjlkOTM5MWRmNmRlY2Y0MmVlNTQxYjZkOGYwYzlhMTM3NDAxZTIzNjMyZGRhMzRkMjRmJyxcbiAgICAgICAgJzRkOWY5MmU3MTZkMWM3MzUyNmZjOTljY2ZiOGFkMzRjZTg4NmVlZGZhOGQ4ZTRmMTNhN2Y3MTMxZGViYTk0MTQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzFlYzgwZmVmMzYwY2JkZDk1NDE2MGZhZGFiMzUyYjZiOTJiNTM1NzZhODhmZWE0OTQ3MTczYjlkNDMwMGJmMTknLFxuICAgICAgICAnYWVlZmU5Mzc1NmI1MzQwZDJmM2E0OTU4YTdhYmJmNWUwMTQ2ZTc3ZjYyOTVhMDdiNjcxY2RjMWNjMTA3Y2VmZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTQ2YTc3OGMwNDY3MGMyZjkxYjAwYWY0NjgwZGZhOGJjZTM0OTA3MTdkNThiYTg4OWRkYjU5MjgzNjY2NDJiZScsXG4gICAgICAgICdiMzE4ZTBlYzMzNTQwMjhhZGQ2Njk4MjdmOWQ0YjI4NzBhYWE5NzFkMmY3ZTVlZDFkMGIyOTc0ODNkODNlZmQwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmYTUwYzBmNjFkMjJlNWYwN2UzYWNlYmIxYWEwN2IxMjhkMDAxMjIwOWEyOGI5Nzc2ZDc2YTg3OTMxODBlZWY5JyxcbiAgICAgICAgJzZiODRjNjkyMjM5N2ViYTliNzJjZDI4NzIyODFhNjhhNWU2ODMyOTNhNTdhMjEzYjM4Y2Q4ZDdkM2Y0ZjI4MTEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RhMWQ2MWQwY2E3MjFhMTFiMWE1YmY2YjdkODhlODQyMWEyODhhYjVkNWJiYTUyMjBlNTNkMzJiNWYwNjdlYzInLFxuICAgICAgICAnODE1N2Y1NWE3Yzk5MzA2Yzc5YzA3NjYxNjFjOTFlMjk2NmE3Mzg5OWQyNzliNDhhNjU1ZmJhMGYxYWQ4MzZmMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYThlMjgyZmYwYzk3MDY5MDcyMTVmZjk4ZThmZDQxNjYxNTMxMWRlMDQ0NmYxZTA2MmE3M2IwNjEwZDA2NGUxMycsXG4gICAgICAgICc3Zjk3MzU1YjhkYjgxYzA5YWJmYjdmM2M1YjI1MTU4ODhiNjc5YTNlNTBkZDZiZDZjZWY3YzczMTExZjRjYzBjJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNzRhNTNiOWM5YTI4NTg3MmQzOWU1NmU2OTEzY2FiMTVkNTliMWZhNTEyNTA4YzAyMmYzODJkZTgzMTk0OTdjJyxcbiAgICAgICAgJ2NjYzlkYzM3YWJmYzljMTY1N2I0MTU1ZjJjNDdmOWU2NjQ2YjNhMWQ4Y2I5ODU0MzgzZGExM2FjMDc5YWZhNzMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzk1OTM5Njk4MTk0Mzc4NWMzZDNlNTdlZGY1MDE4Y2RiZTAzOWU3MzBlNDkxOGIzZDg4NGZkZmYwOTQ3NWI3YmEnLFxuICAgICAgICAnMmU3ZTU1Mjg4OGMzMzFkZDhiYTAzODZhNGI5Y2Q2ODQ5YzY1M2Y2NGM4NzA5Mzg1ZTliOGFiZjg3NTI0ZjJmZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDJhNjNhNTBhZTQwMWU1NmQ2NDVhMTE1M2IxMDlhOGZjY2EwYTQzZDU2MWZiYTJkYmI1MTM0MGM5ZDgyYjE1MScsXG4gICAgICAgICdlODJkODZmYjY0NDNmY2I3NTY1YWVlNThiMjk0ODIyMGE3MGY3NTBhZjQ4NGNhNTJkNDE0MjE3NGRjZjg5NDA1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2NDU4N2UyMzM1NDcxZWI4OTBlZTc4OTZkN2NmZGM4NjZiYWNiZGJkMzgzOTMxN2IzNDM2ZjliNDU2MTdlMDczJyxcbiAgICAgICAgJ2Q5OWZjZGQ1YmY2OTAyZTJhZTk2ZGQ2NDQ3YzI5OWExODViOTBhMzkxMzNhZWFiMzU4Mjk5ZTVlOWZhZjY1ODknLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg0ODFiZGUwZTRlNGQ4ODViM2E1NDZkM2U1NDlkZTA0MmYwYWE2Y2VhMjUwZTdmZDM1OGQ2Yzg2ZGQ0NWU0NTgnLFxuICAgICAgICAnMzhlZTdiOGNiYTU0MDRkZDg0YTI1YmYzOWNlY2IyY2E5MDBhNzljNDJiMjYyZTU1NmQ2NGIxYjU5Nzc5MDU3ZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTM0NjRhNTdhNzgxMDJhYTYyYjY5NzlhZTgxN2Y0NjM3ZmZjZmVkM2M0YjFjZTMwYmNkNjMwM2Y2Y2FmNjY2YicsXG4gICAgICAgICc2OWJlMTU5MDA0NjE0NTgwZWY3ZTQzMzQ1M2NjYjBjYTQ4ZjMwMGE4MWQwOTQyZTEzZjQ5NWE5MDdmNmVjYzI3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiYzRhOWRmNWI3MTNmZTJlOWFlZjQzMGJjYzFkYzk3YTBjZDljY2VkZTJmMjg1ODhjYWRhM2EwZDJkODNmMzY2JyxcbiAgICAgICAgJ2QzYTgxY2E2ZTc4NWMwNjM4MzkzN2FkZjRiNzk4Y2FhNmU4YTlmYmZhNTQ3YjE2ZDc1OGQ2NjY1ODFmMzNjMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGMyOGE5N2JmODI5OGJjMGQyM2Q4Yzc0OTQ1MmEzMmU2OTRiNjVlMzBhOTQ3MmEzOTU0YWIzMGZlNTMyNGNhYScsXG4gICAgICAgICc0MGEzMDQ2M2EzMzA1MTkzMzc4ZmVkZjMxZjdjYzBlYjdhZTc4NGYwNDUxY2I5NDU5ZTcxZGM3M2NiZWY5NDgyJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZWE5NjY2MTM5NTI3YThjMWRkOTRjZTRmMDcxZmQyM2M4YjM1MGM1YTRiYjMzNzQ4YzRiYTExMWZhY2NhZTAnLFxuICAgICAgICAnNjIwZWZhYmJjOGVlMjc4MmUyNGU3YzBjZmI5NWM1ZDczNWI3ODNiZTljZjBmOGU5NTVhZjM0YTMwZTYyYjk0NScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGQzNjI1ZmFlZjViYTA2MDc0NjY5NzE2YmJkMzc4OGQ4OWJkZGU4MTU5NTk5NjgwOTJmNzZjYzRlYjlhOTc4NycsXG4gICAgICAgICc3YTE4OGZhMzUyMGUzMGQ0NjFkYTI1MDEwNDU3MzFjYTk0MTQ2MTk4Mjg4MzM5NTkzN2Y2OGQwMGM2NDRhNTczJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmNzEwZDc5ZDllYjk2MjI5N2U0ZjYyMzJiNDBlOGY3ZmViMmJjNjM4MTQ2MTRkNjkyYzEyZGU3NTI0MDgyMjFlJyxcbiAgICAgICAgJ2VhOThlNjcyMzJkM2IzMjk1ZDNiNTM1NTMyMTE1Y2NhYzg2MTJjNzIxODUxNjE3NTI2YWU0N2E5Yzc3YmZjODInLFxuICAgICAgXSxcbiAgICBdLFxuICB9LFxuICBuYWY6IHtcbiAgICB3bmQ6IDcsXG4gICAgcG9pbnRzOiBbXG4gICAgICBbXG4gICAgICAgICdmOTMwOGEwMTkyNThjMzEwNDkzNDRmODVmODlkNTIyOWI1MzFjODQ1ODM2Zjk5YjA4NjAxZjExM2JjZTAzNmY5JyxcbiAgICAgICAgJzM4OGY3YjBmNjMyZGU4MTQwZmUzMzdlNjJhMzdmMzU2NjUwMGE5OTkzNGMyMjMxYjZjYjlmZDc1ODRiOGU2NzInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzJmOGJkZTRkMWEwNzIwOTM1NWI0YTcyNTBhNWM1MTI4ZTg4Yjg0YmRkYzYxOWFiN2NiYThkNTY5YjI0MGVmZTQnLFxuICAgICAgICAnZDhhYzIyMjYzNmU1ZTNkNmQ0ZGJhOWRkYTZjOWM0MjZmNzg4MjcxYmFiMGQ2ODQwZGNhODdkM2FhNmFjNjJkNicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNWNiZGYwNjQ2ZTVkYjRlYWEzOThmMzY1ZjJlYTdhMGUzZDQxOWI3ZTAzMzBlMzljZTkyYmRkZWRjYWM0ZjliYycsXG4gICAgICAgICc2YWViY2E0MGJhMjU1OTYwYTMxNzhkNmQ4NjFhNTRkYmE4MTNkMGI4MTNmZGU3YjVhNTA4MjYyODA4NzI2NGRhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhY2Q0ODRlMmYwYzdmNjUzMDlhZDE3OGE5ZjU1OWFiZGUwOTc5Njk3NGM1N2U3MTRjMzVmMTEwZGZjMjdjY2JlJyxcbiAgICAgICAgJ2NjMzM4OTIxYjBhN2Q5ZmQ2NDM4MDk3MTc2M2I2MWU5YWRkODg4YTQzNzVmOGUwZjA1Y2MyNjJhYzY0ZjljMzcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NGFlN2Y4NThhOTQxMWU1ZWY0MjQ2YjcwYzY1YWFjNTY0OTk4MGJlNWMxNzg5MWJiZWMxNzg5NWRhMDA4Y2InLFxuICAgICAgICAnZDk4NGEwMzJlYjZiNWUxOTAyNDNkZDU2ZDdiN2IzNjUzNzJkYjFlMmRmZjlkNmE4MzAxZDc0YzljOTUzYzYxYicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjI4NzczYzJkOTc1Mjg4YmM3ZDFkMjA1YzM3NDg2NTFiMDc1ZmJjNjYxMGU1OGNkZGVlZGRmOGYxOTQwNWFhOCcsXG4gICAgICAgICdhYjA5MDJlOGQ4ODBhODk3NTgyMTJlYjY1Y2RhZjQ3M2ExYTA2ZGE1MjFmYTkxZjI5YjVjYjUyZGIwM2VkODEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q3OTI0ZDRmN2Q0M2VhOTY1YTQ2NWFlMzA5NWZmNDExMzFlNTk0NmYzYzg1Zjc5ZTQ0YWRiY2Y4ZTI3ZTA4MGUnLFxuICAgICAgICAnNTgxZTI4NzJhODZjNzJhNjgzODQyZWMyMjhjYzZkZWZlYTQwYWYyYmQ4OTZkM2E1YzUwNGRjOWZmNmEyNmI1OCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGVmZGVhNGNkYjY3Nzc1MGE0MjBmZWU4MDdlYWNmMjFlYjk4OThhZTc5Yjk3Njg3NjZlNGZhYTA0YTJkNGEzNCcsXG4gICAgICAgICc0MjExYWIwNjk0NjM1MTY4ZTk5N2IwZWFkMmE5M2RhZWNlZDFmNGEwNGE5NWMwZjZjZmIxOTlmNjllNTZlYjc3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyYjRlYTBhNzk3YTQ0M2QyOTNlZjVjZmY0NDRmNDk3OWYwNmFjZmViZDdlODZkMjc3NDc1NjU2MTM4Mzg1YjZjJyxcbiAgICAgICAgJzg1ZTg5YmMwMzc5NDVkOTNiMzQzMDgzYjVhMWM4NjEzMWEwMWY2MGM1MDI2OTc2M2I1NzBjODU0ZTVjMDliN2EnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM1MmJiZjRhNGNkZDEyNTY0ZjkzZmEzMzJjZTMzMzMwMWQ5YWQ0MDI3MWY4MTA3MTgxMzQwYWVmMjViZTU5ZDUnLFxuICAgICAgICAnMzIxZWI0MDc1MzQ4ZjUzNGQ1OWMxODI1OWRkYTNlMWY0YTFiM2IyZTcxYjEwMzljNjdiZDNkOGJjZjgxOTk4YycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMmZhMjEwNGQ2YjM4ZDExYjAyMzAwMTA1NTk4NzkxMjRlNDJhYjhkZmVmZjVmZjI5ZGM5Y2RhZGQ0ZWNhY2MzZicsXG4gICAgICAgICcyZGUxMDY4Mjk1ZGQ4NjViNjQ1NjkzMzViZDVkZDgwMTgxZDcwZWNmYzg4MjY0ODQyM2JhNzZiNTMyYjdkNjcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzkyNDgyNzliMDliNGQ2OGRhYjIxYTliMDY2ZWRkYTgzMjYzYzNkODRlMDk1NzJlMjY5Y2EwY2Q3ZjU0NTM3MTQnLFxuICAgICAgICAnNzMwMTZmN2JmMjM0YWFkZTVkMWFhNzFiZGVhMmIxZmYzZmMwZGUyYTg4NzkxMmZmZTU0YTMyY2U5N2NiMzQwMicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGFlZDRmMmJlM2E4YmYyNzhlNzAxMzJmYjBiZWI3NTIyZjU3MGUxNDRiZjYxNWMwN2U5OTZkNDQzZGVlODcyOScsXG4gICAgICAgICdhNjlkY2U0YTdkNmM5OGU4ZDRhMWFjYTg3ZWY4ZDcwMDNmODNjMjMwZjNhZmE3MjZhYjQwZTUyMjkwYmUxYzU1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNDRkMTJjNzA2NWQ4MTJlOGFjZjI4ZDdjYmIxOWY5MDExZWNkOWU5ZmRmMjgxYjBlNmEzYjVlODdkMjJlN2RiJyxcbiAgICAgICAgJzIxMTlhNDYwY2UzMjZjZGM3NmM0NTkyNmM5ODJmZGFjMGUxMDZlODYxZWRmNjFjNWEwMzkwNjNmMGUwZTY0ODInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzZhMjQ1YmY2ZGM2OTg1MDRjODlhMjBjZmRlZDYwODUzMTUyYjY5NTMzNmMyODA2M2I2MWM2NWNiZDI2OWU2YjQnLFxuICAgICAgICAnZTAyMmNmNDJjMmJkNGE3MDhiM2Y1MTI2ZjE2YTI0YWQ4YjMzYmE0OGQwNDIzYjZlZmQ1ZTYzNDgxMDBkOGE4MicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTY5N2ZmYTZmZDlkZTYyN2MwNzdlM2QyZmU1NDEwODRjZTEzMzAwYjBiZWMxMTQ2Zjk1YWU1N2YwZDBiZDZhNScsXG4gICAgICAgICdiOWMzOThmMTg2ODA2ZjVkMjc1NjE1MDZlNDU1NzQzM2EyY2YxNTAwOWU0OThhZTdhZGVlOWQ2M2QwMWIyMzk2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MDViZGIwMTk5ODE3MThiOTg2ZDBmMDdlODM0Y2IwZDlkZWI4MzYwZmZiN2Y2MWRmOTgyMzQ1ZWYyN2E3NDc5JyxcbiAgICAgICAgJzI5NzJkMmRlNGY4ZDIwNjgxYTc4ZDkzZWM5NmZlMjNjMjZiZmFlODRmYjE0ZGI0M2IwMWUxZTkwNTZiOGM0OScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjJkMTRkYWI0MTUwYmY0OTc0MDJmZGM0NWEyMTVlMTBkY2IwMWMzNTQ5NTliMTBjZmUzMWM3ZTlkODdmZjMzZCcsXG4gICAgICAgICc4MGZjMDZiZDhjYzViMDEwOTgwODhhMTk1MGVlZDBkYjAxYWExMzI5NjdhYjQ3MjIzNWY1NjQyNDgzYjI1ZWFmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4MGM2MGFkMDA0MGYyN2RhZGU1YjRiMDZjNDA4ZTU2YjJjNTBlOWY1NmI5YjhiNDI1ZTU1NWMyZjg2MzA4YjZmJyxcbiAgICAgICAgJzFjMzgzMDNmMWNjNWMzMGYyNmU2NmJhZDdmZTcyZjcwYTY1ZWVkNGNiZTcwMjRlYjFhYTAxZjU2NDMwYmQ1N2EnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzdhOTM3NWFkNjE2N2FkNTRhYTc0YzYzNDhjYzU0ZDM0NGNjNWRjOTQ4N2Q4NDcwNDlkNWVhYmIwZmEwM2M4ZmInLFxuICAgICAgICAnZDBlM2ZhOWVjYTg3MjY5MDk1NTllMGQ3OTI2OTA0NmJkYzU5ZWExMGM3MGNlMmIwMmQ0OTllYzIyNGRjN2Y3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNTI4ZWNkOWI2OTZiNTRjOTA3YTllZDA0NTQ0N2E3OWJiNDA4ZWMzOWI2OGRmNTA0YmI1MWY0NTliYzNmZmM5JyxcbiAgICAgICAgJ2VlY2Y0MTI1MzEzNmU1Zjk5OTY2ZjIxODgxZmQ2NTZlYmM0MzQ1NDA1YzUyMGRiYzA2MzQ2NWI1MjE0MDk5MzMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ5MzcwYTRiNWY0MzQxMmVhMjVmNTE0ZThlY2RhZDA1MjY2MTE1ZTRhN2VjYjEzODcyMzE4MDhmOGI0NTk2MycsXG4gICAgICAgICc3NThmM2Y0MWFmZDZlZDQyOGIzMDgxYjA1MTJmZDYyYTU0YzNmM2FmYmI1YjY3NjRiNjUzMDUyYTEyOTQ5YzlhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3N2YyMzA5MzZlZTg4Y2JiZDczZGY5MzBkNjQ3MDJlZjg4MWQ4MTFlMGUxNDk4ZTJmMWMxM2ViMWZjMzQ1ZDc0JyxcbiAgICAgICAgJzk1OGVmNDJhNzg4NmI2NDAwYTA4MjY2ZTliYTFiMzc4OTZjOTUzMzBkOTcwNzdjYmJlOGViM2M3NjcxYzYwZDYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YyZGFjOTkxY2M0Y2U0YjllYTQ0ODg3ZTVjN2MwYmNlNThjODAwNzRhYjlkNGRiYWViMjg1MzFiNzczOWY1MzAnLFxuICAgICAgICAnZTBkZWRjOWIzYjJmOGRhZDRkYTFmMzJkZWMyNTMxZGY5ZWI1ZmJlYjA1OThlNGZkMWExMTdkYmE3MDNhM2MzNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDYzYjNkOWY2NjI2MjFmYjFiNGJlOGZiYmUyNTIwMTI1YTIxNmNkZmM5ZGFlM2RlYmNiYTQ4NTBjNjkwZDQ1YicsXG4gICAgICAgICc1ZWQ0MzBkNzhjMjk2YzM1NDMxMTQzMDZkZDg2MjJkN2M2MjJlMjdjOTcwYTFkZTMxY2IzNzdiMDFhZjczMDdlJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMTZmODA0MjQ0ZTQ2ZTJhMDkyMzJkNGFmZjNiNTk5NzZiOThmYWMxNDMyOGEyZDFhMzI0OTZiNDk5OThmMjQ3JyxcbiAgICAgICAgJ2NlZGFiZDliODIyMDNmN2UxM2QyMDZmY2RmNGUzM2Q5MmE2YzUzYzI2ZTVjY2UyNmQ2NTc5OTYyYzRlMzFkZjYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2NhZjc1NDI3MmRjODQ1NjNiMDM1MmI3YTE0MzExYWY1NWQyNDUzMTVhY2UyN2M2NTM2OWUxNWY3MTUxZDQxZDEnLFxuICAgICAgICAnY2I0NzQ2NjBlZjM1ZjVmMmE0MWI2NDNmYTVlNDYwNTc1ZjRmYTliNzk2MjIzMmE1YzMyZjkwODMxOGEwNDQ3NicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjYwMGNhNGIyODJjYjk4NmY4NWQwZjE3MDk5NzlkOGI0NGEwOWMwN2NiODZkN2MxMjQ0OTdiYzg2ZjA4MjEyMCcsXG4gICAgICAgICc0MTE5Yjg4NzUzYzE1YmQ2YTY5M2IwM2ZjZGRiYjQ1ZDVhYzZiZTc0YWI1ZjBlZjQ0YjBiZTk0NzVhN2U0YjQwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NjM1Y2E3MmQ3ZTg0MzJjMzM4ZWM1M2NkMTIyMjBiYzAxYzQ4Njg1ZTI0ZjdkYzhjNjAyYTc3NDY5OThlNDM1JyxcbiAgICAgICAgJzkxYjY0OTYwOTQ4OWQ2MTNkMWQ1ZTU5MGY3OGU2ZDc0ZWNmYzA2MWQ1NzA0OGJhZDllNzZmMzAyYzViOWM2MScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzU0ZTMyMzlmMzI1NTcwY2RiYmY0YTg3ZGVlZThhNjZiN2YyYjMzNDc5ZDQ2OGZiYzFhNTA3NDNiZjU2Y2MxOCcsXG4gICAgICAgICc2NzNmYjg2ZTViZGEzMGZiM2NkMGVkMzA0ZWE0OWEwMjNlZTMzZDAxOTdhNjk1ZDBjNWQ5ODA5M2M1MzY2ODMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UzZTZiZDEwNzFhMWU5NmFmZjU3ODU5YzgyZDU3MGYwMzMwODAwNjYxZDFjOTUyZjlmZTI2OTQ2OTFkOWI5ZTgnLFxuICAgICAgICAnNTljOWUwYmJhMzk0ZTc2ZjQwYzBhYTU4Mzc5YTNjYjZhNWEyMjgzOTkzZTkwYzQxNjcwMDJhZjQ5MjBlMzdmNScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTg2YjQ4M2QwNTZhMDMzODI2YWU3M2Q4OGY3MzI5ODVjNGNjYjFmMzJiYTM1ZjRiNGNjNDdmZGNmMDRhYTZlYicsXG4gICAgICAgICczYjk1MmQzMmM2N2NmNzdlMmUxNzQ0NmUyMDQxODBhYjIxZmI4MDkwODk1MTM4YjRhNGE3OTdmODZlODA4ODhiJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZjlkNzBhNmI5ODc2Y2U1NDRjOTg1NjFmNGJlNGY3MjU0NDJlNmQyYjczN2Q5YzkxYTgzMjE3MjRjZTA5NjNmJyxcbiAgICAgICAgJzU1ZWIyZGFmZDg0ZDZjY2Q1Zjg2MmI3ODVkYzM5ZDRhYjE1NzIyMjcyMGVmOWRhMjE3YjhjNDVjZjJiYTI0MTcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzVlZGQ1Y2MyM2M1MWU4N2E0OTdjYTgxNWQ1ZGNlMGY4YWI1MjU1NGY4NDllZDg5OTVkZTY0YzVmMzRjZTcxNDMnLFxuICAgICAgICAnZWZhZTljOGRiYzE0MTMwNjYxZThjZWMwMzBjODlhZDBjMTNjNjZjMGQxN2EyOTA1Y2RjNzA2YWI3Mzk5YTg2OCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjkwNzk4YzJiNjQ3NjgzMGRhMTJmZTAyMjg3ZTllNzc3YWEzZmJhMWMzNTViMTdhNzIyZDM2MmY4NDYxNGZiYScsXG4gICAgICAgICdlMzhkYTc2ZGNkNDQwNjIxOTg4ZDAwYmNmNzlhZjI1ZDViMjljMDk0ZGIyYTIzMTQ2ZDAwM2FmZDQxOTQzZTdhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhZjNjNDIzYTk1ZDlmNWIzMDU0NzU0ZWZhMTUwYWMzOWNkMjk1NTJmZTM2MDI1NzM2MmRmZGVjZWY0MDUzYjQ1JyxcbiAgICAgICAgJ2Y5OGEzZmQ4MzFlYjJiNzQ5YTkzYjBlNmYzNWNmYjQwYzhjZDVhYTY2N2ExNTU4MWJjMmZlZGVkNDk4ZmQ5YzYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc2NmRiYjI0ZDEzNGU3NDVjY2NhYTI4Yzk5YmYyNzQ5MDZiYjY2YjI2ZGNmOThkZjhkMmZlZDUwZDg4NDI0OWEnLFxuICAgICAgICAnNzQ0YjExNTJlYWNiZTVlMzhkY2M4ODc5ODBkYTM4Yjg5NzU4NGE2NWZhMDZjZWRkMmM5MjRmOTdjYmFjNTk5NicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTlkYmY0NmY4Yzk0NzU5YmEyMTI3N2MzMzc4NGY0MTY0NWY3YjQ0ZjZjNTk2YTU4Y2U5MmU2NjYxOTFhYmUzZScsXG4gICAgICAgICdjNTM0YWQ0NDE3NWZiYzMwMGY0ZWE2Y2U2NDgzMDlhMDQyY2U3MzlhNzkxOTc5OGNkODVlMjE2YzRhMzA3ZjZlJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMTNhZGE5NTEwM2M0NTM3MzA1ZTY5MWU3NGU5YTRhOGRkNjQ3ZTcxMWE5NWU3M2NiNjJkYzYwMThjZmQ4N2I4JyxcbiAgICAgICAgJ2UxMzgxN2I0NGVlMTRkZTY2M2JmNGJjODA4MzQxZjMyNjk0OWUyMWE2YTc1YzI1NzA3Nzg0MTliZGFmNTczM2QnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NTRiNGZhMGU4YWNlZDA2ZDQxNjdhMmM1OWNjYTRjZGExODY5YzA2ZWJhZGZiNjQ4ODU1MDAxNWE4ODUyMmMnLFxuICAgICAgICAnMzBlOTNlODY0ZTY2OWQ4MjIyNGI5NjdjMzAyMGI4ZmE4ZDFlNGUzNTBiNmNiY2M1MzdhNDhiNTc4NDExNjNhMicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTQ4ZGNhZGY1OTkwZTA0OGFhMzg3NGQ0NmFiZWY5ZDcwMTg1OGY5NWRlODA0MWQyYTY4MjhjOTllMjI2MjUxOScsXG4gICAgICAgICdlNDkxYTQyNTM3ZjZlNTk3ZDVkMjhhMzIyNGIxYmMyNWRmOTE1NGVmYmQyZWYxZDJjYmJhMmNhZTUzNDdkNTdlJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3OTYyNDE0NDUwYzc2YzE2ODljN2I0OGY4MjAyZWMzN2ZiMjI0Y2Y1YWMwYmZhMTU3MDMyOGE4YTNkN2M3N2FiJyxcbiAgICAgICAgJzEwMGI2MTBlYzRmZmI0NzYwZDVjMWZjMTMzZWY2ZjZiMTI1MDdhMDUxZjA0YWM1NzYwYWZhNWIyOWRiODM0MzcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM1MTQwODc4MzQ5NjRiNTRiMTViMTYwNjQ0ZDkxNTQ4NWExNjk3NzIyNWI4ODQ3YmIwZGQwODUxMzdlYzQ3Y2EnLFxuICAgICAgICAnZWYwYWZiYjIwNTYyMDU0NDhlMTY1MmM0OGU4MTI3ZmM2MDM5ZTc3YzE1YzIzNzhiN2U3ZDE1YTBkZTI5MzMxMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDNjYzMwYWQ2YjQ4M2U0YmM3OWNlMmM5ZGQ4YmM1NDk5M2U5NDdlYjhkZjc4N2I0NDI5NDNkM2Y3YjUyN2VhZicsXG4gICAgICAgICc4YjM3OGEyMmQ4MjcyNzhkODljNWU5YmU4Zjk1MDhhZTNjMmFkNDYyOTAzNTg2MzBhZmIzNGRiMDRlZWRlMGE0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNjI0ZDg0NzgwNzMyODYwY2UxYzc4ZmNiZmVmZTA4YjJiMjk4MjNkYjkxM2Y2NDkzOTc1YmEwZmY0ODQ3NjEwJyxcbiAgICAgICAgJzY4NjUxY2Y5YjZkYTkwM2UwOTE0NDQ4YzZjZDlkNGNhODk2ODc4ZjUyODJiZTRjOGNjMDZlMmE0MDQwNzg1NzUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzczM2NlODBkYTk1NWE4YTI2OTAyYzk1NjMzZTYyYTk4NTE5MjQ3NGI1YWYyMDdkYTZkZjdiNGZkNWZjNjFjZDQnLFxuICAgICAgICAnZjU0MzVhMmJkMmJhZGY3ZDQ4NWE0ZDhiOGRiOWZjY2UzZTFlZjhlMDIwMWU0NTc4YzU0NjczYmMxZGM1ZWExZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTVkOTQ0MTI1NDk0NTA2NGNmMWExYzMzYmJkM2I0OWY4OTY2YzUwOTIxNzFlNjk5ZWYyNThkZmFiODFjMDQ1YycsXG4gICAgICAgICdkNTZlYjMwYjY5NDYzZTcyMzRmNTEzN2I3M2I4NDE3NzQzNDgwMGJhY2ViZmM2ODVmYzM3YmJlOWVmZTQwNzBkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhMWQwZmNmMmVjOWRlNjc1YjYxMjEzNmU1Y2U3MGQyNzFjMjE0MTdjOWQyYjhhYWFhYzEzODU5OWQwNzE3OTQwJyxcbiAgICAgICAgJ2VkZDc3ZjUwYmNiNWEzY2FiMmU5MDczNzMwOTY2N2YyNjQxNDYyYTU0MDcwZjNkNTE5MjEyZDM5YzE5N2E2MjknLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UyMmZiZTE1YzBhZjhjY2M1NzgwYzA3MzVmODRkYmU5YTc5MGJhZGVlODI0NWMwNmM3Y2EzNzMzMWNiMzY5ODAnLFxuICAgICAgICAnYTg1NWJhYmFkNWNkNjBjODhiNDMwYTY5ZjUzYTFhN2EzODI4OTE1NDk2NDc5OWJlNDNkMDZkNzdkMzFkYTA2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMTEwOTFkZDk4NjBlOGUyMGVlMTM0NzNjMTE1NWY1ZjY5NjM1ZTM5NDcwNGVhYTc0MDA5NDUyMjQ2Y2ZhOWIzJyxcbiAgICAgICAgJzY2ZGI2NTZmODdkMWYwNGZmZmQxZjA0Nzg4YzA2ODMwODcxZWM1YTY0ZmVlZTY4NWJkODBmMGIxMjg2ZDgzNzQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM0YzFmZDA0ZDMwMWJlODliMzFjMDQ0MmQzZTZhYzI0ODgzOTI4YjQ1YTkzNDA3ODE4NjdkNDIzMmVjMmRiZGYnLFxuICAgICAgICAnOTQxNDY4NWU5N2IxYjU5NTRiZDQ2ZjczMDE3NDEzNmQ1N2YxY2VlYjQ4NzQ0M2RjNTMyMTg1N2JhNzNhYmVlJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMjE5ZWE1ZDZiNTQ3MDFjMWMxNGRlNWI1NTdlYjQyYThkMTNmM2FiYmNkMDhhZmZjYzJhNWU2YjA0OWI4ZDYzJyxcbiAgICAgICAgJzRjYjk1OTU3ZTgzZDQwYjBmNzNhZjQ1NDRjY2NmNmIxZjRiMDhkM2MwN2IyN2ZiOGQ4YzI5NjJhNDAwNzY2ZDEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q3Yjg3NDBmNzRhOGZiYWFiMWY2ODNkYjhmNDVkZTI2NTQzYTU0OTBiY2E2MjcwODcyMzY5MTI0NjlhMGI0NDgnLFxuICAgICAgICAnZmE3Nzk2ODEyOGQ5YzkyZWUxMDEwZjMzN2FkNDcxN2VmZjE1ZGI1ZWQzYzA0OWIzNDExZTAzMTVlYWE0NTkzYicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzJkMzFjMjIyZjhmNmYwZWY4NmY3Yzk4ZDNhMzMzNWVhZDViY2QzMmFiZGQ5NDI4OWZlNGQzMDkxYWE4MjRiZicsXG4gICAgICAgICc1ZjMwMzJmNTg5MjE1NmUzOWNjZDNkNzkxNWI5ZTFkYTJlNmRhYzllNmYyNmU5NjExMThkMTRiODQ2MmUxNjYxJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NDYxZjM3MTkxNGFiMzI2NzEwNDVhMTU1ZDk4MzFlYTg3OTNkNzdjZDU5NTkyYzQzNDBmODZjYmMxODM0N2I1JyxcbiAgICAgICAgJzhlYzBiYTIzOGI5NmJlYzBjYmRkZGNhZTBhYTQ0MjU0MmVlZTFmZjUwYzk4NmVhNmIzOTg0N2IzY2MwOTJmZjYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VlMDc5YWRiMWRmMTg2MDA3NDM1NmEyNWFhMzgyMDZhNmQ3MTZiMmMzZTY3NDUzZDI4NzY5OGJhZDdiMmIyZDYnLFxuICAgICAgICAnOGRjMjQxMmFhZmUzYmU1YzRjNWYzN2UwZWNjNWY5ZjZhNDQ2OTg5YWYwNGM0ZTI1ZWJhYWM0NzllYzFjOGMxZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTZlYzkzZTQ0N2VjODNmMDQ2N2IxODMwMmVlNjIwZjdlNjVkZTMzMTg3NGM5ZGM3MmJmZDg2MTZiYTlkYTZiNScsXG4gICAgICAgICc1ZTQ2MzExNTBlNjJmYjQwZDBlOGMyYTdjYTU4MDRhMzlkNTgxODZhNTBlNDk3MTM5NjI2Nzc4ZTI1YjA2NzRkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYWE1Zjk4MGMyNDVmNmYwMzg5NzgyOTBhZmE3MGI2YmQ4ODU1ODk3Zjk4YjZhYTQ4NWI5NjA2NWQ1MzdiZDk5JyxcbiAgICAgICAgJ2Y2NWY1ZDNlMjkyYzJlMDgxOWE1MjgzOTFjOTk0NjI0ZDc4NDg2OWQ3ZTZlYTY3ZmIxODA0MTAyNGVkYzA3ZGMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc4Yzk0MDc1NDRhYzEzMjY5MmVlMTkxMGEwMjQzOTk1OGFlMDQ4NzcxNTEzNDJlYTk2YzRiNmIzNWE0OWY1MScsXG4gICAgICAgICdmM2UwMzE5MTY5ZWI5Yjg1ZDU0MDQ3OTU1MzlhNWU2OGZhMWZiZDU4M2MwNjRkMjQ2MmI2NzVmMTk0YTNkZGI0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0OTRmNGJlMjE5YTFhNzcwMTZkY2Q4Mzg0MzFhZWEwMDAxY2RjOGFlN2E2ZmM2ODg3MjY1NzhkOTcwMjg1N2E1JyxcbiAgICAgICAgJzQyMjQyYTk2OTI4M2E1ZjMzOWJhN2YwNzVlMzZiYTJhZjkyNWNlMzBkNzY3ZWQ2ZTU1ZjRiMDMxODgwZDU2MmMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E1OThhODAzMGRhNmQ4NmM2YmM3ZjJmNTE0NGVhNTQ5ZDI4MjExZWE1OGZhYTcwZWJmNGMxZTY2NWMxZmU5YjUnLFxuICAgICAgICAnMjA0YjVkNmY4NDgyMmMzMDdlNGI0YTcxNDA3MzdhZWMyM2ZjNjNiNjViMzVmODZhMTAwMjZkYmQyZDg2NGU2YicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzQxOTE2MzY1YWJiMmI1ZDA5MTkyZjVmMmRiZWFmZWMyMDhmMDIwZjEyNTcwYTE4NGRiYWRjM2U1ODU5NTk5NycsXG4gICAgICAgICc0ZjE0MzUxZDAwODdlZmE0OWQyNDViMzI4OTg0OTg5ZDVjYWY5NDUwZjM0YmZjMGVkMTZlOTZiNThmYTk5MTMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg0MWQ2MDYzYTU4NmZhNDc1YTcyNDYwNGRhMDNiYzViOTJhMmUwZDJlMGEzNmFjZmU0YzczYTU1MTQ3NDI4ODEnLFxuICAgICAgICAnNzM4NjdmNTljMDY1OWU4MTkwNGY5YTFjNzU0MzY5OGU2MjU2MmQ2NzQ0YzE2OWNlN2EzNmRlMDFhOGQ2MTU0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1ZTk1YmIzOTlhNjk3MWQzNzYwMjY5NDdmODliZGUyZjI4MmIzMzgxMDkyOGJlNGRlZDExMmFjNGQ3MGUyMGQ1JyxcbiAgICAgICAgJzM5ZjIzZjM2NjgwOTA4NWJlZWJmYzcxMTgxMzEzNzc1YTk5YzlhZWQ3ZDhiYTM4YjE2MTM4NGM3NDYwMTI4NjUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM2ZTQ2NDFhNTM5NDhmZDQ3NmMzOWY4YTk5ZmQ5NzRlNWVjMDc1NjRiNTMxNWQ4YmY5OTQ3MWJjYTBlZjJmNjYnLFxuICAgICAgICAnZDI0MjRiMWIxYWJlNGViODE2NDIyN2IwODVjOWFhOTQ1NmVhMTM0OTNmZDU2M2UwNmZkNTFjZjU2OTRjNzhmYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzM2NTgxZWE3YmZiYmIyOTBjMTkxYTJmNTA3YTQxY2Y1NjQzODQyMTcwZTkxNGZhZWFiMjdjMmM1NzlmNzI2JyxcbiAgICAgICAgJ2VhZDEyMTY4NTk1ZmUxYmU5OTI1MjEyOWI2ZTU2YjMzOTFmN2FiMTQxMGNkMWUwZWYzZGNkY2FiZDJmZGEyMjQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhhYjg5ODE2ZGFkZmQ2YjZhMWYyNjM0ZmNmMDBlYzg0MDM3ODEwMjVlZDY4OTBjNDg0OTc0MjcwNmJkNDNlZGUnLFxuICAgICAgICAnNmZkY2VmMDlmMmY2ZDBhMDQ0ZTY1NGFlZjYyNDEzNmY1MDNkNDU5YzNlODk4NDU4NThhNDdhOTEyOWNkZDI0ZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMWUzM2YxYTc0NmM5YzU3NzgxMzMzNDRkOTI5OWZjYWEyMGIwOTM4ZThhY2ZmMjU0NGJiNDAyODRiOGM1ZmI5NCcsXG4gICAgICAgICc2MDY2MDI1N2RkMTFiM2FhOWM4ZWQ2MThkMjRlZGZmMjMwNmQzMjBmMWQwMzAxMGUzM2E3ZDIwNTdmM2IzYjYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg1YjdjMWRjYjNjZWMxYjdlZTdmMzBkZWQ3OWRkMjBhMGVkMWY0Y2MxOGNiY2ZjZmE0MTAzNjFmZDhmMDhmMzEnLFxuICAgICAgICAnM2Q5OGE5Y2RkMDI2ZGQ0M2YzOTA0OGYyNWE4ODQ3ZjRmY2FmYWQxODk1ZDdhNjMzYzZmZWQzYzM1ZTk5OTUxMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjlkZjlmYmQ4ZDllNDY1MDkyNzVmNGIxMjVkNmQ0NWQ3ZmJlOWEzYjg3OGE3YWY4NzJhMjgwMDY2MWFjNWY1MScsXG4gICAgICAgICdiNGM0ZmU5OWM3NzVhNjA2ZTJkODg2MjE3OTEzOWZmZGE2MWRjODYxYzAxOWU1NWNkMjg3NmViMmEyN2Q4NGInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2EwYjFjYWUwNmIwYTg0N2EzZmVhNmU2NzFhYWY4YWRmZGZlNThjYTJmNzY4MTA1YzgwODJiMmU0NDlmY2UyNTInLFxuICAgICAgICAnYWU0MzQxMDJlZGRlMDk1OGVjNGIxOWQ5MTdhNmEyOGU2YjcyZGExODM0YWZmMGU2NTBmMDQ5NTAzYTI5NmNmMicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGU4Y2VhZmI5YjNlOWExMzZkYzdmZjY3ZTg0MDI5NWI0OTlkZmIzYjIxMzNlNGJhMTEzZjJlNGMwZTEyMWU1JyxcbiAgICAgICAgJ2NmMjE3NDExOGM4YjZkN2E0YjQ4ZjZkNTM0Y2U1Yzc5NDIyYzA4NmE2MzQ2MDUwMmI4MjdjZTYyYTMyNjY4M2MnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QyNGE0NGUwNDdlMTliNmY1YWZiODFjN2NhMmY2OTA4MGE1MDc2Njg5YTAxMDkxOWY0MjcyNWMyYjc4OWEzM2InLFxuICAgICAgICAnNmZiOGQ1NTkxYjQ2NmY4ZmM2M2RiNTBmMWMwZjFjNjkwMTNmOTk2ODg3YjgyNDRkMmNkZWM0MTdhZmVhOGZhMycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWEwMTYwNmE3YTZjOWNkZDI0OWZkZmNmYWNiOTk1ODQwMDFlZGQyOGFiYmFiNzdiNTEwNGU5OGU4ZTNiMzVkNCcsXG4gICAgICAgICczMjJhZjQ5MDhjNzMxMmIwY2ZiZmUzNjlmN2E3YjNjZGI3ZDQ0OTRiYzI4MjM3MDBjZmQ2NTIxODhhM2VhOThkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhZjhhZGRiZjJiNjYxYzhhNmM2MzI4NjU1ZWI5NjY1MTI1MjAwN2Q4YzVlYTMxYmU0YWQxOTZkZThjZTIxMzFmJyxcbiAgICAgICAgJzY3NDllNjdjMDI5Yjg1ZjUyYTAzNGVhZmQwOTY4MzZiMjUyMDgxODY4MGUyNmFjOGYzZGZiY2RiNzE3NDk3MDAnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UzYWUxOTc0NTY2Y2EwNmNjNTE2ZDQ3ZTBmYjE2NWE2NzRhM2RhYmNmY2ExNWU3MjJmMGUzNDUwZjQ1ODg5JyxcbiAgICAgICAgJzJhZWFiZTdlNDUzMTUxMDExNjIxN2YwN2JmNGQwNzMwMGRlOTdlNDg3NGY4MWY1MzM0MjBhNzJlZWIwYmQ2YTQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzU5MWVlMzU1MzEzZDk5NzIxY2Y2OTkzZmZlZDFlM2UzMDE5OTNmZjNlZDI1ODgwMjA3NWVhOGNlZDM5N2UyNDYnLFxuICAgICAgICAnYjBlYTU1OGExMTNjMzBiZWE2MGZjNDc3NTQ2MGM3OTAxZmYwYjA1M2QyNWNhMmJkZWVlOThmMWE0YmU1ZDE5NicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTEzOTZkNTVmZGE1NGM0OWYxOWFhOTczMThkOGRhNjFmYTg1ODRlNDdiMDg0OTQ1MDc3Y2YwMzI1NWI1Mjk4NCcsXG4gICAgICAgICc5OThjNzRhOGNkNDVhYzAxMjg5ZDU4MzNhN2JlYjQ3NDRmZjUzNmIwMWIyNTdiZTRjNTc2N2JlYTkzZWE1N2E0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczYzVkMmExYmEzOWM1YTE3OTAwMDA3MzhjOWUwYzQwYjhkY2RmZDU0Njg3NTRiNjQwNTU0MDE1N2UwMTdhYTdhJyxcbiAgICAgICAgJ2IyMjg0Mjc5OTk1YTM0ZTJmOWQ0ZGU3Mzk2ZmMxOGI4MGY5YjhiOWZkZDI3MGY2NjYxZjc5Y2E0YzgxYmQyNTcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2NjODcwNGI4YTYwYTBkZWZhM2E5OWE3Mjk5ZjJlOWMzZmJjMzk1YWZiMDRhYzA3ODQyNWVmOGExNzkzY2MwMzAnLFxuICAgICAgICAnYmRkNDYwMzlmZWVkMTc4ODFkMWUwODYyZGIzNDdmOGNmMzk1Yjc0ZmM0YmNkYzRlOTQwYjc0ZTNhYzFmMWIxMycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzUzM2U0ZjdlYTg1NTVhYWNkOTc3N2FjNWNhZDI5Yjk3ZGQ0ZGVmY2NjNTNlZTdlYTIwNDExOWIyODg5YjE5NycsXG4gICAgICAgICc2ZjBhMjU2YmM1ZWZkZjQyOWEyZmI2MjQyZjFhNDNhMmQ5YjkyNWJiNGE0YjNhMjZiYjhlMGY0NWViNTk2MDk2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjMTRmOGYyY2NiMjdkNmYxMDlmNmQwOGQwM2NjOTZhNjliYThjMzRlZWMwN2JiY2Y1NjZkNDhlMzNkYTY1OTMnLFxuICAgICAgICAnYzM1OWQ2OTIzYmIzOThmN2ZkNDQ3M2UxNmZlMWMyODQ3NWI3NDBkZDA5ODA3NWU2YzBlODY0OTExM2RjM2EzOCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTZjYmMzMDQ2YmM2YTQ1MGJhYzI0Nzg5ZmExNzExNWE0Yzk3MzllZDc1ZjhmMjFjZTQ0MWY3MmUwYjkwZTZlZicsXG4gICAgICAgICcyMWFlN2Y0NjgwZTg4OWJiMTMwNjE5ZTJjMGY5NWEzNjBjZWI1NzNjNzA2MDMxMzk4NjJhZmQ2MTdmYTliOWYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM0N2Q2ZDlhMDJjNDg5MjdlYmZiODZjMTM1OWIxY2FmMTMwYTNjMDI2N2QxMWNlNjM0NGIzOWY5OWQ0M2NjMzgnLFxuICAgICAgICAnNjBlYTdmNjFhMzUzNTI0ZDFjOTg3ZjZlY2VjOTJmMDg2ZDU2NWFiNjg3ODcwY2IxMjY4OWZmMWUzMWM3NDQ0OCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGE2NTQ1ZDIxODFkYjhkOTgzZjdkY2IzNzVlZjU4NjZkNDdjNjdiMWJmMzFjOGNmODU1ZWY3NDM3YjcyNjU2YScsXG4gICAgICAgICc0OWI5NjcxNWFiNjg3OGE3OWU3OGYwN2NlNTY4MGM1ZDY2NzMwNTFiNDkzNWJkODk3ZmVhODI0Yjc3ZGMyMDhhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNDA3NDdjYzlkMDEyY2IxYTEzYjgxNDgzMDljNmRlN2VjMjVkNjk0NWQ2NTcxNDZiOWQ1OTk0YjhmZWIxMTExJyxcbiAgICAgICAgJzVjYTU2MDc1M2JlMmExMmZjNmRlNmNhZjJjYjQ4OTU2NWRiOTM2MTU2Yjk1MTRlMWJiNWU4MzAzN2UwZmEyZDQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRlNDJjOGVjODJjOTk3OThjY2YzYTYxMGJlODcwZTc4MzM4YzdmNzEzMzQ4YmQzNGM4MjAzZWY0MDM3ZjM1MDInLFxuICAgICAgICAnNzU3MWQ3NGVlNWUwZmI5MmE3YThiMzNhMDc3ODMzNDFhNTQ5MjE0NGNjNTRiY2M0MGE5NDQ3MzY5MzYwNjQzNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzc3NWFiNzA4OWJjNmFmODIzYWJhMmUxYWY3MGIyMzZkMjUxY2FkYjBjODY3NDMyODc1MjJhMWIzYjBkZWRlYScsXG4gICAgICAgICdiZTUyZDEwN2JjZmEwOWQ4YmNiOTczNmE4MjhjZmE3ZmFjOGRiMTdiZjdhNzZhMmM0MmFkOTYxNDA5MDE4Y2Y3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjZWUzMWNiZjdlMzRlYzM3OWQ5NGZiODE0ZDNkNzc1YWQ5NTQ1OTVkMTMxNGJhODg0Njk1OWUzZTgyZjc0ZTI2JyxcbiAgICAgICAgJzhmZDY0YTE0YzA2YjU4OWMyNmI5NDdhZTJiY2Y2YmZhMDE0OWVmMGJlMTRlZDRkODBmNDQ4YTAxYzQzYjFjNmQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2I0ZjllYWVhMDliNjkxNzYxOWY2ZWE2YTRlYjU0NjRlZmRkYjU4ZmQ0NWIxZWJlZmNkYzFhMDFkMDhiNDc5ODYnLFxuICAgICAgICAnMzllNWM5OTI1YjVhNTRiMDc0MzNhNGYxOGM2MTcyNmY4YmIxMzFjMDEyY2E1NDJlYjI0YThhYzA3MjAwNjgyYScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDQyNjNkZmMzZDJkZjkyM2EwMTc5YTQ4OTY2ZDMwY2U4NGUyNTE1YWZjM2RjY2MxYjc3OTA3NzkyZWJjYzYwZScsXG4gICAgICAgICc2MmRmYWYwN2EwZjc4ZmViMzBlMzBkNjI5NTg1M2NlMTg5ZTEyNzc2MGFkNmNmN2ZhZTE2NGUxMjJhMjA4ZDU0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ODQ1NzUyNDgyMGZhNjVhNGY4ZDM1ZWI2OTMwODU3YzAwMzJhY2MwYTRhMmRlNDIyMjMzZWVkYTg5NzYxMmM0JyxcbiAgICAgICAgJzI1YTc0OGFiMzY3OTc5ZDk4NzMzYzM4YTFmYTFjMmU3ZGM2Y2MwN2RiMmQ2MGE5YWU3YTc2YWFhNDliZDBmNzcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RmZWVlZjE4ODExMDFmMmNiMTE2NDRmM2EyYWZkZmMyMDQ1ZTE5OTE5MTUyOTIzZjM2N2ExNzY3YzExY2NlZGEnLFxuICAgICAgICAnZWNmYjcwNTZjZjFkZTA0MmY5NDIwYmFiMzk2NzkzYzBjMzkwYmRlNzRiNGJiZGZmMTZhODNhZTA5YTlhNzUxNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNmQ3ZWY2YjE3NTQzZjgzNzNjNTczZjQ0ZTFmMzg5ODM1ZDg5YmNiYzYwNjJjZWQzNmM4MmRmODNiOGZhZTg1OScsXG4gICAgICAgICdjZDQ1MGVjMzM1NDM4OTg2ZGZlZmExMGM1N2ZlYTliY2M1MjFhMDk1OWIyZDgwYmJmNzRiMTkwZGNhNzEyZDEwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNzU2MDVkNTkxMDJhNWEyNjg0NTAwZDNiOTkxZjJlM2YzYzg4YjkzMjI1NTQ3MDM1YWYyNWFmNjZlMDQ1NDFmJyxcbiAgICAgICAgJ2Y1YzU0NzU0YThmNzFlZTU0MGI5YjQ4NzI4NDczZTMxNGY3MjlhYzUzMDhiMDY5MzgzNjA5OTBlMmJmYWQxMjUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ViOTg2NjBmNGM0ZGZhYTA2YTJiZTQ1M2Q1MDIwYmM5OWEwYzJlNjBhYmUzODg0NTdkZDQzZmVmYjFlZDYyMGMnLFxuICAgICAgICAnNmNiOWE4ODc2ZDljYjg1MjA2MDlhZjNhZGQyNmNkMjBhMGE3Y2Q4YTk0MTExMzFjZTg1ZjQ0MTAwMDk5MjIzZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTNlODdiMDI3ZDg1MTRkMzU5MzlmMmU2ODkyYjE5OTIyMTU0NTk2OTQxODg4MzM2ZGMzNTYzZTNiOGRiYTk0MicsXG4gICAgICAgICdmZWY1YTNjNjgwNTlhNmRlYzVkNjI0MTE0YmYxZTkxYWFjMmI5ZGE1NjhkNmFiZWIyNTcwZDU1NjQ2YjhhZGYxJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlZTE2MzAyNmU5ZmQ2ZmUwMTdjMzhmMDZhNWJlNmZjMTI1NDI0YjM3MWNlMjcwOGU3YmY0NDkxNjkxZTU3NjRhJyxcbiAgICAgICAgJzFhY2IyNTBmMjU1ZGQ2MWM0M2Q5NGNjYzY3MGQwZjU4ZjQ5YWUzZmExNWI5NjYyM2U1NDMwZGEwYWQ2YzYyYjInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2IyNjhmNWVmOWFkNTFlNGQ3OGRlM2E3NTBjMmRjODliMWU2MjZkNDM1MDU4Njc5OTk5MzJlNWRiMzNhZjNkODAnLFxuICAgICAgICAnNWYzMTBkNGIzYzk5YjllYmIxOWY3N2Q0MWMxZGVlMDE4Y2YwZDM0ZmQ0MTkxNjE0MDAzZTk0NWExMjE2ZTQyMycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmYwN2YzMTE4YTlkZjAzNWU5ZmFkODVlYjZjN2JmZTQyYjAyZjAxY2E5OWNlZWEzYmY3ZmZkYmE5M2M0NzUwZCcsXG4gICAgICAgICc0MzgxMzZkNjAzZTg1OGEzYTVjNDQwYzM4ZWNjYmFkZGMxZDI5NDIxMTRlMmVkZGQ0NzQwZDA5OGNlZDFmMGQ4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZDhiOTg1NWM3YzA1MmEzNDE0NmZkMjBmZmI2NThiZWE0YjlmNjllMGQ4MjVlYmVjMTZlOGMzY2UyYjUyNmExJyxcbiAgICAgICAgJ2NkYjU1OWVlZGMyZDc5ZjkyNmJhZjQ0ZmI4NGVhNGQ0NGJjZjUwZmVlNTFkN2NlYjMwZTJlN2Y0NjMwMzY3NTgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzUyZGIwYjUzODRkZmJmMDViZmE5ZDQ3MmQ3YWUyNmRmZTRiODUxY2VjYTkxYjFlYmE1NDI2MzE4MGRhMzJiNjMnLFxuICAgICAgICAnYzNiOTk3ZDA1MGVlNWQ0MjNlYmFmNjZhNmRiOWY1N2IzMTgwYzkwMjg3NTY3OWRlOTI0YjY5ZDg0YTdiMzc1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNjJmOTQ5MGQzZDUxZGE2Mzk1ZWZkMjRlODA5MTljYzdkMGYyOWMzZjNmYTQ4YzZmZmY1NDNiZWNiZDQzMzUyJyxcbiAgICAgICAgJzZkODlhZDdiYTQ4NzZiMGIyMmMyY2EyODBjNjgyODYyZjM0MmM4NTkxZjFkYWY1MTcwZTA3YmZkOWNjYWZhN2QnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzdmMzBlYTI0NzZiMzk5YjQ5NTc1MDljODhmNzdkMDE5MWFmYTJmZjVjYjdiMTRmZDZkOGU3ZDY1YWFhYjExOTMnLFxuICAgICAgICAnY2E1ZWY3ZDRiMjMxYzk0YzNiMTUzODlhNWY2MzExZTlkYWZmN2JiNjdiMTAzZTk4ODBlZjRiZmY2MzdhY2FlYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTA5OGZmMWUxZDlmMTRmYjQ2YTIxMGZhZGE2YzkwM2ZlZjBmYjdiNGExZGQxZDlhYzYwYTAzNjE4MDBiN2EwMCcsXG4gICAgICAgICc5NzMxMTQxZDgxZmM4ZjgwODRkMzdjNmU3NTQyMDA2YjNlZTFiNDBkNjBkZmU1MzYyYTViMTMyZmQxN2RkYzAnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyYjc4YzdkZTllZTUxMmE3Mjg5NWJlNmI5Y2JlZmE2ZTJmM2M0Y2NjZTQ0NWM5NmI5ZjJjODFlMjc3OGFkNTgnLFxuICAgICAgICAnZWUxODQ5ZjUxM2RmNzFlMzJlZmMzODk2ZWUyODI2MGM3M2JiODA1NDdhZTIyNzViYTQ5NzIzNzc5NGM4NzUzYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTJjYjc0ZmRkYzhlOWZiY2QwNzZlZWYyYTdjNzJiMGNlMzdkNTBmMDgyNjlkZmMwNzRiNTgxNTUwNTQ3YTRmNycsXG4gICAgICAgICdkM2FhMmVkNzFjOWRkMjI0N2E2MmRmMDYyNzM2ZWIwYmFkZGVhOWUzNjEyMmQyYmU4NjQxYWJjYjAwNWNjNGE0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NDM4NDQ3NTY2ZDRkN2JlZGFkYzI5OTQ5NmFiMzU3NDI2MDA5YTM1ZjIzNWNiMTQxYmUwZDk5Y2QxMGFlM2E4JyxcbiAgICAgICAgJ2M0ZTEwMjA5MTY5ODBhNGRhNWQwMWFjNWU2YWQzMzA3MzRlZjBkNzkwNjYzMWM0ZjIzOTA0MjZiMmVkZDc5MWYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQxNjJkNDg4Yjg5NDAyMDM5YjU4NGM2ZmM2YzMwODg3MDU4N2Q5YzQ2ZjY2MGI4NzhhYjY1YzgyYzcxMWQ2N2UnLFxuICAgICAgICAnNjcxNjNlOTAzMjM2Mjg5Zjc3NmYyMmMyNWZiOGEzYWZjMTczMmYyYjg0YjRlOTVkYmRhNDdhZTVhMDg1MjY0OScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnM2ZhZDNmYTg0Y2FmMGYzNGYwZjg5YmZkMmRjZjU0ZmMxNzVkNzY3YWVjM2U1MDY4NGYzYmE0YTRiZjVmNjgzZCcsXG4gICAgICAgICdjZDFiYzdjYjZjYzQwN2JiMmYwY2E2NDdjNzE4YTczMGNmNzE4NzJlN2QwZDJhNTNmYTIwZWZjZGZlNjE4MjYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzY3NGYyNjAwYTMwMDdhMDA1NjhjMWE3Y2UwNWQwODE2YzFmYjg0YmYxMzcwNzk4ZjFjNjk1MzJmYWViMWE4NmInLFxuICAgICAgICAnMjk5ZDIxZjk0MTNmMzNiM2VkZjQzYjI1NzAwNDU4MGI3MGRiNTdkYTBiMTgyMjU5ZTA5ZWVjYzY5ZTBkMzhhNScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDMyZjRkYTU0YWRlNzRhYmI4MWI4MTVhZDFmYjNiMjYzZDgyZDZjNjkyNzE0YmNmZjg3ZDI5YmQ1ZWU5ZjA4ZicsXG4gICAgICAgICdmOTQyOWU3MzhiOGU1M2I5NjhlOTkwMTZjMDU5NzA3NzgyZTE0ZjQ1MzUzNTlkNTgyZmM0MTY5MTBiM2VlYTg3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMGU0ZTY3MDQzNTM4NTU1NmU1OTM2NTcxMzU4NDVkMzZmYmI2OTMxZjcyYjA4Y2IxZWQ5NTRmMWUzY2UzZmY2JyxcbiAgICAgICAgJzQ2MmY5YmNlNjE5ODk4NjM4NDk5MzUwMTEzYmJjOWIxMGE4NzhkMzVkYTcwNzQwZGM2OTVhNTU5ZWI4OGRiN2InLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2JlMjA2MjAwM2M1MWNjMzAwNDY4MjkwNDMzMGU0ZGVlN2YzZGNkMTBiMDFlNTgwYmYxOTcxYjA0ZDRjYWQyOTcnLFxuICAgICAgICAnNjIxODhiYzQ5ZDYxZTU0Mjg1NzNkNDhhNzRlMWM2NTViMWM2MTA5MDkwNTY4MmEwZDU1NThlZDcyZGNjYjliYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTMxNDQ0MjNhY2UzNDUxZWQyOWUwZmI5YWMyYWYyMTFjYjZlODRhNjAxZGY1OTkzYzQxOTg1OWZmZjVkZjA0YScsXG4gICAgICAgICc3YzEwZGZiMTY0YzM0MjVmNWM3MWEzZjlkNzk5MjAzOGYxMDY1MjI0ZjcyYmI5ZDFkOTAyYTZkMTMwMzdiNDdjJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiMDE1ZjgwNDRmNWZjYmRjZjIxY2EyNmQ2YzM0ZmI4MTk3ODI5MjA1YzdiN2QyYTdjYjY2NDE4YzE1N2IxMTJjJyxcbiAgICAgICAgJ2FiOGMxZTA4NmQwNGU4MTM3NDRhNjU1YjJkZjhkNWY4M2IzY2RjNmZhYTMwODhjMWQzYWVhMTQ1NGUzYTFkNWYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q1ZTllMWRhNjQ5ZDk3ZDg5ZTQ4NjgxMTdhNDY1YTNhNGY4YTE4ZGU1N2ExNDBkMzZiM2YyYWYzNDFhMjFiNTInLFxuICAgICAgICAnNGNiMDQ0MzdmMzkxZWQ3MzExMWExM2NjMWQ0ZGQwZGIxNjkzNDY1YzIyNDA0ODBkODk1NWU4NTkyZjI3NDQ3YScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDNhZTQxMDQ3ZGQ3Y2EwNjVkYmY4ZWQ3N2I5OTI0Mzk5ODMwMDVjZDcyZTE2ZDZmOTk2YTUzMTZkMzY5NjZiYicsXG4gICAgICAgICdiZDFhZWIyMWFkMjJlYmIyMmExMGYwMzAzNDE3YzZkOTY0ZjhjZGQ3ZGYwYWNhNjE0YjEwZGMxNGQxMjVhYzQ2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0NjNlMjc2M2Q4ODVmOTU4ZmM2NmNkZDIyODAwZjBhNDg3MTk3ZDBhODJlMzc3YjQ5ZjgwYWY4N2M4OTdiMDY1JyxcbiAgICAgICAgJ2JmZWZhY2RiMGU1ZDBmZDdkZjNhMzExYTk0ZGUwNjJiMjZiODBjNjFmYmM5NzUwOGI3OTk5MjY3MWVmN2NhN2YnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc5ODVmZGZkMTI3YzA1NjdjNmY1M2VjMWJiNjNlYzMxNThlNTk3YzQwYmZlNzQ3YzgzY2RkZmM5MTA2NDE5MTcnLFxuICAgICAgICAnNjAzYzEyZGFmM2Q5ODYyZWYyYjI1ZmUxZGUyODlhZWQyNGVkMjkxZTBlYzY3MDg3MDNhNWJkNTY3ZjMyZWQwMycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzRhMWFkNmI1Zjc2ZTM5ZGIyZGQyNDk0MTBlYWM3Zjk5ZTc0YzU5Y2I4M2QyZDBlZDVmZjE1NDNkYTc3MDNlOScsXG4gICAgICAgICdjYzYxNTdlZjE4YzljNjNjZDYxOTNkODM2MzFiYmVhMDA5M2UwOTY4OTQyZThjMzNkNTczN2ZkNzkwZTBkYjA4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMDY4MmE1MDcwMzM3NWY2MDJkNDE2NjY0YmExOWI3ZmM5YmFiNDJjNzI3NDc0NjNhNzFkMDg5NmIyMmY2ZGEzJyxcbiAgICAgICAgJzU1M2UwNGY2YjAxOGI0ZmE2YzhmMzllN2YzMTFkMzE3NjI5MGQwZTBmMTljYTczZjE3NzE0ZDk5NzdhMjJmZjgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzllMjE1OGYwZDdjMGQ1ZjI2YzM3OTFlZmVmYTc5NTk3NjU0ZTdhMmIyNDY0ZjUyYjFlZTZjMTM0Nzc2OWVmNTcnLFxuICAgICAgICAnNzEyZmNkZDFiOTA1M2YwOTAwM2EzNDgxZmE3NzYyZTlmZmQ3YzhlZjM1YTM4NTA5ZTJmYmYyNjI5MDA4MzczJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNzZlMjY5ODlhNDNjOWNmZWJhNDAyOWMyMDI1MzhjMjgxNzJlNTY2ZTNjNGZjZTczMjI4NTdmM2JlMzI3ZDY2JyxcbiAgICAgICAgJ2VkOGNjOWQwNGIyOWViODc3ZDI3MGI0ODc4ZGM0M2MxOWFlZmQzMWY0ZWVlMDllZTdiNDc4MzRjMWZhNGIxYzMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc1ZDQ2ZWZlYTM3NzFlNmU2OGFiYjg5YTEzYWQ3NDdlY2YxODkyMzkzZGZjNGYxYjcwMDQ3ODhjNTAzNzRkYTgnLFxuICAgICAgICAnOTg1MjM5MGE5OTUwNzY3OWZkMGI4NmZkMmIzOWE4NjhkN2VmYzIyMTUxMzQ2ZTFhM2NhNDcyNjU4NmE2YmVkOCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODA5YTIwYzY3ZDY0OTAwZmZiNjk4YzRjODI1ZjZkNWYyMzEwZmIwNDUxYzg2OTM0NWI3MzE5ZjY0NTYwNTcyMScsXG4gICAgICAgICc5ZTk5NDk4MGQ5OTE3ZTIyYjc2YjA2MTkyN2ZhMDQxNDNkMDk2Y2NjNTQ5NjNlNmE1ZWJmYTVmM2Y4ZTI4NmMxJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxYjM4OTAzYTQzZjdmMTE0ZWQ0NTAwYjRlYWM3MDgzZmRlZmVjZTFjZjI5YzYzNTI4ZDU2MzQ0NmY5NzJjMTgwJyxcbiAgICAgICAgJzQwMzZlZGM5MzFhNjBhZTg4OTM1M2Y3N2ZkNTNkZTRhMjcwOGIyNmI2ZjVkYTcyYWQzMzk0MTE5ZGFmNDA4ZjknLFxuICAgICAgXSxcbiAgICBdLFxuICB9LFxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gZXhwb3J0cztcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgbWluQXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIG1pblV0aWxzID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWNyeXB0by11dGlscycpO1xuXG51dGlscy5hc3NlcnQgPSBtaW5Bc3NlcnQ7XG51dGlscy50b0FycmF5ID0gbWluVXRpbHMudG9BcnJheTtcbnV0aWxzLnplcm8yID0gbWluVXRpbHMuemVybzI7XG51dGlscy50b0hleCA9IG1pblV0aWxzLnRvSGV4O1xudXRpbHMuZW5jb2RlID0gbWluVXRpbHMuZW5jb2RlO1xuXG4vLyBSZXByZXNlbnQgbnVtIGluIGEgdy1OQUYgZm9ybVxuZnVuY3Rpb24gZ2V0TkFGKG51bSwgdywgYml0cykge1xuICB2YXIgbmFmID0gbmV3IEFycmF5KE1hdGgubWF4KG51bS5iaXRMZW5ndGgoKSwgYml0cykgKyAxKTtcbiAgbmFmLmZpbGwoMCk7XG5cbiAgdmFyIHdzID0gMSA8PCAodyArIDEpO1xuICB2YXIgayA9IG51bS5jbG9uZSgpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbmFmLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHo7XG4gICAgdmFyIG1vZCA9IGsuYW5kbG4od3MgLSAxKTtcbiAgICBpZiAoay5pc09kZCgpKSB7XG4gICAgICBpZiAobW9kID4gKHdzID4+IDEpIC0gMSlcbiAgICAgICAgeiA9ICh3cyA+PiAxKSAtIG1vZDtcbiAgICAgIGVsc2VcbiAgICAgICAgeiA9IG1vZDtcbiAgICAgIGsuaXN1Ym4oeik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHogPSAwO1xuICAgIH1cblxuICAgIG5hZltpXSA9IHo7XG4gICAgay5pdXNocm4oMSk7XG4gIH1cblxuICByZXR1cm4gbmFmO1xufVxudXRpbHMuZ2V0TkFGID0gZ2V0TkFGO1xuXG4vLyBSZXByZXNlbnQgazEsIGsyIGluIGEgSm9pbnQgU3BhcnNlIEZvcm1cbmZ1bmN0aW9uIGdldEpTRihrMSwgazIpIHtcbiAgdmFyIGpzZiA9IFtcbiAgICBbXSxcbiAgICBbXSxcbiAgXTtcblxuICBrMSA9IGsxLmNsb25lKCk7XG4gIGsyID0gazIuY2xvbmUoKTtcbiAgdmFyIGQxID0gMDtcbiAgdmFyIGQyID0gMDtcbiAgdmFyIG04O1xuICB3aGlsZSAoazEuY21wbigtZDEpID4gMCB8fCBrMi5jbXBuKC1kMikgPiAwKSB7XG4gICAgLy8gRmlyc3QgcGhhc2VcbiAgICB2YXIgbTE0ID0gKGsxLmFuZGxuKDMpICsgZDEpICYgMztcbiAgICB2YXIgbTI0ID0gKGsyLmFuZGxuKDMpICsgZDIpICYgMztcbiAgICBpZiAobTE0ID09PSAzKVxuICAgICAgbTE0ID0gLTE7XG4gICAgaWYgKG0yNCA9PT0gMylcbiAgICAgIG0yNCA9IC0xO1xuICAgIHZhciB1MTtcbiAgICBpZiAoKG0xNCAmIDEpID09PSAwKSB7XG4gICAgICB1MSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG04ID0gKGsxLmFuZGxuKDcpICsgZDEpICYgNztcbiAgICAgIGlmICgobTggPT09IDMgfHwgbTggPT09IDUpICYmIG0yNCA9PT0gMilcbiAgICAgICAgdTEgPSAtbTE0O1xuICAgICAgZWxzZVxuICAgICAgICB1MSA9IG0xNDtcbiAgICB9XG4gICAganNmWzBdLnB1c2godTEpO1xuXG4gICAgdmFyIHUyO1xuICAgIGlmICgobTI0ICYgMSkgPT09IDApIHtcbiAgICAgIHUyID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgbTggPSAoazIuYW5kbG4oNykgKyBkMikgJiA3O1xuICAgICAgaWYgKChtOCA9PT0gMyB8fCBtOCA9PT0gNSkgJiYgbTE0ID09PSAyKVxuICAgICAgICB1MiA9IC1tMjQ7XG4gICAgICBlbHNlXG4gICAgICAgIHUyID0gbTI0O1xuICAgIH1cbiAgICBqc2ZbMV0ucHVzaCh1Mik7XG5cbiAgICAvLyBTZWNvbmQgcGhhc2VcbiAgICBpZiAoMiAqIGQxID09PSB1MSArIDEpXG4gICAgICBkMSA9IDEgLSBkMTtcbiAgICBpZiAoMiAqIGQyID09PSB1MiArIDEpXG4gICAgICBkMiA9IDEgLSBkMjtcbiAgICBrMS5pdXNocm4oMSk7XG4gICAgazIuaXVzaHJuKDEpO1xuICB9XG5cbiAgcmV0dXJuIGpzZjtcbn1cbnV0aWxzLmdldEpTRiA9IGdldEpTRjtcblxuZnVuY3Rpb24gY2FjaGVkUHJvcGVydHkob2JqLCBuYW1lLCBjb21wdXRlcikge1xuICB2YXIga2V5ID0gJ18nICsgbmFtZTtcbiAgb2JqLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uIGNhY2hlZFByb3BlcnR5KCkge1xuICAgIHJldHVybiB0aGlzW2tleV0gIT09IHVuZGVmaW5lZCA/IHRoaXNba2V5XSA6XG4gICAgICB0aGlzW2tleV0gPSBjb21wdXRlci5jYWxsKHRoaXMpO1xuICB9O1xufVxudXRpbHMuY2FjaGVkUHJvcGVydHkgPSBjYWNoZWRQcm9wZXJ0eTtcblxuZnVuY3Rpb24gcGFyc2VCeXRlcyhieXRlcykge1xuICByZXR1cm4gdHlwZW9mIGJ5dGVzID09PSAnc3RyaW5nJyA/IHV0aWxzLnRvQXJyYXkoYnl0ZXMsICdoZXgnKSA6XG4gICAgYnl0ZXM7XG59XG51dGlscy5wYXJzZUJ5dGVzID0gcGFyc2VCeXRlcztcblxuZnVuY3Rpb24gaW50RnJvbUxFKGJ5dGVzKSB7XG4gIHJldHVybiBuZXcgQk4oYnl0ZXMsICdoZXgnLCAnbGUnKTtcbn1cbnV0aWxzLmludEZyb21MRSA9IGludEZyb21MRTtcblxuIiwidmFyIGhhc2ggPSBleHBvcnRzO1xuXG5oYXNoLnV0aWxzID0gcmVxdWlyZSgnLi9oYXNoL3V0aWxzJyk7XG5oYXNoLmNvbW1vbiA9IHJlcXVpcmUoJy4vaGFzaC9jb21tb24nKTtcbmhhc2guc2hhID0gcmVxdWlyZSgnLi9oYXNoL3NoYScpO1xuaGFzaC5yaXBlbWQgPSByZXF1aXJlKCcuL2hhc2gvcmlwZW1kJyk7XG5oYXNoLmhtYWMgPSByZXF1aXJlKCcuL2hhc2gvaG1hYycpO1xuXG4vLyBQcm94eSBoYXNoIGZ1bmN0aW9ucyB0byB0aGUgbWFpbiBvYmplY3Rcbmhhc2guc2hhMSA9IGhhc2guc2hhLnNoYTE7XG5oYXNoLnNoYTI1NiA9IGhhc2guc2hhLnNoYTI1Njtcbmhhc2guc2hhMjI0ID0gaGFzaC5zaGEuc2hhMjI0O1xuaGFzaC5zaGEzODQgPSBoYXNoLnNoYS5zaGEzODQ7XG5oYXNoLnNoYTUxMiA9IGhhc2guc2hhLnNoYTUxMjtcbmhhc2gucmlwZW1kMTYwID0gaGFzaC5yaXBlbWQucmlwZW1kMTYwO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG5mdW5jdGlvbiBCbG9ja0hhc2goKSB7XG4gIHRoaXMucGVuZGluZyA9IG51bGw7XG4gIHRoaXMucGVuZGluZ1RvdGFsID0gMDtcbiAgdGhpcy5ibG9ja1NpemUgPSB0aGlzLmNvbnN0cnVjdG9yLmJsb2NrU2l6ZTtcbiAgdGhpcy5vdXRTaXplID0gdGhpcy5jb25zdHJ1Y3Rvci5vdXRTaXplO1xuICB0aGlzLmhtYWNTdHJlbmd0aCA9IHRoaXMuY29uc3RydWN0b3IuaG1hY1N0cmVuZ3RoO1xuICB0aGlzLnBhZExlbmd0aCA9IHRoaXMuY29uc3RydWN0b3IucGFkTGVuZ3RoIC8gODtcbiAgdGhpcy5lbmRpYW4gPSAnYmlnJztcblxuICB0aGlzLl9kZWx0YTggPSB0aGlzLmJsb2NrU2l6ZSAvIDg7XG4gIHRoaXMuX2RlbHRhMzIgPSB0aGlzLmJsb2NrU2l6ZSAvIDMyO1xufVxuZXhwb3J0cy5CbG9ja0hhc2ggPSBCbG9ja0hhc2g7XG5cbkJsb2NrSGFzaC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKG1zZywgZW5jKSB7XG4gIC8vIENvbnZlcnQgbWVzc2FnZSB0byBhcnJheSwgcGFkIGl0LCBhbmQgam9pbiBpbnRvIDMyYml0IGJsb2Nrc1xuICBtc2cgPSB1dGlscy50b0FycmF5KG1zZywgZW5jKTtcbiAgaWYgKCF0aGlzLnBlbmRpbmcpXG4gICAgdGhpcy5wZW5kaW5nID0gbXNnO1xuICBlbHNlXG4gICAgdGhpcy5wZW5kaW5nID0gdGhpcy5wZW5kaW5nLmNvbmNhdChtc2cpO1xuICB0aGlzLnBlbmRpbmdUb3RhbCArPSBtc2cubGVuZ3RoO1xuXG4gIC8vIEVub3VnaCBkYXRhLCB0cnkgdXBkYXRpbmdcbiAgaWYgKHRoaXMucGVuZGluZy5sZW5ndGggPj0gdGhpcy5fZGVsdGE4KSB7XG4gICAgbXNnID0gdGhpcy5wZW5kaW5nO1xuXG4gICAgLy8gUHJvY2VzcyBwZW5kaW5nIGRhdGEgaW4gYmxvY2tzXG4gICAgdmFyIHIgPSBtc2cubGVuZ3RoICUgdGhpcy5fZGVsdGE4O1xuICAgIHRoaXMucGVuZGluZyA9IG1zZy5zbGljZShtc2cubGVuZ3RoIC0gciwgbXNnLmxlbmd0aCk7XG4gICAgaWYgKHRoaXMucGVuZGluZy5sZW5ndGggPT09IDApXG4gICAgICB0aGlzLnBlbmRpbmcgPSBudWxsO1xuXG4gICAgbXNnID0gdXRpbHMuam9pbjMyKG1zZywgMCwgbXNnLmxlbmd0aCAtIHIsIHRoaXMuZW5kaWFuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkgKz0gdGhpcy5fZGVsdGEzMilcbiAgICAgIHRoaXMuX3VwZGF0ZShtc2csIGksIGkgKyB0aGlzLl9kZWx0YTMyKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxuQmxvY2tIYXNoLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIHRoaXMudXBkYXRlKHRoaXMuX3BhZCgpKTtcbiAgYXNzZXJ0KHRoaXMucGVuZGluZyA9PT0gbnVsbCk7XG5cbiAgcmV0dXJuIHRoaXMuX2RpZ2VzdChlbmMpO1xufTtcblxuQmxvY2tIYXNoLnByb3RvdHlwZS5fcGFkID0gZnVuY3Rpb24gcGFkKCkge1xuICB2YXIgbGVuID0gdGhpcy5wZW5kaW5nVG90YWw7XG4gIHZhciBieXRlcyA9IHRoaXMuX2RlbHRhODtcbiAgdmFyIGsgPSBieXRlcyAtICgobGVuICsgdGhpcy5wYWRMZW5ndGgpICUgYnl0ZXMpO1xuICB2YXIgcmVzID0gbmV3IEFycmF5KGsgKyB0aGlzLnBhZExlbmd0aCk7XG4gIHJlc1swXSA9IDB4ODA7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgazsgaSsrKVxuICAgIHJlc1tpXSA9IDA7XG5cbiAgLy8gQXBwZW5kIGxlbmd0aFxuICBsZW4gPDw9IDM7XG4gIGlmICh0aGlzLmVuZGlhbiA9PT0gJ2JpZycpIHtcbiAgICBmb3IgKHZhciB0ID0gODsgdCA8IHRoaXMucGFkTGVuZ3RoOyB0KyspXG4gICAgICByZXNbaSsrXSA9IDA7XG5cbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiAyNCkgJiAweGZmO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gMTYpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDgpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IGxlbiAmIDB4ZmY7XG4gIH0gZWxzZSB7XG4gICAgcmVzW2krK10gPSBsZW4gJiAweGZmO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gOCkgJiAweGZmO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gMTYpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDI0KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuXG4gICAgZm9yICh0ID0gODsgdCA8IHRoaXMucGFkTGVuZ3RoOyB0KyspXG4gICAgICByZXNbaSsrXSA9IDA7XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcblxuZnVuY3Rpb24gSG1hYyhoYXNoLCBrZXksIGVuYykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgSG1hYykpXG4gICAgcmV0dXJuIG5ldyBIbWFjKGhhc2gsIGtleSwgZW5jKTtcbiAgdGhpcy5IYXNoID0gaGFzaDtcbiAgdGhpcy5ibG9ja1NpemUgPSBoYXNoLmJsb2NrU2l6ZSAvIDg7XG4gIHRoaXMub3V0U2l6ZSA9IGhhc2gub3V0U2l6ZSAvIDg7XG4gIHRoaXMuaW5uZXIgPSBudWxsO1xuICB0aGlzLm91dGVyID0gbnVsbDtcblxuICB0aGlzLl9pbml0KHV0aWxzLnRvQXJyYXkoa2V5LCBlbmMpKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gSG1hYztcblxuSG1hYy5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0KGtleSkge1xuICAvLyBTaG9ydGVuIGtleSwgaWYgbmVlZGVkXG4gIGlmIChrZXkubGVuZ3RoID4gdGhpcy5ibG9ja1NpemUpXG4gICAga2V5ID0gbmV3IHRoaXMuSGFzaCgpLnVwZGF0ZShrZXkpLmRpZ2VzdCgpO1xuICBhc3NlcnQoa2V5Lmxlbmd0aCA8PSB0aGlzLmJsb2NrU2l6ZSk7XG5cbiAgLy8gQWRkIHBhZGRpbmcgdG8ga2V5XG4gIGZvciAodmFyIGkgPSBrZXkubGVuZ3RoOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICBrZXkucHVzaCgwKTtcblxuICBmb3IgKGkgPSAwOyBpIDwga2V5Lmxlbmd0aDsgaSsrKVxuICAgIGtleVtpXSBePSAweDM2O1xuICB0aGlzLmlubmVyID0gbmV3IHRoaXMuSGFzaCgpLnVwZGF0ZShrZXkpO1xuXG4gIC8vIDB4MzYgXiAweDVjID0gMHg2YVxuICBmb3IgKGkgPSAwOyBpIDwga2V5Lmxlbmd0aDsgaSsrKVxuICAgIGtleVtpXSBePSAweDZhO1xuICB0aGlzLm91dGVyID0gbmV3IHRoaXMuSGFzaCgpLnVwZGF0ZShrZXkpO1xufTtcblxuSG1hYy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKG1zZywgZW5jKSB7XG4gIHRoaXMuaW5uZXIudXBkYXRlKG1zZywgZW5jKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5IbWFjLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIHRoaXMub3V0ZXIudXBkYXRlKHRoaXMuaW5uZXIuZGlnZXN0KCkpO1xuICByZXR1cm4gdGhpcy5vdXRlci5kaWdlc3QoZW5jKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBjb21tb24gPSByZXF1aXJlKCcuL2NvbW1vbicpO1xuXG52YXIgcm90bDMyID0gdXRpbHMucm90bDMyO1xudmFyIHN1bTMyID0gdXRpbHMuc3VtMzI7XG52YXIgc3VtMzJfMyA9IHV0aWxzLnN1bTMyXzM7XG52YXIgc3VtMzJfNCA9IHV0aWxzLnN1bTMyXzQ7XG52YXIgQmxvY2tIYXNoID0gY29tbW9uLkJsb2NrSGFzaDtcblxuZnVuY3Rpb24gUklQRU1EMTYwKCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUklQRU1EMTYwKSlcbiAgICByZXR1cm4gbmV3IFJJUEVNRDE2MCgpO1xuXG4gIEJsb2NrSGFzaC5jYWxsKHRoaXMpO1xuXG4gIHRoaXMuaCA9IFsgMHg2NzQ1MjMwMSwgMHhlZmNkYWI4OSwgMHg5OGJhZGNmZSwgMHgxMDMyNTQ3NiwgMHhjM2QyZTFmMCBdO1xuICB0aGlzLmVuZGlhbiA9ICdsaXR0bGUnO1xufVxudXRpbHMuaW5oZXJpdHMoUklQRU1EMTYwLCBCbG9ja0hhc2gpO1xuZXhwb3J0cy5yaXBlbWQxNjAgPSBSSVBFTUQxNjA7XG5cblJJUEVNRDE2MC5ibG9ja1NpemUgPSA1MTI7XG5SSVBFTUQxNjAub3V0U2l6ZSA9IDE2MDtcblJJUEVNRDE2MC5obWFjU3RyZW5ndGggPSAxOTI7XG5SSVBFTUQxNjAucGFkTGVuZ3RoID0gNjQ7XG5cblJJUEVNRDE2MC5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShtc2csIHN0YXJ0KSB7XG4gIHZhciBBID0gdGhpcy5oWzBdO1xuICB2YXIgQiA9IHRoaXMuaFsxXTtcbiAgdmFyIEMgPSB0aGlzLmhbMl07XG4gIHZhciBEID0gdGhpcy5oWzNdO1xuICB2YXIgRSA9IHRoaXMuaFs0XTtcbiAgdmFyIEFoID0gQTtcbiAgdmFyIEJoID0gQjtcbiAgdmFyIENoID0gQztcbiAgdmFyIERoID0gRDtcbiAgdmFyIEVoID0gRTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4MDsgaisrKSB7XG4gICAgdmFyIFQgPSBzdW0zMihcbiAgICAgIHJvdGwzMihcbiAgICAgICAgc3VtMzJfNChBLCBmKGosIEIsIEMsIEQpLCBtc2dbcltqXSArIHN0YXJ0XSwgSyhqKSksXG4gICAgICAgIHNbal0pLFxuICAgICAgRSk7XG4gICAgQSA9IEU7XG4gICAgRSA9IEQ7XG4gICAgRCA9IHJvdGwzMihDLCAxMCk7XG4gICAgQyA9IEI7XG4gICAgQiA9IFQ7XG4gICAgVCA9IHN1bTMyKFxuICAgICAgcm90bDMyKFxuICAgICAgICBzdW0zMl80KEFoLCBmKDc5IC0gaiwgQmgsIENoLCBEaCksIG1zZ1tyaFtqXSArIHN0YXJ0XSwgS2goaikpLFxuICAgICAgICBzaFtqXSksXG4gICAgICBFaCk7XG4gICAgQWggPSBFaDtcbiAgICBFaCA9IERoO1xuICAgIERoID0gcm90bDMyKENoLCAxMCk7XG4gICAgQ2ggPSBCaDtcbiAgICBCaCA9IFQ7XG4gIH1cbiAgVCA9IHN1bTMyXzModGhpcy5oWzFdLCBDLCBEaCk7XG4gIHRoaXMuaFsxXSA9IHN1bTMyXzModGhpcy5oWzJdLCBELCBFaCk7XG4gIHRoaXMuaFsyXSA9IHN1bTMyXzModGhpcy5oWzNdLCBFLCBBaCk7XG4gIHRoaXMuaFszXSA9IHN1bTMyXzModGhpcy5oWzRdLCBBLCBCaCk7XG4gIHRoaXMuaFs0XSA9IHN1bTMyXzModGhpcy5oWzBdLCBCLCBDaCk7XG4gIHRoaXMuaFswXSA9IFQ7XG59O1xuXG5SSVBFTUQxNjAucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaCwgJ2xpdHRsZScpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLCAnbGl0dGxlJyk7XG59O1xuXG5mdW5jdGlvbiBmKGosIHgsIHksIHopIHtcbiAgaWYgKGogPD0gMTUpXG4gICAgcmV0dXJuIHggXiB5IF4gejtcbiAgZWxzZSBpZiAoaiA8PSAzMSlcbiAgICByZXR1cm4gKHggJiB5KSB8ICgofngpICYgeik7XG4gIGVsc2UgaWYgKGogPD0gNDcpXG4gICAgcmV0dXJuICh4IHwgKH55KSkgXiB6O1xuICBlbHNlIGlmIChqIDw9IDYzKVxuICAgIHJldHVybiAoeCAmIHopIHwgKHkgJiAofnopKTtcbiAgZWxzZVxuICAgIHJldHVybiB4IF4gKHkgfCAofnopKTtcbn1cblxuZnVuY3Rpb24gSyhqKSB7XG4gIGlmIChqIDw9IDE1KVxuICAgIHJldHVybiAweDAwMDAwMDAwO1xuICBlbHNlIGlmIChqIDw9IDMxKVxuICAgIHJldHVybiAweDVhODI3OTk5O1xuICBlbHNlIGlmIChqIDw9IDQ3KVxuICAgIHJldHVybiAweDZlZDllYmExO1xuICBlbHNlIGlmIChqIDw9IDYzKVxuICAgIHJldHVybiAweDhmMWJiY2RjO1xuICBlbHNlXG4gICAgcmV0dXJuIDB4YTk1M2ZkNGU7XG59XG5cbmZ1bmN0aW9uIEtoKGopIHtcbiAgaWYgKGogPD0gMTUpXG4gICAgcmV0dXJuIDB4NTBhMjhiZTY7XG4gIGVsc2UgaWYgKGogPD0gMzEpXG4gICAgcmV0dXJuIDB4NWM0ZGQxMjQ7XG4gIGVsc2UgaWYgKGogPD0gNDcpXG4gICAgcmV0dXJuIDB4NmQ3MDNlZjM7XG4gIGVsc2UgaWYgKGogPD0gNjMpXG4gICAgcmV0dXJuIDB4N2E2ZDc2ZTk7XG4gIGVsc2VcbiAgICByZXR1cm4gMHgwMDAwMDAwMDtcbn1cblxudmFyIHIgPSBbXG4gIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsXG4gIDcsIDQsIDEzLCAxLCAxMCwgNiwgMTUsIDMsIDEyLCAwLCA5LCA1LCAyLCAxNCwgMTEsIDgsXG4gIDMsIDEwLCAxNCwgNCwgOSwgMTUsIDgsIDEsIDIsIDcsIDAsIDYsIDEzLCAxMSwgNSwgMTIsXG4gIDEsIDksIDExLCAxMCwgMCwgOCwgMTIsIDQsIDEzLCAzLCA3LCAxNSwgMTQsIDUsIDYsIDIsXG4gIDQsIDAsIDUsIDksIDcsIDEyLCAyLCAxMCwgMTQsIDEsIDMsIDgsIDExLCA2LCAxNSwgMTNcbl07XG5cbnZhciByaCA9IFtcbiAgNSwgMTQsIDcsIDAsIDksIDIsIDExLCA0LCAxMywgNiwgMTUsIDgsIDEsIDEwLCAzLCAxMixcbiAgNiwgMTEsIDMsIDcsIDAsIDEzLCA1LCAxMCwgMTQsIDE1LCA4LCAxMiwgNCwgOSwgMSwgMixcbiAgMTUsIDUsIDEsIDMsIDcsIDE0LCA2LCA5LCAxMSwgOCwgMTIsIDIsIDEwLCAwLCA0LCAxMyxcbiAgOCwgNiwgNCwgMSwgMywgMTEsIDE1LCAwLCA1LCAxMiwgMiwgMTMsIDksIDcsIDEwLCAxNCxcbiAgMTIsIDE1LCAxMCwgNCwgMSwgNSwgOCwgNywgNiwgMiwgMTMsIDE0LCAwLCAzLCA5LCAxMVxuXTtcblxudmFyIHMgPSBbXG4gIDExLCAxNCwgMTUsIDEyLCA1LCA4LCA3LCA5LCAxMSwgMTMsIDE0LCAxNSwgNiwgNywgOSwgOCxcbiAgNywgNiwgOCwgMTMsIDExLCA5LCA3LCAxNSwgNywgMTIsIDE1LCA5LCAxMSwgNywgMTMsIDEyLFxuICAxMSwgMTMsIDYsIDcsIDE0LCA5LCAxMywgMTUsIDE0LCA4LCAxMywgNiwgNSwgMTIsIDcsIDUsXG4gIDExLCAxMiwgMTQsIDE1LCAxNCwgMTUsIDksIDgsIDksIDE0LCA1LCA2LCA4LCA2LCA1LCAxMixcbiAgOSwgMTUsIDUsIDExLCA2LCA4LCAxMywgMTIsIDUsIDEyLCAxMywgMTQsIDExLCA4LCA1LCA2XG5dO1xuXG52YXIgc2ggPSBbXG4gIDgsIDksIDksIDExLCAxMywgMTUsIDE1LCA1LCA3LCA3LCA4LCAxMSwgMTQsIDE0LCAxMiwgNixcbiAgOSwgMTMsIDE1LCA3LCAxMiwgOCwgOSwgMTEsIDcsIDcsIDEyLCA3LCA2LCAxNSwgMTMsIDExLFxuICA5LCA3LCAxNSwgMTEsIDgsIDYsIDYsIDE0LCAxMiwgMTMsIDUsIDE0LCAxMywgMTMsIDcsIDUsXG4gIDE1LCA1LCA4LCAxMSwgMTQsIDE0LCA2LCAxNCwgNiwgOSwgMTIsIDksIDEyLCA1LCAxNSwgOCxcbiAgOCwgNSwgMTIsIDksIDEyLCA1LCAxNCwgNiwgOCwgMTMsIDYsIDUsIDE1LCAxMywgMTEsIDExXG5dO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLnNoYTEgPSByZXF1aXJlKCcuL3NoYS8xJyk7XG5leHBvcnRzLnNoYTIyNCA9IHJlcXVpcmUoJy4vc2hhLzIyNCcpO1xuZXhwb3J0cy5zaGEyNTYgPSByZXF1aXJlKCcuL3NoYS8yNTYnKTtcbmV4cG9ydHMuc2hhMzg0ID0gcmVxdWlyZSgnLi9zaGEvMzg0Jyk7XG5leHBvcnRzLnNoYTUxMiA9IHJlcXVpcmUoJy4vc2hhLzUxMicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGNvbW1vbiA9IHJlcXVpcmUoJy4uL2NvbW1vbicpO1xudmFyIHNoYUNvbW1vbiA9IHJlcXVpcmUoJy4vY29tbW9uJyk7XG5cbnZhciByb3RsMzIgPSB1dGlscy5yb3RsMzI7XG52YXIgc3VtMzIgPSB1dGlscy5zdW0zMjtcbnZhciBzdW0zMl81ID0gdXRpbHMuc3VtMzJfNTtcbnZhciBmdF8xID0gc2hhQ29tbW9uLmZ0XzE7XG52YXIgQmxvY2tIYXNoID0gY29tbW9uLkJsb2NrSGFzaDtcblxudmFyIHNoYTFfSyA9IFtcbiAgMHg1QTgyNzk5OSwgMHg2RUQ5RUJBMSxcbiAgMHg4RjFCQkNEQywgMHhDQTYyQzFENlxuXTtcblxuZnVuY3Rpb24gU0hBMSgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTEpKVxuICAgIHJldHVybiBuZXcgU0hBMSgpO1xuXG4gIEJsb2NrSGFzaC5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbXG4gICAgMHg2NzQ1MjMwMSwgMHhlZmNkYWI4OSwgMHg5OGJhZGNmZSxcbiAgICAweDEwMzI1NDc2LCAweGMzZDJlMWYwIF07XG4gIHRoaXMuVyA9IG5ldyBBcnJheSg4MCk7XG59XG5cbnV0aWxzLmluaGVyaXRzKFNIQTEsIEJsb2NrSGFzaCk7XG5tb2R1bGUuZXhwb3J0cyA9IFNIQTE7XG5cblNIQTEuYmxvY2tTaXplID0gNTEyO1xuU0hBMS5vdXRTaXplID0gMTYwO1xuU0hBMS5obWFjU3RyZW5ndGggPSA4MDtcblNIQTEucGFkTGVuZ3RoID0gNjQ7XG5cblNIQTEucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKG1zZywgc3RhcnQpIHtcbiAgdmFyIFcgPSB0aGlzLlc7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKVxuICAgIFdbaV0gPSBtc2dbc3RhcnQgKyBpXTtcblxuICBmb3IoOyBpIDwgVy5sZW5ndGg7IGkrKylcbiAgICBXW2ldID0gcm90bDMyKFdbaSAtIDNdIF4gV1tpIC0gOF0gXiBXW2kgLSAxNF0gXiBXW2kgLSAxNl0sIDEpO1xuXG4gIHZhciBhID0gdGhpcy5oWzBdO1xuICB2YXIgYiA9IHRoaXMuaFsxXTtcbiAgdmFyIGMgPSB0aGlzLmhbMl07XG4gIHZhciBkID0gdGhpcy5oWzNdO1xuICB2YXIgZSA9IHRoaXMuaFs0XTtcblxuICBmb3IgKGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzID0gfn4oaSAvIDIwKTtcbiAgICB2YXIgdCA9IHN1bTMyXzUocm90bDMyKGEsIDUpLCBmdF8xKHMsIGIsIGMsIGQpLCBlLCBXW2ldLCBzaGExX0tbc10pO1xuICAgIGUgPSBkO1xuICAgIGQgPSBjO1xuICAgIGMgPSByb3RsMzIoYiwgMzApO1xuICAgIGIgPSBhO1xuICAgIGEgPSB0O1xuICB9XG5cbiAgdGhpcy5oWzBdID0gc3VtMzIodGhpcy5oWzBdLCBhKTtcbiAgdGhpcy5oWzFdID0gc3VtMzIodGhpcy5oWzFdLCBiKTtcbiAgdGhpcy5oWzJdID0gc3VtMzIodGhpcy5oWzJdLCBjKTtcbiAgdGhpcy5oWzNdID0gc3VtMzIodGhpcy5oWzNdLCBkKTtcbiAgdGhpcy5oWzRdID0gc3VtMzIodGhpcy5oWzRdLCBlKTtcbn07XG5cblNIQTEucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaCwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLCAnYmlnJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIFNIQTI1NiA9IHJlcXVpcmUoJy4vMjU2Jyk7XG5cbmZ1bmN0aW9uIFNIQTIyNCgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTIyNCkpXG4gICAgcmV0dXJuIG5ldyBTSEEyMjQoKTtcblxuICBTSEEyNTYuY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gW1xuICAgIDB4YzEwNTllZDgsIDB4MzY3Y2Q1MDcsIDB4MzA3MGRkMTcsIDB4ZjcwZTU5MzksXG4gICAgMHhmZmMwMGIzMSwgMHg2ODU4MTUxMSwgMHg2NGY5OGZhNywgMHhiZWZhNGZhNCBdO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBMjI0LCBTSEEyNTYpO1xubW9kdWxlLmV4cG9ydHMgPSBTSEEyMjQ7XG5cblNIQTIyNC5ibG9ja1NpemUgPSA1MTI7XG5TSEEyMjQub3V0U2l6ZSA9IDIyNDtcblNIQTIyNC5obWFjU3RyZW5ndGggPSAxOTI7XG5TSEEyMjQucGFkTGVuZ3RoID0gNjQ7XG5cblNIQTIyNC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgLy8gSnVzdCB0cnVuY2F0ZSBvdXRwdXRcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsIDcpLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmguc2xpY2UoMCwgNyksICdiaWcnKTtcbn07XG5cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBjb21tb24gPSByZXF1aXJlKCcuLi9jb21tb24nKTtcbnZhciBzaGFDb21tb24gPSByZXF1aXJlKCcuL2NvbW1vbicpO1xudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcblxudmFyIHN1bTMyID0gdXRpbHMuc3VtMzI7XG52YXIgc3VtMzJfNCA9IHV0aWxzLnN1bTMyXzQ7XG52YXIgc3VtMzJfNSA9IHV0aWxzLnN1bTMyXzU7XG52YXIgY2gzMiA9IHNoYUNvbW1vbi5jaDMyO1xudmFyIG1hajMyID0gc2hhQ29tbW9uLm1hajMyO1xudmFyIHMwXzI1NiA9IHNoYUNvbW1vbi5zMF8yNTY7XG52YXIgczFfMjU2ID0gc2hhQ29tbW9uLnMxXzI1NjtcbnZhciBnMF8yNTYgPSBzaGFDb21tb24uZzBfMjU2O1xudmFyIGcxXzI1NiA9IHNoYUNvbW1vbi5nMV8yNTY7XG5cbnZhciBCbG9ja0hhc2ggPSBjb21tb24uQmxvY2tIYXNoO1xuXG52YXIgc2hhMjU2X0sgPSBbXG4gIDB4NDI4YTJmOTgsIDB4NzEzNzQ0OTEsIDB4YjVjMGZiY2YsIDB4ZTliNWRiYTUsXG4gIDB4Mzk1NmMyNWIsIDB4NTlmMTExZjEsIDB4OTIzZjgyYTQsIDB4YWIxYzVlZDUsXG4gIDB4ZDgwN2FhOTgsIDB4MTI4MzViMDEsIDB4MjQzMTg1YmUsIDB4NTUwYzdkYzMsXG4gIDB4NzJiZTVkNzQsIDB4ODBkZWIxZmUsIDB4OWJkYzA2YTcsIDB4YzE5YmYxNzQsXG4gIDB4ZTQ5YjY5YzEsIDB4ZWZiZTQ3ODYsIDB4MGZjMTlkYzYsIDB4MjQwY2ExY2MsXG4gIDB4MmRlOTJjNmYsIDB4NGE3NDg0YWEsIDB4NWNiMGE5ZGMsIDB4NzZmOTg4ZGEsXG4gIDB4OTgzZTUxNTIsIDB4YTgzMWM2NmQsIDB4YjAwMzI3YzgsIDB4YmY1OTdmYzcsXG4gIDB4YzZlMDBiZjMsIDB4ZDVhNzkxNDcsIDB4MDZjYTYzNTEsIDB4MTQyOTI5NjcsXG4gIDB4MjdiNzBhODUsIDB4MmUxYjIxMzgsIDB4NGQyYzZkZmMsIDB4NTMzODBkMTMsXG4gIDB4NjUwYTczNTQsIDB4NzY2YTBhYmIsIDB4ODFjMmM5MmUsIDB4OTI3MjJjODUsXG4gIDB4YTJiZmU4YTEsIDB4YTgxYTY2NGIsIDB4YzI0YjhiNzAsIDB4Yzc2YzUxYTMsXG4gIDB4ZDE5MmU4MTksIDB4ZDY5OTA2MjQsIDB4ZjQwZTM1ODUsIDB4MTA2YWEwNzAsXG4gIDB4MTlhNGMxMTYsIDB4MWUzNzZjMDgsIDB4Mjc0ODc3NGMsIDB4MzRiMGJjYjUsXG4gIDB4MzkxYzBjYjMsIDB4NGVkOGFhNGEsIDB4NWI5Y2NhNGYsIDB4NjgyZTZmZjMsXG4gIDB4NzQ4ZjgyZWUsIDB4NzhhNTYzNmYsIDB4ODRjODc4MTQsIDB4OGNjNzAyMDgsXG4gIDB4OTBiZWZmZmEsIDB4YTQ1MDZjZWIsIDB4YmVmOWEzZjcsIDB4YzY3MTc4ZjJcbl07XG5cbmZ1bmN0aW9uIFNIQTI1NigpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTI1NikpXG4gICAgcmV0dXJuIG5ldyBTSEEyNTYoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gW1xuICAgIDB4NmEwOWU2NjcsIDB4YmI2N2FlODUsIDB4M2M2ZWYzNzIsIDB4YTU0ZmY1M2EsXG4gICAgMHg1MTBlNTI3ZiwgMHg5YjA1Njg4YywgMHgxZjgzZDlhYiwgMHg1YmUwY2QxOVxuICBdO1xuICB0aGlzLmsgPSBzaGEyNTZfSztcbiAgdGhpcy5XID0gbmV3IEFycmF5KDY0KTtcbn1cbnV0aWxzLmluaGVyaXRzKFNIQTI1NiwgQmxvY2tIYXNoKTtcbm1vZHVsZS5leHBvcnRzID0gU0hBMjU2O1xuXG5TSEEyNTYuYmxvY2tTaXplID0gNTEyO1xuU0hBMjU2Lm91dFNpemUgPSAyNTY7XG5TSEEyNTYuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBMjU2LnBhZExlbmd0aCA9IDY0O1xuXG5TSEEyNTYucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKG1zZywgc3RhcnQpIHtcbiAgdmFyIFcgPSB0aGlzLlc7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKVxuICAgIFdbaV0gPSBtc2dbc3RhcnQgKyBpXTtcbiAgZm9yICg7IGkgPCBXLmxlbmd0aDsgaSsrKVxuICAgIFdbaV0gPSBzdW0zMl80KGcxXzI1NihXW2kgLSAyXSksIFdbaSAtIDddLCBnMF8yNTYoV1tpIC0gMTVdKSwgV1tpIC0gMTZdKTtcblxuICB2YXIgYSA9IHRoaXMuaFswXTtcbiAgdmFyIGIgPSB0aGlzLmhbMV07XG4gIHZhciBjID0gdGhpcy5oWzJdO1xuICB2YXIgZCA9IHRoaXMuaFszXTtcbiAgdmFyIGUgPSB0aGlzLmhbNF07XG4gIHZhciBmID0gdGhpcy5oWzVdO1xuICB2YXIgZyA9IHRoaXMuaFs2XTtcbiAgdmFyIGggPSB0aGlzLmhbN107XG5cbiAgYXNzZXJ0KHRoaXMuay5sZW5ndGggPT09IFcubGVuZ3RoKTtcbiAgZm9yIChpID0gMDsgaSA8IFcubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgVDEgPSBzdW0zMl81KGgsIHMxXzI1NihlKSwgY2gzMihlLCBmLCBnKSwgdGhpcy5rW2ldLCBXW2ldKTtcbiAgICB2YXIgVDIgPSBzdW0zMihzMF8yNTYoYSksIG1hajMyKGEsIGIsIGMpKTtcbiAgICBoID0gZztcbiAgICBnID0gZjtcbiAgICBmID0gZTtcbiAgICBlID0gc3VtMzIoZCwgVDEpO1xuICAgIGQgPSBjO1xuICAgIGMgPSBiO1xuICAgIGIgPSBhO1xuICAgIGEgPSBzdW0zMihUMSwgVDIpO1xuICB9XG5cbiAgdGhpcy5oWzBdID0gc3VtMzIodGhpcy5oWzBdLCBhKTtcbiAgdGhpcy5oWzFdID0gc3VtMzIodGhpcy5oWzFdLCBiKTtcbiAgdGhpcy5oWzJdID0gc3VtMzIodGhpcy5oWzJdLCBjKTtcbiAgdGhpcy5oWzNdID0gc3VtMzIodGhpcy5oWzNdLCBkKTtcbiAgdGhpcy5oWzRdID0gc3VtMzIodGhpcy5oWzRdLCBlKTtcbiAgdGhpcy5oWzVdID0gc3VtMzIodGhpcy5oWzVdLCBmKTtcbiAgdGhpcy5oWzZdID0gc3VtMzIodGhpcy5oWzZdLCBnKTtcbiAgdGhpcy5oWzddID0gc3VtMzIodGhpcy5oWzddLCBoKTtcbn07XG5cblNIQTI1Ni5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdiaWcnKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbnZhciBTSEE1MTIgPSByZXF1aXJlKCcuLzUxMicpO1xuXG5mdW5jdGlvbiBTSEEzODQoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTSEEzODQpKVxuICAgIHJldHVybiBuZXcgU0hBMzg0KCk7XG5cbiAgU0hBNTEyLmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFtcbiAgICAweGNiYmI5ZDVkLCAweGMxMDU5ZWQ4LFxuICAgIDB4NjI5YTI5MmEsIDB4MzY3Y2Q1MDcsXG4gICAgMHg5MTU5MDE1YSwgMHgzMDcwZGQxNyxcbiAgICAweDE1MmZlY2Q4LCAweGY3MGU1OTM5LFxuICAgIDB4NjczMzI2NjcsIDB4ZmZjMDBiMzEsXG4gICAgMHg4ZWI0NGE4NywgMHg2ODU4MTUxMSxcbiAgICAweGRiMGMyZTBkLCAweDY0Zjk4ZmE3LFxuICAgIDB4NDdiNTQ4MWQsIDB4YmVmYTRmYTQgXTtcbn1cbnV0aWxzLmluaGVyaXRzKFNIQTM4NCwgU0hBNTEyKTtcbm1vZHVsZS5leHBvcnRzID0gU0hBMzg0O1xuXG5TSEEzODQuYmxvY2tTaXplID0gMTAyNDtcblNIQTM4NC5vdXRTaXplID0gMzg0O1xuU0hBMzg0LmhtYWNTdHJlbmd0aCA9IDE5MjtcblNIQTM4NC5wYWRMZW5ndGggPSAxMjg7XG5cblNIQTM4NC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsIDEyKSwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsIDEyKSwgJ2JpZycpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBjb21tb24gPSByZXF1aXJlKCcuLi9jb21tb24nKTtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbnZhciByb3RyNjRfaGkgPSB1dGlscy5yb3RyNjRfaGk7XG52YXIgcm90cjY0X2xvID0gdXRpbHMucm90cjY0X2xvO1xudmFyIHNocjY0X2hpID0gdXRpbHMuc2hyNjRfaGk7XG52YXIgc2hyNjRfbG8gPSB1dGlscy5zaHI2NF9sbztcbnZhciBzdW02NCA9IHV0aWxzLnN1bTY0O1xudmFyIHN1bTY0X2hpID0gdXRpbHMuc3VtNjRfaGk7XG52YXIgc3VtNjRfbG8gPSB1dGlscy5zdW02NF9sbztcbnZhciBzdW02NF80X2hpID0gdXRpbHMuc3VtNjRfNF9oaTtcbnZhciBzdW02NF80X2xvID0gdXRpbHMuc3VtNjRfNF9sbztcbnZhciBzdW02NF81X2hpID0gdXRpbHMuc3VtNjRfNV9oaTtcbnZhciBzdW02NF81X2xvID0gdXRpbHMuc3VtNjRfNV9sbztcblxudmFyIEJsb2NrSGFzaCA9IGNvbW1vbi5CbG9ja0hhc2g7XG5cbnZhciBzaGE1MTJfSyA9IFtcbiAgMHg0MjhhMmY5OCwgMHhkNzI4YWUyMiwgMHg3MTM3NDQ5MSwgMHgyM2VmNjVjZCxcbiAgMHhiNWMwZmJjZiwgMHhlYzRkM2IyZiwgMHhlOWI1ZGJhNSwgMHg4MTg5ZGJiYyxcbiAgMHgzOTU2YzI1YiwgMHhmMzQ4YjUzOCwgMHg1OWYxMTFmMSwgMHhiNjA1ZDAxOSxcbiAgMHg5MjNmODJhNCwgMHhhZjE5NGY5YiwgMHhhYjFjNWVkNSwgMHhkYTZkODExOCxcbiAgMHhkODA3YWE5OCwgMHhhMzAzMDI0MiwgMHgxMjgzNWIwMSwgMHg0NTcwNmZiZSxcbiAgMHgyNDMxODViZSwgMHg0ZWU0YjI4YywgMHg1NTBjN2RjMywgMHhkNWZmYjRlMixcbiAgMHg3MmJlNWQ3NCwgMHhmMjdiODk2ZiwgMHg4MGRlYjFmZSwgMHgzYjE2OTZiMSxcbiAgMHg5YmRjMDZhNywgMHgyNWM3MTIzNSwgMHhjMTliZjE3NCwgMHhjZjY5MjY5NCxcbiAgMHhlNDliNjljMSwgMHg5ZWYxNGFkMiwgMHhlZmJlNDc4NiwgMHgzODRmMjVlMyxcbiAgMHgwZmMxOWRjNiwgMHg4YjhjZDViNSwgMHgyNDBjYTFjYywgMHg3N2FjOWM2NSxcbiAgMHgyZGU5MmM2ZiwgMHg1OTJiMDI3NSwgMHg0YTc0ODRhYSwgMHg2ZWE2ZTQ4MyxcbiAgMHg1Y2IwYTlkYywgMHhiZDQxZmJkNCwgMHg3NmY5ODhkYSwgMHg4MzExNTNiNSxcbiAgMHg5ODNlNTE1MiwgMHhlZTY2ZGZhYiwgMHhhODMxYzY2ZCwgMHgyZGI0MzIxMCxcbiAgMHhiMDAzMjdjOCwgMHg5OGZiMjEzZiwgMHhiZjU5N2ZjNywgMHhiZWVmMGVlNCxcbiAgMHhjNmUwMGJmMywgMHgzZGE4OGZjMiwgMHhkNWE3OTE0NywgMHg5MzBhYTcyNSxcbiAgMHgwNmNhNjM1MSwgMHhlMDAzODI2ZiwgMHgxNDI5Mjk2NywgMHgwYTBlNmU3MCxcbiAgMHgyN2I3MGE4NSwgMHg0NmQyMmZmYywgMHgyZTFiMjEzOCwgMHg1YzI2YzkyNixcbiAgMHg0ZDJjNmRmYywgMHg1YWM0MmFlZCwgMHg1MzM4MGQxMywgMHg5ZDk1YjNkZixcbiAgMHg2NTBhNzM1NCwgMHg4YmFmNjNkZSwgMHg3NjZhMGFiYiwgMHgzYzc3YjJhOCxcbiAgMHg4MWMyYzkyZSwgMHg0N2VkYWVlNiwgMHg5MjcyMmM4NSwgMHgxNDgyMzUzYixcbiAgMHhhMmJmZThhMSwgMHg0Y2YxMDM2NCwgMHhhODFhNjY0YiwgMHhiYzQyMzAwMSxcbiAgMHhjMjRiOGI3MCwgMHhkMGY4OTc5MSwgMHhjNzZjNTFhMywgMHgwNjU0YmUzMCxcbiAgMHhkMTkyZTgxOSwgMHhkNmVmNTIxOCwgMHhkNjk5MDYyNCwgMHg1NTY1YTkxMCxcbiAgMHhmNDBlMzU4NSwgMHg1NzcxMjAyYSwgMHgxMDZhYTA3MCwgMHgzMmJiZDFiOCxcbiAgMHgxOWE0YzExNiwgMHhiOGQyZDBjOCwgMHgxZTM3NmMwOCwgMHg1MTQxYWI1MyxcbiAgMHgyNzQ4Nzc0YywgMHhkZjhlZWI5OSwgMHgzNGIwYmNiNSwgMHhlMTliNDhhOCxcbiAgMHgzOTFjMGNiMywgMHhjNWM5NWE2MywgMHg0ZWQ4YWE0YSwgMHhlMzQxOGFjYixcbiAgMHg1YjljY2E0ZiwgMHg3NzYzZTM3MywgMHg2ODJlNmZmMywgMHhkNmIyYjhhMyxcbiAgMHg3NDhmODJlZSwgMHg1ZGVmYjJmYywgMHg3OGE1NjM2ZiwgMHg0MzE3MmY2MCxcbiAgMHg4NGM4NzgxNCwgMHhhMWYwYWI3MiwgMHg4Y2M3MDIwOCwgMHgxYTY0MzllYyxcbiAgMHg5MGJlZmZmYSwgMHgyMzYzMWUyOCwgMHhhNDUwNmNlYiwgMHhkZTgyYmRlOSxcbiAgMHhiZWY5YTNmNywgMHhiMmM2NzkxNSwgMHhjNjcxNzhmMiwgMHhlMzcyNTMyYixcbiAgMHhjYTI3M2VjZSwgMHhlYTI2NjE5YywgMHhkMTg2YjhjNywgMHgyMWMwYzIwNyxcbiAgMHhlYWRhN2RkNiwgMHhjZGUwZWIxZSwgMHhmNTdkNGY3ZiwgMHhlZTZlZDE3OCxcbiAgMHgwNmYwNjdhYSwgMHg3MjE3NmZiYSwgMHgwYTYzN2RjNSwgMHhhMmM4OThhNixcbiAgMHgxMTNmOTgwNCwgMHhiZWY5MGRhZSwgMHgxYjcxMGIzNSwgMHgxMzFjNDcxYixcbiAgMHgyOGRiNzdmNSwgMHgyMzA0N2Q4NCwgMHgzMmNhYWI3YiwgMHg0MGM3MjQ5MyxcbiAgMHgzYzllYmUwYSwgMHgxNWM5YmViYywgMHg0MzFkNjdjNCwgMHg5YzEwMGQ0YyxcbiAgMHg0Y2M1ZDRiZSwgMHhjYjNlNDJiNiwgMHg1OTdmMjk5YywgMHhmYzY1N2UyYSxcbiAgMHg1ZmNiNmZhYiwgMHgzYWQ2ZmFlYywgMHg2YzQ0MTk4YywgMHg0YTQ3NTgxN1xuXTtcblxuZnVuY3Rpb24gU0hBNTEyKCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBNTEyKSlcbiAgICByZXR1cm4gbmV3IFNIQTUxMigpO1xuXG4gIEJsb2NrSGFzaC5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbXG4gICAgMHg2YTA5ZTY2NywgMHhmM2JjYzkwOCxcbiAgICAweGJiNjdhZTg1LCAweDg0Y2FhNzNiLFxuICAgIDB4M2M2ZWYzNzIsIDB4ZmU5NGY4MmIsXG4gICAgMHhhNTRmZjUzYSwgMHg1ZjFkMzZmMSxcbiAgICAweDUxMGU1MjdmLCAweGFkZTY4MmQxLFxuICAgIDB4OWIwNTY4OGMsIDB4MmIzZTZjMWYsXG4gICAgMHgxZjgzZDlhYiwgMHhmYjQxYmQ2YixcbiAgICAweDViZTBjZDE5LCAweDEzN2UyMTc5IF07XG4gIHRoaXMuayA9IHNoYTUxMl9LO1xuICB0aGlzLlcgPSBuZXcgQXJyYXkoMTYwKTtcbn1cbnV0aWxzLmluaGVyaXRzKFNIQTUxMiwgQmxvY2tIYXNoKTtcbm1vZHVsZS5leHBvcnRzID0gU0hBNTEyO1xuXG5TSEE1MTIuYmxvY2tTaXplID0gMTAyNDtcblNIQTUxMi5vdXRTaXplID0gNTEyO1xuU0hBNTEyLmhtYWNTdHJlbmd0aCA9IDE5MjtcblNIQTUxMi5wYWRMZW5ndGggPSAxMjg7XG5cblNIQTUxMi5wcm90b3R5cGUuX3ByZXBhcmVCbG9jayA9IGZ1bmN0aW9uIF9wcmVwYXJlQmxvY2sobXNnLCBzdGFydCkge1xuICB2YXIgVyA9IHRoaXMuVztcblxuICAvLyAzMiB4IDMyYml0IHdvcmRzXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMzI7IGkrKylcbiAgICBXW2ldID0gbXNnW3N0YXJ0ICsgaV07XG4gIGZvciAoOyBpIDwgVy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBjMF9oaSA9IGcxXzUxMl9oaShXW2kgLSA0XSwgV1tpIC0gM10pOyAgLy8gaSAtIDJcbiAgICB2YXIgYzBfbG8gPSBnMV81MTJfbG8oV1tpIC0gNF0sIFdbaSAtIDNdKTtcbiAgICB2YXIgYzFfaGkgPSBXW2kgLSAxNF07ICAvLyBpIC0gN1xuICAgIHZhciBjMV9sbyA9IFdbaSAtIDEzXTtcbiAgICB2YXIgYzJfaGkgPSBnMF81MTJfaGkoV1tpIC0gMzBdLCBXW2kgLSAyOV0pOyAgLy8gaSAtIDE1XG4gICAgdmFyIGMyX2xvID0gZzBfNTEyX2xvKFdbaSAtIDMwXSwgV1tpIC0gMjldKTtcbiAgICB2YXIgYzNfaGkgPSBXW2kgLSAzMl07ICAvLyBpIC0gMTZcbiAgICB2YXIgYzNfbG8gPSBXW2kgLSAzMV07XG5cbiAgICBXW2ldID0gc3VtNjRfNF9oaShcbiAgICAgIGMwX2hpLCBjMF9sbyxcbiAgICAgIGMxX2hpLCBjMV9sbyxcbiAgICAgIGMyX2hpLCBjMl9sbyxcbiAgICAgIGMzX2hpLCBjM19sbyk7XG4gICAgV1tpICsgMV0gPSBzdW02NF80X2xvKFxuICAgICAgYzBfaGksIGMwX2xvLFxuICAgICAgYzFfaGksIGMxX2xvLFxuICAgICAgYzJfaGksIGMyX2xvLFxuICAgICAgYzNfaGksIGMzX2xvKTtcbiAgfVxufTtcblxuU0hBNTEyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShtc2csIHN0YXJ0KSB7XG4gIHRoaXMuX3ByZXBhcmVCbG9jayhtc2csIHN0YXJ0KTtcblxuICB2YXIgVyA9IHRoaXMuVztcblxuICB2YXIgYWggPSB0aGlzLmhbMF07XG4gIHZhciBhbCA9IHRoaXMuaFsxXTtcbiAgdmFyIGJoID0gdGhpcy5oWzJdO1xuICB2YXIgYmwgPSB0aGlzLmhbM107XG4gIHZhciBjaCA9IHRoaXMuaFs0XTtcbiAgdmFyIGNsID0gdGhpcy5oWzVdO1xuICB2YXIgZGggPSB0aGlzLmhbNl07XG4gIHZhciBkbCA9IHRoaXMuaFs3XTtcbiAgdmFyIGVoID0gdGhpcy5oWzhdO1xuICB2YXIgZWwgPSB0aGlzLmhbOV07XG4gIHZhciBmaCA9IHRoaXMuaFsxMF07XG4gIHZhciBmbCA9IHRoaXMuaFsxMV07XG4gIHZhciBnaCA9IHRoaXMuaFsxMl07XG4gIHZhciBnbCA9IHRoaXMuaFsxM107XG4gIHZhciBoaCA9IHRoaXMuaFsxNF07XG4gIHZhciBobCA9IHRoaXMuaFsxNV07XG5cbiAgYXNzZXJ0KHRoaXMuay5sZW5ndGggPT09IFcubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBXLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIGMwX2hpID0gaGg7XG4gICAgdmFyIGMwX2xvID0gaGw7XG4gICAgdmFyIGMxX2hpID0gczFfNTEyX2hpKGVoLCBlbCk7XG4gICAgdmFyIGMxX2xvID0gczFfNTEyX2xvKGVoLCBlbCk7XG4gICAgdmFyIGMyX2hpID0gY2g2NF9oaShlaCwgZWwsIGZoLCBmbCwgZ2gsIGdsKTtcbiAgICB2YXIgYzJfbG8gPSBjaDY0X2xvKGVoLCBlbCwgZmgsIGZsLCBnaCwgZ2wpO1xuICAgIHZhciBjM19oaSA9IHRoaXMua1tpXTtcbiAgICB2YXIgYzNfbG8gPSB0aGlzLmtbaSArIDFdO1xuICAgIHZhciBjNF9oaSA9IFdbaV07XG4gICAgdmFyIGM0X2xvID0gV1tpICsgMV07XG5cbiAgICB2YXIgVDFfaGkgPSBzdW02NF81X2hpKFxuICAgICAgYzBfaGksIGMwX2xvLFxuICAgICAgYzFfaGksIGMxX2xvLFxuICAgICAgYzJfaGksIGMyX2xvLFxuICAgICAgYzNfaGksIGMzX2xvLFxuICAgICAgYzRfaGksIGM0X2xvKTtcbiAgICB2YXIgVDFfbG8gPSBzdW02NF81X2xvKFxuICAgICAgYzBfaGksIGMwX2xvLFxuICAgICAgYzFfaGksIGMxX2xvLFxuICAgICAgYzJfaGksIGMyX2xvLFxuICAgICAgYzNfaGksIGMzX2xvLFxuICAgICAgYzRfaGksIGM0X2xvKTtcblxuICAgIGMwX2hpID0gczBfNTEyX2hpKGFoLCBhbCk7XG4gICAgYzBfbG8gPSBzMF81MTJfbG8oYWgsIGFsKTtcbiAgICBjMV9oaSA9IG1hajY0X2hpKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wpO1xuICAgIGMxX2xvID0gbWFqNjRfbG8oYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCk7XG5cbiAgICB2YXIgVDJfaGkgPSBzdW02NF9oaShjMF9oaSwgYzBfbG8sIGMxX2hpLCBjMV9sbyk7XG4gICAgdmFyIFQyX2xvID0gc3VtNjRfbG8oYzBfaGksIGMwX2xvLCBjMV9oaSwgYzFfbG8pO1xuXG4gICAgaGggPSBnaDtcbiAgICBobCA9IGdsO1xuXG4gICAgZ2ggPSBmaDtcbiAgICBnbCA9IGZsO1xuXG4gICAgZmggPSBlaDtcbiAgICBmbCA9IGVsO1xuXG4gICAgZWggPSBzdW02NF9oaShkaCwgZGwsIFQxX2hpLCBUMV9sbyk7XG4gICAgZWwgPSBzdW02NF9sbyhkbCwgZGwsIFQxX2hpLCBUMV9sbyk7XG5cbiAgICBkaCA9IGNoO1xuICAgIGRsID0gY2w7XG5cbiAgICBjaCA9IGJoO1xuICAgIGNsID0gYmw7XG5cbiAgICBiaCA9IGFoO1xuICAgIGJsID0gYWw7XG5cbiAgICBhaCA9IHN1bTY0X2hpKFQxX2hpLCBUMV9sbywgVDJfaGksIFQyX2xvKTtcbiAgICBhbCA9IHN1bTY0X2xvKFQxX2hpLCBUMV9sbywgVDJfaGksIFQyX2xvKTtcbiAgfVxuXG4gIHN1bTY0KHRoaXMuaCwgMCwgYWgsIGFsKTtcbiAgc3VtNjQodGhpcy5oLCAyLCBiaCwgYmwpO1xuICBzdW02NCh0aGlzLmgsIDQsIGNoLCBjbCk7XG4gIHN1bTY0KHRoaXMuaCwgNiwgZGgsIGRsKTtcbiAgc3VtNjQodGhpcy5oLCA4LCBlaCwgZWwpO1xuICBzdW02NCh0aGlzLmgsIDEwLCBmaCwgZmwpO1xuICBzdW02NCh0aGlzLmgsIDEyLCBnaCwgZ2wpO1xuICBzdW02NCh0aGlzLmgsIDE0LCBoaCwgaGwpO1xufTtcblxuU0hBNTEyLnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2JpZycpO1xufTtcblxuZnVuY3Rpb24gY2g2NF9oaSh4aCwgeGwsIHloLCB5bCwgemgpIHtcbiAgdmFyIHIgPSAoeGggJiB5aCkgXiAoKH54aCkgJiB6aCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gY2g2NF9sbyh4aCwgeGwsIHloLCB5bCwgemgsIHpsKSB7XG4gIHZhciByID0gKHhsICYgeWwpIF4gKCh+eGwpICYgemwpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIG1hajY0X2hpKHhoLCB4bCwgeWgsIHlsLCB6aCkge1xuICB2YXIgciA9ICh4aCAmIHloKSBeICh4aCAmIHpoKSBeICh5aCAmIHpoKTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBtYWo2NF9sbyh4aCwgeGwsIHloLCB5bCwgemgsIHpsKSB7XG4gIHZhciByID0gKHhsICYgeWwpIF4gKHhsICYgemwpIF4gKHlsICYgemwpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIHMwXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMjgpO1xuICB2YXIgYzFfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCAyKTsgIC8vIDM0XG4gIHZhciBjMl9oaSA9IHJvdHI2NF9oaSh4bCwgeGgsIDcpOyAgLy8gMzlcblxuICB2YXIgciA9IGMwX2hpIF4gYzFfaGkgXiBjMl9oaTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBzMF81MTJfbG8oeGgsIHhsKSB7XG4gIHZhciBjMF9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDI4KTtcbiAgdmFyIGMxX2xvID0gcm90cjY0X2xvKHhsLCB4aCwgMik7ICAvLyAzNFxuICB2YXIgYzJfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCA3KTsgIC8vIDM5XG5cbiAgdmFyIHIgPSBjMF9sbyBeIGMxX2xvIF4gYzJfbG87XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczFfNTEyX2hpKHhoLCB4bCkge1xuICB2YXIgYzBfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAxNCk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDE4KTtcbiAgdmFyIGMyX2hpID0gcm90cjY0X2hpKHhsLCB4aCwgOSk7ICAvLyA0MVxuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIHMxXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMTQpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAxOCk7XG4gIHZhciBjMl9sbyA9IHJvdHI2NF9sbyh4bCwgeGgsIDkpOyAgLy8gNDFcblxuICB2YXIgciA9IGMwX2xvIF4gYzFfbG8gXiBjMl9sbztcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBnMF81MTJfaGkoeGgsIHhsKSB7XG4gIHZhciBjMF9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDEpO1xuICB2YXIgYzFfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCA4KTtcbiAgdmFyIGMyX2hpID0gc2hyNjRfaGkoeGgsIHhsLCA3KTtcblxuICB2YXIgciA9IGMwX2hpIF4gYzFfaGkgXiBjMl9oaTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBnMF81MTJfbG8oeGgsIHhsKSB7XG4gIHZhciBjMF9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDEpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCA4KTtcbiAgdmFyIGMyX2xvID0gc2hyNjRfbG8oeGgsIHhsLCA3KTtcblxuICB2YXIgciA9IGMwX2xvIF4gYzFfbG8gXiBjMl9sbztcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBnMV81MTJfaGkoeGgsIHhsKSB7XG4gIHZhciBjMF9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDE5KTtcbiAgdmFyIGMxX2hpID0gcm90cjY0X2hpKHhsLCB4aCwgMjkpOyAgLy8gNjFcbiAgdmFyIGMyX2hpID0gc2hyNjRfaGkoeGgsIHhsLCA2KTtcblxuICB2YXIgciA9IGMwX2hpIF4gYzFfaGkgXiBjMl9oaTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBnMV81MTJfbG8oeGgsIHhsKSB7XG4gIHZhciBjMF9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDE5KTtcbiAgdmFyIGMxX2xvID0gcm90cjY0X2xvKHhsLCB4aCwgMjkpOyAgLy8gNjFcbiAgdmFyIGMyX2xvID0gc2hyNjRfbG8oeGgsIHhsLCA2KTtcblxuICB2YXIgciA9IGMwX2xvIF4gYzFfbG8gXiBjMl9sbztcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIHJvdHIzMiA9IHV0aWxzLnJvdHIzMjtcblxuZnVuY3Rpb24gZnRfMShzLCB4LCB5LCB6KSB7XG4gIGlmIChzID09PSAwKVxuICAgIHJldHVybiBjaDMyKHgsIHksIHopO1xuICBpZiAocyA9PT0gMSB8fCBzID09PSAzKVxuICAgIHJldHVybiBwMzIoeCwgeSwgeik7XG4gIGlmIChzID09PSAyKVxuICAgIHJldHVybiBtYWozMih4LCB5LCB6KTtcbn1cbmV4cG9ydHMuZnRfMSA9IGZ0XzE7XG5cbmZ1bmN0aW9uIGNoMzIoeCwgeSwgeikge1xuICByZXR1cm4gKHggJiB5KSBeICgofngpICYgeik7XG59XG5leHBvcnRzLmNoMzIgPSBjaDMyO1xuXG5mdW5jdGlvbiBtYWozMih4LCB5LCB6KSB7XG4gIHJldHVybiAoeCAmIHkpIF4gKHggJiB6KSBeICh5ICYgeik7XG59XG5leHBvcnRzLm1hajMyID0gbWFqMzI7XG5cbmZ1bmN0aW9uIHAzMih4LCB5LCB6KSB7XG4gIHJldHVybiB4IF4geSBeIHo7XG59XG5leHBvcnRzLnAzMiA9IHAzMjtcblxuZnVuY3Rpb24gczBfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCAyKSBeIHJvdHIzMih4LCAxMykgXiByb3RyMzIoeCwgMjIpO1xufVxuZXhwb3J0cy5zMF8yNTYgPSBzMF8yNTY7XG5cbmZ1bmN0aW9uIHMxXzI1Nih4KSB7XG4gIHJldHVybiByb3RyMzIoeCwgNikgXiByb3RyMzIoeCwgMTEpIF4gcm90cjMyKHgsIDI1KTtcbn1cbmV4cG9ydHMuczFfMjU2ID0gczFfMjU2O1xuXG5mdW5jdGlvbiBnMF8yNTYoeCkge1xuICByZXR1cm4gcm90cjMyKHgsIDcpIF4gcm90cjMyKHgsIDE4KSBeICh4ID4+PiAzKTtcbn1cbmV4cG9ydHMuZzBfMjU2ID0gZzBfMjU2O1xuXG5mdW5jdGlvbiBnMV8yNTYoeCkge1xuICByZXR1cm4gcm90cjMyKHgsIDE3KSBeIHJvdHIzMih4LCAxOSkgXiAoeCA+Pj4gMTApO1xufVxuZXhwb3J0cy5nMV8yNTYgPSBnMV8yNTY7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG5leHBvcnRzLmluaGVyaXRzID0gaW5oZXJpdHM7XG5cbmZ1bmN0aW9uIGlzU3Vycm9nYXRlUGFpcihtc2csIGkpIHtcbiAgaWYgKChtc2cuY2hhckNvZGVBdChpKSAmIDB4RkMwMCkgIT09IDB4RDgwMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoaSA8IDAgfHwgaSArIDEgPj0gbXNnLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gKG1zZy5jaGFyQ29kZUF0KGkgKyAxKSAmIDB4RkMwMCkgPT09IDB4REMwMDtcbn1cblxuZnVuY3Rpb24gdG9BcnJheShtc2csIGVuYykge1xuICBpZiAoQXJyYXkuaXNBcnJheShtc2cpKVxuICAgIHJldHVybiBtc2cuc2xpY2UoKTtcbiAgaWYgKCFtc2cpXG4gICAgcmV0dXJuIFtdO1xuICB2YXIgcmVzID0gW107XG4gIGlmICh0eXBlb2YgbXNnID09PSAnc3RyaW5nJykge1xuICAgIGlmICghZW5jKSB7XG4gICAgICAvLyBJbnNwaXJlZCBieSBzdHJpbmdUb1V0ZjhCeXRlQXJyYXkoKSBpbiBjbG9zdXJlLWxpYnJhcnkgYnkgR29vZ2xlXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Nsb3N1cmUtbGlicmFyeS9ibG9iLzg1OThkODcyNDJhZjU5YWFjMjMzMjcwNzQyYzg5ODRlMmIyYmRiZTAvY2xvc3VyZS9nb29nL2NyeXB0L2NyeXB0LmpzI0wxMTctTDE0M1xuICAgICAgLy8gQXBhY2hlIExpY2Vuc2UgMi4wXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Nsb3N1cmUtbGlicmFyeS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gICAgICB2YXIgcCA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYyA9IG1zZy5jaGFyQ29kZUF0KGkpO1xuICAgICAgICBpZiAoYyA8IDEyOCkge1xuICAgICAgICAgIHJlc1twKytdID0gYztcbiAgICAgICAgfSBlbHNlIGlmIChjIDwgMjA0OCkge1xuICAgICAgICAgIHJlc1twKytdID0gKGMgPj4gNikgfCAxOTI7XG4gICAgICAgICAgcmVzW3ArK10gPSAoYyAmIDYzKSB8IDEyODtcbiAgICAgICAgfSBlbHNlIGlmIChpc1N1cnJvZ2F0ZVBhaXIobXNnLCBpKSkge1xuICAgICAgICAgIGMgPSAweDEwMDAwICsgKChjICYgMHgwM0ZGKSA8PCAxMCkgKyAobXNnLmNoYXJDb2RlQXQoKytpKSAmIDB4MDNGRik7XG4gICAgICAgICAgcmVzW3ArK10gPSAoYyA+PiAxOCkgfCAyNDA7XG4gICAgICAgICAgcmVzW3ArK10gPSAoKGMgPj4gMTIpICYgNjMpIHwgMTI4O1xuICAgICAgICAgIHJlc1twKytdID0gKChjID4+IDYpICYgNjMpIHwgMTI4O1xuICAgICAgICAgIHJlc1twKytdID0gKGMgJiA2MykgfCAxMjg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzW3ArK10gPSAoYyA+PiAxMikgfCAyMjQ7XG4gICAgICAgICAgcmVzW3ArK10gPSAoKGMgPj4gNikgJiA2MykgfCAxMjg7XG4gICAgICAgICAgcmVzW3ArK10gPSAoYyAmIDYzKSB8IDEyODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZW5jID09PSAnaGV4Jykge1xuICAgICAgbXNnID0gbXNnLnJlcGxhY2UoL1teYS16MC05XSsvaWcsICcnKTtcbiAgICAgIGlmIChtc2cubGVuZ3RoICUgMiAhPT0gMClcbiAgICAgICAgbXNnID0gJzAnICsgbXNnO1xuICAgICAgZm9yIChpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkgKz0gMilcbiAgICAgICAgcmVzLnB1c2gocGFyc2VJbnQobXNnW2ldICsgbXNnW2kgKyAxXSwgMTYpKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yIChpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICAgIHJlc1tpXSA9IG1zZ1tpXSB8IDA7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbmV4cG9ydHMudG9BcnJheSA9IHRvQXJyYXk7XG5cbmZ1bmN0aW9uIHRvSGV4KG1zZykge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKVxuICAgIHJlcyArPSB6ZXJvMihtc2dbaV0udG9TdHJpbmcoMTYpKTtcbiAgcmV0dXJuIHJlcztcbn1cbmV4cG9ydHMudG9IZXggPSB0b0hleDtcblxuZnVuY3Rpb24gaHRvbmwodykge1xuICB2YXIgcmVzID0gKHcgPj4+IDI0KSB8XG4gICAgICAgICAgICAoKHcgPj4+IDgpICYgMHhmZjAwKSB8XG4gICAgICAgICAgICAoKHcgPDwgOCkgJiAweGZmMDAwMCkgfFxuICAgICAgICAgICAgKCh3ICYgMHhmZikgPDwgMjQpO1xuICByZXR1cm4gcmVzID4+PiAwO1xufVxuZXhwb3J0cy5odG9ubCA9IGh0b25sO1xuXG5mdW5jdGlvbiB0b0hleDMyKG1zZywgZW5kaWFuKSB7XG4gIHZhciByZXMgPSAnJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdyA9IG1zZ1tpXTtcbiAgICBpZiAoZW5kaWFuID09PSAnbGl0dGxlJylcbiAgICAgIHcgPSBodG9ubCh3KTtcbiAgICByZXMgKz0gemVybzgody50b1N0cmluZygxNikpO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5leHBvcnRzLnRvSGV4MzIgPSB0b0hleDMyO1xuXG5mdW5jdGlvbiB6ZXJvMih3b3JkKSB7XG4gIGlmICh3b3JkLmxlbmd0aCA9PT0gMSlcbiAgICByZXR1cm4gJzAnICsgd29yZDtcbiAgZWxzZVxuICAgIHJldHVybiB3b3JkO1xufVxuZXhwb3J0cy56ZXJvMiA9IHplcm8yO1xuXG5mdW5jdGlvbiB6ZXJvOCh3b3JkKSB7XG4gIGlmICh3b3JkLmxlbmd0aCA9PT0gNylcbiAgICByZXR1cm4gJzAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDYpXG4gICAgcmV0dXJuICcwMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gNSlcbiAgICByZXR1cm4gJzAwMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gNClcbiAgICByZXR1cm4gJzAwMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDMpXG4gICAgcmV0dXJuICcwMDAwMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gMilcbiAgICByZXR1cm4gJzAwMDAwMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gMSlcbiAgICByZXR1cm4gJzAwMDAwMDAnICsgd29yZDtcbiAgZWxzZVxuICAgIHJldHVybiB3b3JkO1xufVxuZXhwb3J0cy56ZXJvOCA9IHplcm84O1xuXG5mdW5jdGlvbiBqb2luMzIobXNnLCBzdGFydCwgZW5kLCBlbmRpYW4pIHtcbiAgdmFyIGxlbiA9IGVuZCAtIHN0YXJ0O1xuICBhc3NlcnQobGVuICUgNCA9PT0gMCk7XG4gIHZhciByZXMgPSBuZXcgQXJyYXkobGVuIC8gNCk7XG4gIGZvciAodmFyIGkgPSAwLCBrID0gc3RhcnQ7IGkgPCByZXMubGVuZ3RoOyBpKyssIGsgKz0gNCkge1xuICAgIHZhciB3O1xuICAgIGlmIChlbmRpYW4gPT09ICdiaWcnKVxuICAgICAgdyA9IChtc2dba10gPDwgMjQpIHwgKG1zZ1trICsgMV0gPDwgMTYpIHwgKG1zZ1trICsgMl0gPDwgOCkgfCBtc2dbayArIDNdO1xuICAgIGVsc2VcbiAgICAgIHcgPSAobXNnW2sgKyAzXSA8PCAyNCkgfCAobXNnW2sgKyAyXSA8PCAxNikgfCAobXNnW2sgKyAxXSA8PCA4KSB8IG1zZ1trXTtcbiAgICByZXNbaV0gPSB3ID4+PiAwO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5leHBvcnRzLmpvaW4zMiA9IGpvaW4zMjtcblxuZnVuY3Rpb24gc3BsaXQzMihtc2csIGVuZGlhbikge1xuICB2YXIgcmVzID0gbmV3IEFycmF5KG1zZy5sZW5ndGggKiA0KTtcbiAgZm9yICh2YXIgaSA9IDAsIGsgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrLCBrICs9IDQpIHtcbiAgICB2YXIgbSA9IG1zZ1tpXTtcbiAgICBpZiAoZW5kaWFuID09PSAnYmlnJykge1xuICAgICAgcmVzW2tdID0gbSA+Pj4gMjQ7XG4gICAgICByZXNbayArIDFdID0gKG0gPj4+IDE2KSAmIDB4ZmY7XG4gICAgICByZXNbayArIDJdID0gKG0gPj4+IDgpICYgMHhmZjtcbiAgICAgIHJlc1trICsgM10gPSBtICYgMHhmZjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzW2sgKyAzXSA9IG0gPj4+IDI0O1xuICAgICAgcmVzW2sgKyAyXSA9IChtID4+PiAxNikgJiAweGZmO1xuICAgICAgcmVzW2sgKyAxXSA9IChtID4+PiA4KSAmIDB4ZmY7XG4gICAgICByZXNba10gPSBtICYgMHhmZjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbmV4cG9ydHMuc3BsaXQzMiA9IHNwbGl0MzI7XG5cbmZ1bmN0aW9uIHJvdHIzMih3LCBiKSB7XG4gIHJldHVybiAodyA+Pj4gYikgfCAodyA8PCAoMzIgLSBiKSk7XG59XG5leHBvcnRzLnJvdHIzMiA9IHJvdHIzMjtcblxuZnVuY3Rpb24gcm90bDMyKHcsIGIpIHtcbiAgcmV0dXJuICh3IDw8IGIpIHwgKHcgPj4+ICgzMiAtIGIpKTtcbn1cbmV4cG9ydHMucm90bDMyID0gcm90bDMyO1xuXG5mdW5jdGlvbiBzdW0zMihhLCBiKSB7XG4gIHJldHVybiAoYSArIGIpID4+PiAwO1xufVxuZXhwb3J0cy5zdW0zMiA9IHN1bTMyO1xuXG5mdW5jdGlvbiBzdW0zMl8zKGEsIGIsIGMpIHtcbiAgcmV0dXJuIChhICsgYiArIGMpID4+PiAwO1xufVxuZXhwb3J0cy5zdW0zMl8zID0gc3VtMzJfMztcblxuZnVuY3Rpb24gc3VtMzJfNChhLCBiLCBjLCBkKSB7XG4gIHJldHVybiAoYSArIGIgKyBjICsgZCkgPj4+IDA7XG59XG5leHBvcnRzLnN1bTMyXzQgPSBzdW0zMl80O1xuXG5mdW5jdGlvbiBzdW0zMl81KGEsIGIsIGMsIGQsIGUpIHtcbiAgcmV0dXJuIChhICsgYiArIGMgKyBkICsgZSkgPj4+IDA7XG59XG5leHBvcnRzLnN1bTMyXzUgPSBzdW0zMl81O1xuXG5mdW5jdGlvbiBzdW02NChidWYsIHBvcywgYWgsIGFsKSB7XG4gIHZhciBiaCA9IGJ1Zltwb3NdO1xuICB2YXIgYmwgPSBidWZbcG9zICsgMV07XG5cbiAgdmFyIGxvID0gKGFsICsgYmwpID4+PiAwO1xuICB2YXIgaGkgPSAobG8gPCBhbCA/IDEgOiAwKSArIGFoICsgYmg7XG4gIGJ1Zltwb3NdID0gaGkgPj4+IDA7XG4gIGJ1Zltwb3MgKyAxXSA9IGxvO1xufVxuZXhwb3J0cy5zdW02NCA9IHN1bTY0O1xuXG5mdW5jdGlvbiBzdW02NF9oaShhaCwgYWwsIGJoLCBibCkge1xuICB2YXIgbG8gPSAoYWwgKyBibCkgPj4+IDA7XG4gIHZhciBoaSA9IChsbyA8IGFsID8gMSA6IDApICsgYWggKyBiaDtcbiAgcmV0dXJuIGhpID4+PiAwO1xufVxuZXhwb3J0cy5zdW02NF9oaSA9IHN1bTY0X2hpO1xuXG5mdW5jdGlvbiBzdW02NF9sbyhhaCwgYWwsIGJoLCBibCkge1xuICB2YXIgbG8gPSBhbCArIGJsO1xuICByZXR1cm4gbG8gPj4+IDA7XG59XG5leHBvcnRzLnN1bTY0X2xvID0gc3VtNjRfbG87XG5cbmZ1bmN0aW9uIHN1bTY0XzRfaGkoYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIHZhciBsbyA9IGFsO1xuICBsbyA9IChsbyArIGJsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBhbCA/IDEgOiAwO1xuICBsbyA9IChsbyArIGNsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBjbCA/IDEgOiAwO1xuICBsbyA9IChsbyArIGRsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBkbCA/IDEgOiAwO1xuXG4gIHZhciBoaSA9IGFoICsgYmggKyBjaCArIGRoICsgY2Fycnk7XG4gIHJldHVybiBoaSA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtNjRfNF9oaSA9IHN1bTY0XzRfaGk7XG5cbmZ1bmN0aW9uIHN1bTY0XzRfbG8oYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsKSB7XG4gIHZhciBsbyA9IGFsICsgYmwgKyBjbCArIGRsO1xuICByZXR1cm4gbG8gPj4+IDA7XG59XG5leHBvcnRzLnN1bTY0XzRfbG8gPSBzdW02NF80X2xvO1xuXG5mdW5jdGlvbiBzdW02NF81X2hpKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wsIGRoLCBkbCwgZWgsIGVsKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIHZhciBsbyA9IGFsO1xuICBsbyA9IChsbyArIGJsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBhbCA/IDEgOiAwO1xuICBsbyA9IChsbyArIGNsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBjbCA/IDEgOiAwO1xuICBsbyA9IChsbyArIGRsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBkbCA/IDEgOiAwO1xuICBsbyA9IChsbyArIGVsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBlbCA/IDEgOiAwO1xuXG4gIHZhciBoaSA9IGFoICsgYmggKyBjaCArIGRoICsgZWggKyBjYXJyeTtcbiAgcmV0dXJuIGhpID4+PiAwO1xufVxuZXhwb3J0cy5zdW02NF81X2hpID0gc3VtNjRfNV9oaTtcblxuZnVuY3Rpb24gc3VtNjRfNV9sbyhhaCwgYWwsIGJoLCBibCwgY2gsIGNsLCBkaCwgZGwsIGVoLCBlbCkge1xuICB2YXIgbG8gPSBhbCArIGJsICsgY2wgKyBkbCArIGVsO1xuXG4gIHJldHVybiBsbyA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtNjRfNV9sbyA9IHN1bTY0XzVfbG87XG5cbmZ1bmN0aW9uIHJvdHI2NF9oaShhaCwgYWwsIG51bSkge1xuICB2YXIgciA9IChhbCA8PCAoMzIgLSBudW0pKSB8IChhaCA+Pj4gbnVtKTtcbiAgcmV0dXJuIHIgPj4+IDA7XG59XG5leHBvcnRzLnJvdHI2NF9oaSA9IHJvdHI2NF9oaTtcblxuZnVuY3Rpb24gcm90cjY0X2xvKGFoLCBhbCwgbnVtKSB7XG4gIHZhciByID0gKGFoIDw8ICgzMiAtIG51bSkpIHwgKGFsID4+PiBudW0pO1xuICByZXR1cm4gciA+Pj4gMDtcbn1cbmV4cG9ydHMucm90cjY0X2xvID0gcm90cjY0X2xvO1xuXG5mdW5jdGlvbiBzaHI2NF9oaShhaCwgYWwsIG51bSkge1xuICByZXR1cm4gYWggPj4+IG51bTtcbn1cbmV4cG9ydHMuc2hyNjRfaGkgPSBzaHI2NF9oaTtcblxuZnVuY3Rpb24gc2hyNjRfbG8oYWgsIGFsLCBudW0pIHtcbiAgdmFyIHIgPSAoYWggPDwgKDMyIC0gbnVtKSkgfCAoYWwgPj4+IG51bSk7XG4gIHJldHVybiByID4+PiAwO1xufVxuZXhwb3J0cy5zaHI2NF9sbyA9IHNocjY0X2xvO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzaCA9IHJlcXVpcmUoJ2hhc2guanMnKTtcbnZhciB1dGlscyA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHMnKTtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbmZ1bmN0aW9uIEhtYWNEUkJHKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEhtYWNEUkJHKSlcbiAgICByZXR1cm4gbmV3IEhtYWNEUkJHKG9wdGlvbnMpO1xuICB0aGlzLmhhc2ggPSBvcHRpb25zLmhhc2g7XG4gIHRoaXMucHJlZFJlc2lzdCA9ICEhb3B0aW9ucy5wcmVkUmVzaXN0O1xuXG4gIHRoaXMub3V0TGVuID0gdGhpcy5oYXNoLm91dFNpemU7XG4gIHRoaXMubWluRW50cm9weSA9IG9wdGlvbnMubWluRW50cm9weSB8fCB0aGlzLmhhc2guaG1hY1N0cmVuZ3RoO1xuXG4gIHRoaXMuX3Jlc2VlZCA9IG51bGw7XG4gIHRoaXMucmVzZWVkSW50ZXJ2YWwgPSBudWxsO1xuICB0aGlzLksgPSBudWxsO1xuICB0aGlzLlYgPSBudWxsO1xuXG4gIHZhciBlbnRyb3B5ID0gdXRpbHMudG9BcnJheShvcHRpb25zLmVudHJvcHksIG9wdGlvbnMuZW50cm9weUVuYyB8fCAnaGV4Jyk7XG4gIHZhciBub25jZSA9IHV0aWxzLnRvQXJyYXkob3B0aW9ucy5ub25jZSwgb3B0aW9ucy5ub25jZUVuYyB8fCAnaGV4Jyk7XG4gIHZhciBwZXJzID0gdXRpbHMudG9BcnJheShvcHRpb25zLnBlcnMsIG9wdGlvbnMucGVyc0VuYyB8fCAnaGV4Jyk7XG4gIGFzc2VydChlbnRyb3B5Lmxlbmd0aCA+PSAodGhpcy5taW5FbnRyb3B5IC8gOCksXG4gICAgICAgICAnTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAnICsgdGhpcy5taW5FbnRyb3B5ICsgJyBiaXRzJyk7XG4gIHRoaXMuX2luaXQoZW50cm9weSwgbm9uY2UsIHBlcnMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBIbWFjRFJCRztcblxuSG1hY0RSQkcucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdChlbnRyb3B5LCBub25jZSwgcGVycykge1xuICB2YXIgc2VlZCA9IGVudHJvcHkuY29uY2F0KG5vbmNlKS5jb25jYXQocGVycyk7XG5cbiAgdGhpcy5LID0gbmV3IEFycmF5KHRoaXMub3V0TGVuIC8gOCk7XG4gIHRoaXMuViA9IG5ldyBBcnJheSh0aGlzLm91dExlbiAvIDgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuVi5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMuS1tpXSA9IDB4MDA7XG4gICAgdGhpcy5WW2ldID0gMHgwMTtcbiAgfVxuXG4gIHRoaXMuX3VwZGF0ZShzZWVkKTtcbiAgdGhpcy5fcmVzZWVkID0gMTtcbiAgdGhpcy5yZXNlZWRJbnRlcnZhbCA9IDB4MTAwMDAwMDAwMDAwMDsgIC8vIDJeNDhcbn07XG5cbkhtYWNEUkJHLnByb3RvdHlwZS5faG1hYyA9IGZ1bmN0aW9uIGhtYWMoKSB7XG4gIHJldHVybiBuZXcgaGFzaC5obWFjKHRoaXMuaGFzaCwgdGhpcy5LKTtcbn07XG5cbkhtYWNEUkJHLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKHNlZWQpIHtcbiAgdmFyIGttYWMgPSB0aGlzLl9obWFjKClcbiAgICAgICAgICAgICAgICAgLnVwZGF0ZSh0aGlzLlYpXG4gICAgICAgICAgICAgICAgIC51cGRhdGUoWyAweDAwIF0pO1xuICBpZiAoc2VlZClcbiAgICBrbWFjID0ga21hYy51cGRhdGUoc2VlZCk7XG4gIHRoaXMuSyA9IGttYWMuZGlnZXN0KCk7XG4gIHRoaXMuViA9IHRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKTtcbiAgaWYgKCFzZWVkKVxuICAgIHJldHVybjtcblxuICB0aGlzLksgPSB0aGlzLl9obWFjKClcbiAgICAgICAgICAgICAgIC51cGRhdGUodGhpcy5WKVxuICAgICAgICAgICAgICAgLnVwZGF0ZShbIDB4MDEgXSlcbiAgICAgICAgICAgICAgIC51cGRhdGUoc2VlZClcbiAgICAgICAgICAgICAgIC5kaWdlc3QoKTtcbiAgdGhpcy5WID0gdGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpO1xufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLnJlc2VlZCA9IGZ1bmN0aW9uIHJlc2VlZChlbnRyb3B5LCBlbnRyb3B5RW5jLCBhZGQsIGFkZEVuYykge1xuICAvLyBPcHRpb25hbCBlbnRyb3B5IGVuY1xuICBpZiAodHlwZW9mIGVudHJvcHlFbmMgIT09ICdzdHJpbmcnKSB7XG4gICAgYWRkRW5jID0gYWRkO1xuICAgIGFkZCA9IGVudHJvcHlFbmM7XG4gICAgZW50cm9weUVuYyA9IG51bGw7XG4gIH1cblxuICBlbnRyb3B5ID0gdXRpbHMudG9BcnJheShlbnRyb3B5LCBlbnRyb3B5RW5jKTtcbiAgYWRkID0gdXRpbHMudG9BcnJheShhZGQsIGFkZEVuYyk7XG5cbiAgYXNzZXJ0KGVudHJvcHkubGVuZ3RoID49ICh0aGlzLm1pbkVudHJvcHkgLyA4KSxcbiAgICAgICAgICdOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6ICcgKyB0aGlzLm1pbkVudHJvcHkgKyAnIGJpdHMnKTtcblxuICB0aGlzLl91cGRhdGUoZW50cm9weS5jb25jYXQoYWRkIHx8IFtdKSk7XG4gIHRoaXMuX3Jlc2VlZCA9IDE7XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZShsZW4sIGVuYywgYWRkLCBhZGRFbmMpIHtcbiAgaWYgKHRoaXMuX3Jlc2VlZCA+IHRoaXMucmVzZWVkSW50ZXJ2YWwpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZXNlZWQgaXMgcmVxdWlyZWQnKTtcblxuICAvLyBPcHRpb25hbCBlbmNvZGluZ1xuICBpZiAodHlwZW9mIGVuYyAhPT0gJ3N0cmluZycpIHtcbiAgICBhZGRFbmMgPSBhZGQ7XG4gICAgYWRkID0gZW5jO1xuICAgIGVuYyA9IG51bGw7XG4gIH1cblxuICAvLyBPcHRpb25hbCBhZGRpdGlvbmFsIGRhdGFcbiAgaWYgKGFkZCkge1xuICAgIGFkZCA9IHV0aWxzLnRvQXJyYXkoYWRkLCBhZGRFbmMgfHwgJ2hleCcpO1xuICAgIHRoaXMuX3VwZGF0ZShhZGQpO1xuICB9XG5cbiAgdmFyIHRlbXAgPSBbXTtcbiAgd2hpbGUgKHRlbXAubGVuZ3RoIDwgbGVuKSB7XG4gICAgdGhpcy5WID0gdGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpO1xuICAgIHRlbXAgPSB0ZW1wLmNvbmNhdCh0aGlzLlYpO1xuICB9XG5cbiAgdmFyIHJlcyA9IHRlbXAuc2xpY2UoMCwgbGVuKTtcbiAgdGhpcy5fdXBkYXRlKGFkZCk7XG4gIHRoaXMuX3Jlc2VlZCsrO1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHJlcywgZW5jKTtcbn07XG4iLCJ0cnkge1xuICB2YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKHR5cGVvZiB1dGlsLmluaGVyaXRzICE9PSAnZnVuY3Rpb24nKSB0aHJvdyAnJztcbiAgbW9kdWxlLmV4cG9ydHMgPSB1dGlsLmluaGVyaXRzO1xufSBjYXRjaCAoZSkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vaW5oZXJpdHNfYnJvd3Nlci5qcycpO1xufVxuIiwiaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gIC8vIGltcGxlbWVudGF0aW9uIGZyb20gc3RhbmRhcmQgbm9kZS5qcyAndXRpbCcgbW9kdWxlXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgaWYgKHN1cGVyQ3Rvcikge1xuICAgICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICAgIGN0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckN0b3IucHJvdG90eXBlLCB7XG4gICAgICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICAgICAgdmFsdWU6IGN0b3IsXG4gICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9O1xufSBlbHNlIHtcbiAgLy8gb2xkIHNjaG9vbCBzaGltIGZvciBvbGQgYnJvd3NlcnNcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBpZiAoc3VwZXJDdG9yKSB7XG4gICAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge31cbiAgICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGVcbiAgICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKClcbiAgICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvclxuICAgIH1cbiAgfVxufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBhc3NlcnQ7XG5cbmZ1bmN0aW9uIGFzc2VydCh2YWwsIG1zZykge1xuICBpZiAoIXZhbClcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG59XG5cbmFzc2VydC5lcXVhbCA9IGZ1bmN0aW9uIGFzc2VydEVxdWFsKGwsIHIsIG1zZykge1xuICBpZiAobCAhPSByKVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgKCdBc3NlcnRpb24gZmFpbGVkOiAnICsgbCArICcgIT0gJyArIHIpKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IGV4cG9ydHM7XG5cbmZ1bmN0aW9uIHRvQXJyYXkobXNnLCBlbmMpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobXNnKSlcbiAgICByZXR1cm4gbXNnLnNsaWNlKCk7XG4gIGlmICghbXNnKVxuICAgIHJldHVybiBbXTtcbiAgdmFyIHJlcyA9IFtdO1xuICBpZiAodHlwZW9mIG1zZyAhPT0gJ3N0cmluZycpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICAgIHJlc1tpXSA9IG1zZ1tpXSB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZiAoZW5jID09PSAnaGV4Jykge1xuICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9bXmEtejAtOV0rL2lnLCAnJyk7XG4gICAgaWYgKG1zZy5sZW5ndGggJSAyICE9PSAwKVxuICAgICAgbXNnID0gJzAnICsgbXNnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSAyKVxuICAgICAgcmVzLnB1c2gocGFyc2VJbnQobXNnW2ldICsgbXNnW2kgKyAxXSwgMTYpKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSBtc2cuY2hhckNvZGVBdChpKTtcbiAgICAgIHZhciBoaSA9IGMgPj4gODtcbiAgICAgIHZhciBsbyA9IGMgJiAweGZmO1xuICAgICAgaWYgKGhpKVxuICAgICAgICByZXMucHVzaChoaSwgbG8pO1xuICAgICAgZWxzZVxuICAgICAgICByZXMucHVzaChsbyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0FycmF5ID0gdG9BcnJheTtcblxuZnVuY3Rpb24gemVybzIod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbnV0aWxzLnplcm8yID0gemVybzI7XG5cbmZ1bmN0aW9uIHRvSGV4KG1zZykge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKVxuICAgIHJlcyArPSB6ZXJvMihtc2dbaV0udG9TdHJpbmcoMTYpKTtcbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvSGV4ID0gdG9IZXg7XG5cbnV0aWxzLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShhcnIsIGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdG9IZXgoYXJyKTtcbiAgZWxzZVxuICAgIHJldHVybiBhcnI7XG59O1xuIiwidmFyIGZzID0gcmVxdWlyZSgnZnMnKVxudmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJylcbnZhciBvcyA9IHJlcXVpcmUoJ29zJylcblxuLy8gV29ya2Fyb3VuZCB0byBmaXggd2VicGFjaydzIGJ1aWxkIHdhcm5pbmdzOiAndGhlIHJlcXVlc3Qgb2YgYSBkZXBlbmRlbmN5IGlzIGFuIGV4cHJlc3Npb24nXG52YXIgcnVudGltZVJlcXVpcmUgPSB0eXBlb2YgX193ZWJwYWNrX3JlcXVpcmVfXyA9PT0gJ2Z1bmN0aW9uJyA/IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fIDogcmVxdWlyZSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbnZhciB2YXJzID0gKHByb2Nlc3MuY29uZmlnICYmIHByb2Nlc3MuY29uZmlnLnZhcmlhYmxlcykgfHwge31cbnZhciBwcmVidWlsZHNPbmx5ID0gISFwcm9jZXNzLmVudi5QUkVCVUlMRFNfT05MWVxudmFyIGFiaSA9IHByb2Nlc3MudmVyc2lvbnMubW9kdWxlcyAvLyBUT0RPOiBzdXBwb3J0IG9sZCBub2RlIHdoZXJlIHRoaXMgaXMgdW5kZWZcbnZhciBydW50aW1lID0gaXNFbGVjdHJvbigpID8gJ2VsZWN0cm9uJyA6IChpc053anMoKSA/ICdub2RlLXdlYmtpdCcgOiAnbm9kZScpXG5cbnZhciBhcmNoID0gcHJvY2Vzcy5lbnYubnBtX2NvbmZpZ19hcmNoIHx8IG9zLmFyY2goKVxudmFyIHBsYXRmb3JtID0gcHJvY2Vzcy5lbnYubnBtX2NvbmZpZ19wbGF0Zm9ybSB8fCBvcy5wbGF0Zm9ybSgpXG52YXIgbGliYyA9IHByb2Nlc3MuZW52LkxJQkMgfHwgKGlzQWxwaW5lKHBsYXRmb3JtKSA/ICdtdXNsJyA6ICdnbGliYycpXG52YXIgYXJtdiA9IHByb2Nlc3MuZW52LkFSTV9WRVJTSU9OIHx8IChhcmNoID09PSAnYXJtNjQnID8gJzgnIDogdmFycy5hcm1fdmVyc2lvbikgfHwgJydcbnZhciB1diA9IChwcm9jZXNzLnZlcnNpb25zLnV2IHx8ICcnKS5zcGxpdCgnLicpWzBdXG5cbm1vZHVsZS5leHBvcnRzID0gbG9hZFxuXG5mdW5jdGlvbiBsb2FkIChkaXIpIHtcbiAgcmV0dXJuIHJ1bnRpbWVSZXF1aXJlKGxvYWQucGF0aChkaXIpKVxufVxuXG5sb2FkLnBhdGggPSBmdW5jdGlvbiAoZGlyKSB7XG4gIGRpciA9IHBhdGgucmVzb2x2ZShkaXIgfHwgJy4nKVxuXG4gIHRyeSB7XG4gICAgdmFyIG5hbWUgPSBydW50aW1lUmVxdWlyZShwYXRoLmpvaW4oZGlyLCAncGFja2FnZS5qc29uJykpLm5hbWUudG9VcHBlckNhc2UoKS5yZXBsYWNlKC8tL2csICdfJylcbiAgICBpZiAocHJvY2Vzcy5lbnZbbmFtZSArICdfUFJFQlVJTEQnXSkgZGlyID0gcHJvY2Vzcy5lbnZbbmFtZSArICdfUFJFQlVJTEQnXVxuICB9IGNhdGNoIChlcnIpIHt9XG5cbiAgaWYgKCFwcmVidWlsZHNPbmx5KSB7XG4gICAgdmFyIHJlbGVhc2UgPSBnZXRGaXJzdChwYXRoLmpvaW4oZGlyLCAnYnVpbGQvUmVsZWFzZScpLCBtYXRjaEJ1aWxkKVxuICAgIGlmIChyZWxlYXNlKSByZXR1cm4gcmVsZWFzZVxuXG4gICAgdmFyIGRlYnVnID0gZ2V0Rmlyc3QocGF0aC5qb2luKGRpciwgJ2J1aWxkL0RlYnVnJyksIG1hdGNoQnVpbGQpXG4gICAgaWYgKGRlYnVnKSByZXR1cm4gZGVidWdcbiAgfVxuXG4gIHZhciBwcmVidWlsZCA9IHJlc29sdmUoZGlyKVxuICBpZiAocHJlYnVpbGQpIHJldHVybiBwcmVidWlsZFxuXG4gIHZhciBuZWFyYnkgPSByZXNvbHZlKHBhdGguZGlybmFtZShwcm9jZXNzLmV4ZWNQYXRoKSlcbiAgaWYgKG5lYXJieSkgcmV0dXJuIG5lYXJieVxuXG4gIHZhciB0YXJnZXQgPSBbXG4gICAgJ3BsYXRmb3JtPScgKyBwbGF0Zm9ybSxcbiAgICAnYXJjaD0nICsgYXJjaCxcbiAgICAncnVudGltZT0nICsgcnVudGltZSxcbiAgICAnYWJpPScgKyBhYmksXG4gICAgJ3V2PScgKyB1dixcbiAgICBhcm12ID8gJ2FybXY9JyArIGFybXYgOiAnJyxcbiAgICAnbGliYz0nICsgbGliYyxcbiAgICAnbm9kZT0nICsgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlLFxuICAgIHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24gPyAnZWxlY3Ryb249JyArIHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24gOiAnJyxcbiAgICB0eXBlb2YgX193ZWJwYWNrX3JlcXVpcmVfXyA9PT0gJ2Z1bmN0aW9uJyA/ICd3ZWJwYWNrPXRydWUnIDogJycgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJylcblxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIG5hdGl2ZSBidWlsZCB3YXMgZm91bmQgZm9yICcgKyB0YXJnZXQgKyAnXFxuICAgIGxvYWRlZCBmcm9tOiAnICsgZGlyICsgJ1xcbicpXG5cbiAgZnVuY3Rpb24gcmVzb2x2ZSAoZGlyKSB7XG4gICAgLy8gRmluZCBtYXRjaGluZyBcInByZWJ1aWxkcy88cGxhdGZvcm0+LTxhcmNoPlwiIGRpcmVjdG9yeVxuICAgIHZhciB0dXBsZXMgPSByZWFkZGlyU3luYyhwYXRoLmpvaW4oZGlyLCAncHJlYnVpbGRzJykpLm1hcChwYXJzZVR1cGxlKVxuICAgIHZhciB0dXBsZSA9IHR1cGxlcy5maWx0ZXIobWF0Y2hUdXBsZShwbGF0Zm9ybSwgYXJjaCkpLnNvcnQoY29tcGFyZVR1cGxlcylbMF1cbiAgICBpZiAoIXR1cGxlKSByZXR1cm5cblxuICAgIC8vIEZpbmQgbW9zdCBzcGVjaWZpYyBmbGF2b3IgZmlyc3RcbiAgICB2YXIgcHJlYnVpbGRzID0gcGF0aC5qb2luKGRpciwgJ3ByZWJ1aWxkcycsIHR1cGxlLm5hbWUpXG4gICAgdmFyIHBhcnNlZCA9IHJlYWRkaXJTeW5jKHByZWJ1aWxkcykubWFwKHBhcnNlVGFncylcbiAgICB2YXIgY2FuZGlkYXRlcyA9IHBhcnNlZC5maWx0ZXIobWF0Y2hUYWdzKHJ1bnRpbWUsIGFiaSkpXG4gICAgdmFyIHdpbm5lciA9IGNhbmRpZGF0ZXMuc29ydChjb21wYXJlVGFncyhydW50aW1lKSlbMF1cbiAgICBpZiAod2lubmVyKSByZXR1cm4gcGF0aC5qb2luKHByZWJ1aWxkcywgd2lubmVyLmZpbGUpXG4gIH1cbn1cblxuZnVuY3Rpb24gcmVhZGRpclN5bmMgKGRpcikge1xuICB0cnkge1xuICAgIHJldHVybiBmcy5yZWFkZGlyU3luYyhkaXIpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBbXVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEZpcnN0IChkaXIsIGZpbHRlcikge1xuICB2YXIgZmlsZXMgPSByZWFkZGlyU3luYyhkaXIpLmZpbHRlcihmaWx0ZXIpXG4gIHJldHVybiBmaWxlc1swXSAmJiBwYXRoLmpvaW4oZGlyLCBmaWxlc1swXSlcbn1cblxuZnVuY3Rpb24gbWF0Y2hCdWlsZCAobmFtZSkge1xuICByZXR1cm4gL1xcLm5vZGUkLy50ZXN0KG5hbWUpXG59XG5cbmZ1bmN0aW9uIHBhcnNlVHVwbGUgKG5hbWUpIHtcbiAgLy8gRXhhbXBsZTogZGFyd2luLXg2NCthcm02NFxuICB2YXIgYXJyID0gbmFtZS5zcGxpdCgnLScpXG4gIGlmIChhcnIubGVuZ3RoICE9PSAyKSByZXR1cm5cblxuICB2YXIgcGxhdGZvcm0gPSBhcnJbMF1cbiAgdmFyIGFyY2hpdGVjdHVyZXMgPSBhcnJbMV0uc3BsaXQoJysnKVxuXG4gIGlmICghcGxhdGZvcm0pIHJldHVyblxuICBpZiAoIWFyY2hpdGVjdHVyZXMubGVuZ3RoKSByZXR1cm5cbiAgaWYgKCFhcmNoaXRlY3R1cmVzLmV2ZXJ5KEJvb2xlYW4pKSByZXR1cm5cblxuICByZXR1cm4geyBuYW1lLCBwbGF0Zm9ybSwgYXJjaGl0ZWN0dXJlcyB9XG59XG5cbmZ1bmN0aW9uIG1hdGNoVHVwbGUgKHBsYXRmb3JtLCBhcmNoKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodHVwbGUpIHtcbiAgICBpZiAodHVwbGUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKHR1cGxlLnBsYXRmb3JtICE9PSBwbGF0Zm9ybSkgcmV0dXJuIGZhbHNlXG4gICAgcmV0dXJuIHR1cGxlLmFyY2hpdGVjdHVyZXMuaW5jbHVkZXMoYXJjaClcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21wYXJlVHVwbGVzIChhLCBiKSB7XG4gIC8vIFByZWZlciBzaW5nbGUtYXJjaCBwcmVidWlsZHMgb3ZlciBtdWx0aS1hcmNoXG4gIHJldHVybiBhLmFyY2hpdGVjdHVyZXMubGVuZ3RoIC0gYi5hcmNoaXRlY3R1cmVzLmxlbmd0aFxufVxuXG5mdW5jdGlvbiBwYXJzZVRhZ3MgKGZpbGUpIHtcbiAgdmFyIGFyciA9IGZpbGUuc3BsaXQoJy4nKVxuICB2YXIgZXh0ZW5zaW9uID0gYXJyLnBvcCgpXG4gIHZhciB0YWdzID0geyBmaWxlOiBmaWxlLCBzcGVjaWZpY2l0eTogMCB9XG5cbiAgaWYgKGV4dGVuc2lvbiAhPT0gJ25vZGUnKSByZXR1cm5cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIHZhciB0YWcgPSBhcnJbaV1cblxuICAgIGlmICh0YWcgPT09ICdub2RlJyB8fCB0YWcgPT09ICdlbGVjdHJvbicgfHwgdGFnID09PSAnbm9kZS13ZWJraXQnKSB7XG4gICAgICB0YWdzLnJ1bnRpbWUgPSB0YWdcbiAgICB9IGVsc2UgaWYgKHRhZyA9PT0gJ25hcGknKSB7XG4gICAgICB0YWdzLm5hcGkgPSB0cnVlXG4gICAgfSBlbHNlIGlmICh0YWcuc2xpY2UoMCwgMykgPT09ICdhYmknKSB7XG4gICAgICB0YWdzLmFiaSA9IHRhZy5zbGljZSgzKVxuICAgIH0gZWxzZSBpZiAodGFnLnNsaWNlKDAsIDIpID09PSAndXYnKSB7XG4gICAgICB0YWdzLnV2ID0gdGFnLnNsaWNlKDIpXG4gICAgfSBlbHNlIGlmICh0YWcuc2xpY2UoMCwgNCkgPT09ICdhcm12Jykge1xuICAgICAgdGFncy5hcm12ID0gdGFnLnNsaWNlKDQpXG4gICAgfSBlbHNlIGlmICh0YWcgPT09ICdnbGliYycgfHwgdGFnID09PSAnbXVzbCcpIHtcbiAgICAgIHRhZ3MubGliYyA9IHRhZ1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIHRhZ3Muc3BlY2lmaWNpdHkrK1xuICB9XG5cbiAgcmV0dXJuIHRhZ3Ncbn1cblxuZnVuY3Rpb24gbWF0Y2hUYWdzIChydW50aW1lLCBhYmkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YWdzKSB7XG4gICAgaWYgKHRhZ3MgPT0gbnVsbCkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKHRhZ3MucnVudGltZSAhPT0gcnVudGltZSAmJiAhcnVudGltZUFnbm9zdGljKHRhZ3MpKSByZXR1cm4gZmFsc2VcbiAgICBpZiAodGFncy5hYmkgIT09IGFiaSAmJiAhdGFncy5uYXBpKSByZXR1cm4gZmFsc2VcbiAgICBpZiAodGFncy51diAmJiB0YWdzLnV2ICE9PSB1dikgcmV0dXJuIGZhbHNlXG4gICAgaWYgKHRhZ3MuYXJtdiAmJiB0YWdzLmFybXYgIT09IGFybXYpIHJldHVybiBmYWxzZVxuICAgIGlmICh0YWdzLmxpYmMgJiYgdGFncy5saWJjICE9PSBsaWJjKSByZXR1cm4gZmFsc2VcblxuICAgIHJldHVybiB0cnVlXG4gIH1cbn1cblxuZnVuY3Rpb24gcnVudGltZUFnbm9zdGljICh0YWdzKSB7XG4gIHJldHVybiB0YWdzLnJ1bnRpbWUgPT09ICdub2RlJyAmJiB0YWdzLm5hcGlcbn1cblxuZnVuY3Rpb24gY29tcGFyZVRhZ3MgKHJ1bnRpbWUpIHtcbiAgLy8gUHJlY2VkZW5jZTogbm9uLWFnbm9zdGljIHJ1bnRpbWUsIGFiaSBvdmVyIG5hcGksIHRoZW4gYnkgc3BlY2lmaWNpdHkuXG4gIHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgIGlmIChhLnJ1bnRpbWUgIT09IGIucnVudGltZSkge1xuICAgICAgcmV0dXJuIGEucnVudGltZSA9PT0gcnVudGltZSA/IC0xIDogMVxuICAgIH0gZWxzZSBpZiAoYS5hYmkgIT09IGIuYWJpKSB7XG4gICAgICByZXR1cm4gYS5hYmkgPyAtMSA6IDFcbiAgICB9IGVsc2UgaWYgKGEuc3BlY2lmaWNpdHkgIT09IGIuc3BlY2lmaWNpdHkpIHtcbiAgICAgIHJldHVybiBhLnNwZWNpZmljaXR5ID4gYi5zcGVjaWZpY2l0eSA/IC0xIDogMVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMFxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc053anMgKCkge1xuICByZXR1cm4gISEocHJvY2Vzcy52ZXJzaW9ucyAmJiBwcm9jZXNzLnZlcnNpb25zLm53KVxufVxuXG5mdW5jdGlvbiBpc0VsZWN0cm9uICgpIHtcbiAgaWYgKHByb2Nlc3MudmVyc2lvbnMgJiYgcHJvY2Vzcy52ZXJzaW9ucy5lbGVjdHJvbikgcmV0dXJuIHRydWVcbiAgaWYgKHByb2Nlc3MuZW52LkVMRUNUUk9OX1JVTl9BU19OT0RFKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnByb2Nlc3MgJiYgd2luZG93LnByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJ1xufVxuXG5mdW5jdGlvbiBpc0FscGluZSAocGxhdGZvcm0pIHtcbiAgcmV0dXJuIHBsYXRmb3JtID09PSAnbGludXgnICYmIGZzLmV4aXN0c1N5bmMoJy9ldGMvYWxwaW5lLXJlbGVhc2UnKVxufVxuXG4vLyBFeHBvc2VkIGZvciB1bml0IHRlc3RzXG4vLyBUT0RPOiBtb3ZlIHRvIGxpYlxubG9hZC5wYXJzZVRhZ3MgPSBwYXJzZVRhZ3NcbmxvYWQubWF0Y2hUYWdzID0gbWF0Y2hUYWdzXG5sb2FkLmNvbXBhcmVUYWdzID0gY29tcGFyZVRhZ3NcbmxvYWQucGFyc2VUdXBsZSA9IHBhcnNlVHVwbGVcbmxvYWQubWF0Y2hUdXBsZSA9IG1hdGNoVHVwbGVcbmxvYWQuY29tcGFyZVR1cGxlcyA9IGNvbXBhcmVUdXBsZXNcbiIsImNvbnN0IGFkZG9uID0gcmVxdWlyZSgnbm9kZS1neXAtYnVpbGQnKShfX2Rpcm5hbWUpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliJykobmV3IGFkZG9uLlNlY3AyNTZrMSgpKVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYicpKHJlcXVpcmUoJy4vbGliL2VsbGlwdGljJykpXG4iLCJ0cnkge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vYmluZGluZ3MnKVxufSBjYXRjaCAoZXJyKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9lbGxpcHRpYycpXG59XG4iLCJjb25zdCBFQyA9IHJlcXVpcmUoJ2VsbGlwdGljJykuZWNcblxuY29uc3QgZWMgPSBuZXcgRUMoJ3NlY3AyNTZrMScpXG5jb25zdCBlY3BhcmFtcyA9IGVjLmN1cnZlXG5cbi8vIEhhY2ssIHdlIGNhbiBub3QgdXNlIGJuLmpzQDUsIHdoaWxlIGVsbGlwdGljIHVzZXMgYm4uanNANFxuLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L2VsbGlwdGljL2lzc3Vlcy8xOTEjaXNzdWVjb21tZW50LTU2OTg4ODc1OFxuY29uc3QgQk4gPSBlY3BhcmFtcy5uLmNvbnN0cnVjdG9yXG5cbmZ1bmN0aW9uIGxvYWRDb21wcmVzc2VkUHVibGljS2V5IChmaXJzdCwgeGJ1Zikge1xuICBsZXQgeCA9IG5ldyBCTih4YnVmKVxuXG4gIC8vIG92ZXJmbG93XG4gIGlmICh4LmNtcChlY3BhcmFtcy5wKSA+PSAwKSByZXR1cm4gbnVsbFxuICB4ID0geC50b1JlZChlY3BhcmFtcy5yZWQpXG5cbiAgLy8gY29tcHV0ZSBjb3JyZXNwb25kaW5nIFlcbiAgbGV0IHkgPSB4LnJlZFNxcigpLnJlZElNdWwoeCkucmVkSUFkZChlY3BhcmFtcy5iKS5yZWRTcXJ0KClcbiAgaWYgKChmaXJzdCA9PT0gMHgwMykgIT09IHkuaXNPZGQoKSkgeSA9IHkucmVkTmVnKClcblxuICByZXR1cm4gZWMua2V5UGFpcih7IHB1YjogeyB4OiB4LCB5OiB5IH0gfSlcbn1cblxuZnVuY3Rpb24gbG9hZFVuY29tcHJlc3NlZFB1YmxpY0tleSAoZmlyc3QsIHhidWYsIHlidWYpIHtcbiAgbGV0IHggPSBuZXcgQk4oeGJ1ZilcbiAgbGV0IHkgPSBuZXcgQk4oeWJ1ZilcblxuICAvLyBvdmVyZmxvd1xuICBpZiAoeC5jbXAoZWNwYXJhbXMucCkgPj0gMCB8fCB5LmNtcChlY3BhcmFtcy5wKSA+PSAwKSByZXR1cm4gbnVsbFxuXG4gIHggPSB4LnRvUmVkKGVjcGFyYW1zLnJlZClcbiAgeSA9IHkudG9SZWQoZWNwYXJhbXMucmVkKVxuXG4gIC8vIGlzIG9kZCBmbGFnXG4gIGlmICgoZmlyc3QgPT09IDB4MDYgfHwgZmlyc3QgPT09IDB4MDcpICYmIHkuaXNPZGQoKSAhPT0gKGZpcnN0ID09PSAweDA3KSkgcmV0dXJuIG51bGxcblxuICAvLyB4KngqeCArIGIgPSB5KnlcbiAgY29uc3QgeDMgPSB4LnJlZFNxcigpLnJlZElNdWwoeClcbiAgaWYgKCF5LnJlZFNxcigpLnJlZElTdWIoeDMucmVkSUFkZChlY3BhcmFtcy5iKSkuaXNaZXJvKCkpIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIGVjLmtleVBhaXIoeyBwdWI6IHsgeDogeCwgeTogeSB9IH0pXG59XG5cbmZ1bmN0aW9uIGxvYWRQdWJsaWNLZXkgKHB1YmtleSkge1xuICAvLyBsZW5ndGggc2hvdWxkIGJlIHZhbGlkYXRlZCBpbiBpbnRlcmZhY2VcbiAgY29uc3QgZmlyc3QgPSBwdWJrZXlbMF1cbiAgc3dpdGNoIChmaXJzdCkge1xuICAgIGNhc2UgMHgwMjpcbiAgICBjYXNlIDB4MDM6XG4gICAgICBpZiAocHVia2V5Lmxlbmd0aCAhPT0gMzMpIHJldHVybiBudWxsXG4gICAgICByZXR1cm4gbG9hZENvbXByZXNzZWRQdWJsaWNLZXkoZmlyc3QsIHB1YmtleS5zdWJhcnJheSgxLCAzMykpXG4gICAgY2FzZSAweDA0OlxuICAgIGNhc2UgMHgwNjpcbiAgICBjYXNlIDB4MDc6XG4gICAgICBpZiAocHVia2V5Lmxlbmd0aCAhPT0gNjUpIHJldHVybiBudWxsXG4gICAgICByZXR1cm4gbG9hZFVuY29tcHJlc3NlZFB1YmxpY0tleShmaXJzdCwgcHVia2V5LnN1YmFycmF5KDEsIDMzKSwgcHVia2V5LnN1YmFycmF5KDMzLCA2NSkpXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZnVuY3Rpb24gc2F2ZVB1YmxpY0tleSAob3V0cHV0LCBwb2ludCkge1xuICBjb25zdCBwdWJrZXkgPSBwb2ludC5lbmNvZGUobnVsbCwgb3V0cHV0Lmxlbmd0aCA9PT0gMzMpXG4gIC8vIExvb3Agc2hvdWxkIGJlIGZhc3RlciBiZWNhdXNlIHdlIGRvIG5vdCBuZWVkIGNyZWF0ZSBleHRyYSBVaW50OEFycmF5XG4gIC8vIG91dHB1dC5zZXQobmV3IFVpbnQ4QXJyYXkocHVia2V5KSlcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBvdXRwdXQubGVuZ3RoOyArK2kpIG91dHB1dFtpXSA9IHB1YmtleVtpXVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgY29udGV4dFJhbmRvbWl6ZSAoKSB7XG4gICAgcmV0dXJuIDBcbiAgfSxcblxuICBwcml2YXRlS2V5VmVyaWZ5IChzZWNrZXkpIHtcbiAgICBjb25zdCBibiA9IG5ldyBCTihzZWNrZXkpXG4gICAgcmV0dXJuIGJuLmNtcChlY3BhcmFtcy5uKSA8IDAgJiYgIWJuLmlzWmVybygpID8gMCA6IDFcbiAgfSxcblxuICBwcml2YXRlS2V5TmVnYXRlIChzZWNrZXkpIHtcbiAgICBjb25zdCBibiA9IG5ldyBCTihzZWNrZXkpXG4gICAgY29uc3QgbmVnYXRlID0gZWNwYXJhbXMubi5zdWIoYm4pLnVtb2QoZWNwYXJhbXMubikudG9BcnJheUxpa2UoVWludDhBcnJheSwgJ2JlJywgMzIpXG4gICAgc2Vja2V5LnNldChuZWdhdGUpXG4gICAgcmV0dXJuIDBcbiAgfSxcblxuICBwcml2YXRlS2V5VHdlYWtBZGQgKHNlY2tleSwgdHdlYWspIHtcbiAgICBjb25zdCBibiA9IG5ldyBCTih0d2VhaylcbiAgICBpZiAoYm4uY21wKGVjcGFyYW1zLm4pID49IDApIHJldHVybiAxXG5cbiAgICBibi5pYWRkKG5ldyBCTihzZWNrZXkpKVxuICAgIGlmIChibi5jbXAoZWNwYXJhbXMubikgPj0gMCkgYm4uaXN1YihlY3BhcmFtcy5uKVxuICAgIGlmIChibi5pc1plcm8oKSkgcmV0dXJuIDFcblxuICAgIGNvbnN0IHR3ZWFrZWQgPSBibi50b0FycmF5TGlrZShVaW50OEFycmF5LCAnYmUnLCAzMilcbiAgICBzZWNrZXkuc2V0KHR3ZWFrZWQpXG5cbiAgICByZXR1cm4gMFxuICB9LFxuXG4gIHByaXZhdGVLZXlUd2Vha011bCAoc2Vja2V5LCB0d2Vhaykge1xuICAgIGxldCBibiA9IG5ldyBCTih0d2VhaylcbiAgICBpZiAoYm4uY21wKGVjcGFyYW1zLm4pID49IDAgfHwgYm4uaXNaZXJvKCkpIHJldHVybiAxXG5cbiAgICBibi5pbXVsKG5ldyBCTihzZWNrZXkpKVxuICAgIGlmIChibi5jbXAoZWNwYXJhbXMubikgPj0gMCkgYm4gPSBibi51bW9kKGVjcGFyYW1zLm4pXG5cbiAgICBjb25zdCB0d2Vha2VkID0gYm4udG9BcnJheUxpa2UoVWludDhBcnJheSwgJ2JlJywgMzIpXG4gICAgc2Vja2V5LnNldCh0d2Vha2VkKVxuXG4gICAgcmV0dXJuIDBcbiAgfSxcblxuICBwdWJsaWNLZXlWZXJpZnkgKHB1YmtleSkge1xuICAgIGNvbnN0IHBhaXIgPSBsb2FkUHVibGljS2V5KHB1YmtleSlcbiAgICByZXR1cm4gcGFpciA9PT0gbnVsbCA/IDEgOiAwXG4gIH0sXG5cbiAgcHVibGljS2V5Q3JlYXRlIChvdXRwdXQsIHNlY2tleSkge1xuICAgIGNvbnN0IGJuID0gbmV3IEJOKHNlY2tleSlcbiAgICBpZiAoYm4uY21wKGVjcGFyYW1zLm4pID49IDAgfHwgYm4uaXNaZXJvKCkpIHJldHVybiAxXG5cbiAgICBjb25zdCBwb2ludCA9IGVjLmtleUZyb21Qcml2YXRlKHNlY2tleSkuZ2V0UHVibGljKClcbiAgICBzYXZlUHVibGljS2V5KG91dHB1dCwgcG9pbnQpXG5cbiAgICByZXR1cm4gMFxuICB9LFxuXG4gIHB1YmxpY0tleUNvbnZlcnQgKG91dHB1dCwgcHVia2V5KSB7XG4gICAgY29uc3QgcGFpciA9IGxvYWRQdWJsaWNLZXkocHVia2V5KVxuICAgIGlmIChwYWlyID09PSBudWxsKSByZXR1cm4gMVxuXG4gICAgY29uc3QgcG9pbnQgPSBwYWlyLmdldFB1YmxpYygpXG4gICAgc2F2ZVB1YmxpY0tleShvdXRwdXQsIHBvaW50KVxuXG4gICAgcmV0dXJuIDBcbiAgfSxcblxuICBwdWJsaWNLZXlOZWdhdGUgKG91dHB1dCwgcHVia2V5KSB7XG4gICAgY29uc3QgcGFpciA9IGxvYWRQdWJsaWNLZXkocHVia2V5KVxuICAgIGlmIChwYWlyID09PSBudWxsKSByZXR1cm4gMVxuXG4gICAgY29uc3QgcG9pbnQgPSBwYWlyLmdldFB1YmxpYygpXG4gICAgcG9pbnQueSA9IHBvaW50LnkucmVkTmVnKClcbiAgICBzYXZlUHVibGljS2V5KG91dHB1dCwgcG9pbnQpXG5cbiAgICByZXR1cm4gMFxuICB9LFxuXG4gIHB1YmxpY0tleUNvbWJpbmUgKG91dHB1dCwgcHVia2V5cykge1xuICAgIGNvbnN0IHBhaXJzID0gbmV3IEFycmF5KHB1YmtleXMubGVuZ3RoKVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHVia2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgcGFpcnNbaV0gPSBsb2FkUHVibGljS2V5KHB1YmtleXNbaV0pXG4gICAgICBpZiAocGFpcnNbaV0gPT09IG51bGwpIHJldHVybiAxXG4gICAgfVxuXG4gICAgbGV0IHBvaW50ID0gcGFpcnNbMF0uZ2V0UHVibGljKClcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHBhaXJzLmxlbmd0aDsgKytpKSBwb2ludCA9IHBvaW50LmFkZChwYWlyc1tpXS5wdWIpXG4gICAgaWYgKHBvaW50LmlzSW5maW5pdHkoKSkgcmV0dXJuIDJcblxuICAgIHNhdmVQdWJsaWNLZXkob3V0cHV0LCBwb2ludClcblxuICAgIHJldHVybiAwXG4gIH0sXG5cbiAgcHVibGljS2V5VHdlYWtBZGQgKG91dHB1dCwgcHVia2V5LCB0d2Vhaykge1xuICAgIGNvbnN0IHBhaXIgPSBsb2FkUHVibGljS2V5KHB1YmtleSlcbiAgICBpZiAocGFpciA9PT0gbnVsbCkgcmV0dXJuIDFcblxuICAgIHR3ZWFrID0gbmV3IEJOKHR3ZWFrKVxuICAgIGlmICh0d2Vhay5jbXAoZWNwYXJhbXMubikgPj0gMCkgcmV0dXJuIDJcblxuICAgIGNvbnN0IHBvaW50ID0gcGFpci5nZXRQdWJsaWMoKS5hZGQoZWNwYXJhbXMuZy5tdWwodHdlYWspKVxuICAgIGlmIChwb2ludC5pc0luZmluaXR5KCkpIHJldHVybiAyXG5cbiAgICBzYXZlUHVibGljS2V5KG91dHB1dCwgcG9pbnQpXG5cbiAgICByZXR1cm4gMFxuICB9LFxuXG4gIHB1YmxpY0tleVR3ZWFrTXVsIChvdXRwdXQsIHB1YmtleSwgdHdlYWspIHtcbiAgICBjb25zdCBwYWlyID0gbG9hZFB1YmxpY0tleShwdWJrZXkpXG4gICAgaWYgKHBhaXIgPT09IG51bGwpIHJldHVybiAxXG5cbiAgICB0d2VhayA9IG5ldyBCTih0d2VhaylcbiAgICBpZiAodHdlYWsuY21wKGVjcGFyYW1zLm4pID49IDAgfHwgdHdlYWsuaXNaZXJvKCkpIHJldHVybiAyXG5cbiAgICBjb25zdCBwb2ludCA9IHBhaXIuZ2V0UHVibGljKCkubXVsKHR3ZWFrKVxuICAgIHNhdmVQdWJsaWNLZXkob3V0cHV0LCBwb2ludClcblxuICAgIHJldHVybiAwXG4gIH0sXG5cbiAgc2lnbmF0dXJlTm9ybWFsaXplIChzaWcpIHtcbiAgICBjb25zdCByID0gbmV3IEJOKHNpZy5zdWJhcnJheSgwLCAzMikpXG4gICAgY29uc3QgcyA9IG5ldyBCTihzaWcuc3ViYXJyYXkoMzIsIDY0KSlcbiAgICBpZiAoci5jbXAoZWNwYXJhbXMubikgPj0gMCB8fCBzLmNtcChlY3BhcmFtcy5uKSA+PSAwKSByZXR1cm4gMVxuXG4gICAgaWYgKHMuY21wKGVjLm5oKSA9PT0gMSkge1xuICAgICAgc2lnLnNldChlY3BhcmFtcy5uLnN1YihzKS50b0FycmF5TGlrZShVaW50OEFycmF5LCAnYmUnLCAzMiksIDMyKVxuICAgIH1cblxuICAgIHJldHVybiAwXG4gIH0sXG5cbiAgLy8gQ29waWVkIDEtdG8tMSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luanMvYmlwNjYvYmxvYi9tYXN0ZXIvaW5kZXguanNcbiAgLy8gQWRhcHRlZCBmb3IgVWludDhBcnJheSBpbnN0ZWFkIEJ1ZmZlclxuICBzaWduYXR1cmVFeHBvcnQgKG9iaiwgc2lnKSB7XG4gICAgY29uc3Qgc2lnUiA9IHNpZy5zdWJhcnJheSgwLCAzMilcbiAgICBjb25zdCBzaWdTID0gc2lnLnN1YmFycmF5KDMyLCA2NClcbiAgICBpZiAobmV3IEJOKHNpZ1IpLmNtcChlY3BhcmFtcy5uKSA+PSAwKSByZXR1cm4gMVxuICAgIGlmIChuZXcgQk4oc2lnUykuY21wKGVjcGFyYW1zLm4pID49IDApIHJldHVybiAxXG5cbiAgICBjb25zdCB7IG91dHB1dCB9ID0gb2JqXG5cbiAgICAvLyBQcmVwYXJlIFJcbiAgICBsZXQgciA9IG91dHB1dC5zdWJhcnJheSg0LCA0ICsgMzMpXG4gICAgclswXSA9IDB4MDBcbiAgICByLnNldChzaWdSLCAxKVxuXG4gICAgbGV0IGxlblIgPSAzM1xuICAgIGxldCBwb3NSID0gMFxuICAgIGZvciAoOyBsZW5SID4gMSAmJiByW3Bvc1JdID09PSAweDAwICYmICEocltwb3NSICsgMV0gJiAweDgwKTsgLS1sZW5SLCArK3Bvc1IpO1xuXG4gICAgciA9IHIuc3ViYXJyYXkocG9zUilcbiAgICBpZiAoclswXSAmIDB4ODApIHJldHVybiAxXG4gICAgaWYgKGxlblIgPiAxICYmIChyWzBdID09PSAweDAwKSAmJiAhKHJbMV0gJiAweDgwKSkgcmV0dXJuIDFcblxuICAgIC8vIFByZXBhcmUgU1xuICAgIGxldCBzID0gb3V0cHV0LnN1YmFycmF5KDYgKyAzMywgNiArIDMzICsgMzMpXG4gICAgc1swXSA9IDB4MDBcbiAgICBzLnNldChzaWdTLCAxKVxuXG4gICAgbGV0IGxlblMgPSAzM1xuICAgIGxldCBwb3NTID0gMFxuICAgIGZvciAoOyBsZW5TID4gMSAmJiBzW3Bvc1NdID09PSAweDAwICYmICEoc1twb3NTICsgMV0gJiAweDgwKTsgLS1sZW5TLCArK3Bvc1MpO1xuXG4gICAgcyA9IHMuc3ViYXJyYXkocG9zUylcbiAgICBpZiAoc1swXSAmIDB4ODApIHJldHVybiAxXG4gICAgaWYgKGxlblMgPiAxICYmIChzWzBdID09PSAweDAwKSAmJiAhKHNbMV0gJiAweDgwKSkgcmV0dXJuIDFcblxuICAgIC8vIFNldCBvdXRwdXQgbGVuZ3RoIGZvciByZXR1cm5cbiAgICBvYmoub3V0cHV0bGVuID0gNiArIGxlblIgKyBsZW5TXG5cbiAgICAvLyBPdXRwdXQgaW4gc3BlY2lmaWVkIGZvcm1hdFxuICAgIC8vIDB4MzAgW3RvdGFsLWxlbmd0aF0gMHgwMiBbUi1sZW5ndGhdIFtSXSAweDAyIFtTLWxlbmd0aF0gW1NdXG4gICAgb3V0cHV0WzBdID0gMHgzMFxuICAgIG91dHB1dFsxXSA9IG9iai5vdXRwdXRsZW4gLSAyXG4gICAgb3V0cHV0WzJdID0gMHgwMlxuICAgIG91dHB1dFszXSA9IHIubGVuZ3RoXG4gICAgb3V0cHV0LnNldChyLCA0KVxuICAgIG91dHB1dFs0ICsgbGVuUl0gPSAweDAyXG4gICAgb3V0cHV0WzUgKyBsZW5SXSA9IHMubGVuZ3RoXG4gICAgb3V0cHV0LnNldChzLCA2ICsgbGVuUilcblxuICAgIHJldHVybiAwXG4gIH0sXG5cbiAgLy8gQ29waWVkIDEtdG8tMSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luanMvYmlwNjYvYmxvYi9tYXN0ZXIvaW5kZXguanNcbiAgLy8gQWRhcHRlZCBmb3IgVWludDhBcnJheSBpbnN0ZWFkIEJ1ZmZlclxuICBzaWduYXR1cmVJbXBvcnQgKG91dHB1dCwgc2lnKSB7XG4gICAgaWYgKHNpZy5sZW5ndGggPCA4KSByZXR1cm4gMVxuICAgIGlmIChzaWcubGVuZ3RoID4gNzIpIHJldHVybiAxXG4gICAgaWYgKHNpZ1swXSAhPT0gMHgzMCkgcmV0dXJuIDFcbiAgICBpZiAoc2lnWzFdICE9PSBzaWcubGVuZ3RoIC0gMikgcmV0dXJuIDFcbiAgICBpZiAoc2lnWzJdICE9PSAweDAyKSByZXR1cm4gMVxuXG4gICAgY29uc3QgbGVuUiA9IHNpZ1szXVxuICAgIGlmIChsZW5SID09PSAwKSByZXR1cm4gMVxuICAgIGlmICg1ICsgbGVuUiA+PSBzaWcubGVuZ3RoKSByZXR1cm4gMVxuICAgIGlmIChzaWdbNCArIGxlblJdICE9PSAweDAyKSByZXR1cm4gMVxuXG4gICAgY29uc3QgbGVuUyA9IHNpZ1s1ICsgbGVuUl1cbiAgICBpZiAobGVuUyA9PT0gMCkgcmV0dXJuIDFcbiAgICBpZiAoKDYgKyBsZW5SICsgbGVuUykgIT09IHNpZy5sZW5ndGgpIHJldHVybiAxXG5cbiAgICBpZiAoc2lnWzRdICYgMHg4MCkgcmV0dXJuIDFcbiAgICBpZiAobGVuUiA+IDEgJiYgKHNpZ1s0XSA9PT0gMHgwMCkgJiYgIShzaWdbNV0gJiAweDgwKSkgcmV0dXJuIDFcblxuICAgIGlmIChzaWdbbGVuUiArIDZdICYgMHg4MCkgcmV0dXJuIDFcbiAgICBpZiAobGVuUyA+IDEgJiYgKHNpZ1tsZW5SICsgNl0gPT09IDB4MDApICYmICEoc2lnW2xlblIgKyA3XSAmIDB4ODApKSByZXR1cm4gMVxuXG4gICAgbGV0IHNpZ1IgPSBzaWcuc3ViYXJyYXkoNCwgNCArIGxlblIpXG4gICAgaWYgKHNpZ1IubGVuZ3RoID09PSAzMyAmJiBzaWdSWzBdID09PSAweDAwKSBzaWdSID0gc2lnUi5zdWJhcnJheSgxKVxuICAgIGlmIChzaWdSLmxlbmd0aCA+IDMyKSByZXR1cm4gMVxuXG4gICAgbGV0IHNpZ1MgPSBzaWcuc3ViYXJyYXkoNiArIGxlblIpXG4gICAgaWYgKHNpZ1MubGVuZ3RoID09PSAzMyAmJiBzaWdTWzBdID09PSAweDAwKSBzaWdTID0gc2lnUy5zbGljZSgxKVxuICAgIGlmIChzaWdTLmxlbmd0aCA+IDMyKSB0aHJvdyBuZXcgRXJyb3IoJ1MgbGVuZ3RoIGlzIHRvbyBsb25nJylcblxuICAgIGxldCByID0gbmV3IEJOKHNpZ1IpXG4gICAgaWYgKHIuY21wKGVjcGFyYW1zLm4pID49IDApIHIgPSBuZXcgQk4oMClcblxuICAgIGxldCBzID0gbmV3IEJOKHNpZy5zdWJhcnJheSg2ICsgbGVuUikpXG4gICAgaWYgKHMuY21wKGVjcGFyYW1zLm4pID49IDApIHMgPSBuZXcgQk4oMClcblxuICAgIG91dHB1dC5zZXQoci50b0FycmF5TGlrZShVaW50OEFycmF5LCAnYmUnLCAzMiksIDApXG4gICAgb3V0cHV0LnNldChzLnRvQXJyYXlMaWtlKFVpbnQ4QXJyYXksICdiZScsIDMyKSwgMzIpXG5cbiAgICByZXR1cm4gMFxuICB9LFxuXG4gIGVjZHNhU2lnbiAob2JqLCBtZXNzYWdlLCBzZWNrZXksIGRhdGEsIG5vbmNlZm4pIHtcbiAgICBpZiAobm9uY2Vmbikge1xuICAgICAgY29uc3QgX25vbmNlZm4gPSBub25jZWZuXG4gICAgICBub25jZWZuID0gKGNvdW50ZXIpID0+IHtcbiAgICAgICAgY29uc3Qgbm9uY2UgPSBfbm9uY2VmbihtZXNzYWdlLCBzZWNrZXksIG51bGwsIGRhdGEsIGNvdW50ZXIpXG5cbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IG5vbmNlIGluc3RhbmNlb2YgVWludDhBcnJheSAmJiBub25jZS5sZW5ndGggPT09IDMyXG4gICAgICAgIGlmICghaXNWYWxpZCkgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGlzIHRoZSB3YXknKVxuXG4gICAgICAgIHJldHVybiBuZXcgQk4obm9uY2UpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZCA9IG5ldyBCTihzZWNrZXkpXG4gICAgaWYgKGQuY21wKGVjcGFyYW1zLm4pID49IDAgfHwgZC5pc1plcm8oKSkgcmV0dXJuIDFcblxuICAgIGxldCBzaWdcbiAgICB0cnkge1xuICAgICAgc2lnID0gZWMuc2lnbihtZXNzYWdlLCBzZWNrZXksIHsgY2Fub25pY2FsOiB0cnVlLCBrOiBub25jZWZuLCBwZXJzOiBkYXRhIH0pXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gMVxuICAgIH1cblxuICAgIG9iai5zaWduYXR1cmUuc2V0KHNpZy5yLnRvQXJyYXlMaWtlKFVpbnQ4QXJyYXksICdiZScsIDMyKSwgMClcbiAgICBvYmouc2lnbmF0dXJlLnNldChzaWcucy50b0FycmF5TGlrZShVaW50OEFycmF5LCAnYmUnLCAzMiksIDMyKVxuICAgIG9iai5yZWNpZCA9IHNpZy5yZWNvdmVyeVBhcmFtXG5cbiAgICByZXR1cm4gMFxuICB9LFxuXG4gIGVjZHNhVmVyaWZ5IChzaWcsIG1zZzMyLCBwdWJrZXkpIHtcbiAgICBjb25zdCBzaWdPYmogPSB7IHI6IHNpZy5zdWJhcnJheSgwLCAzMiksIHM6IHNpZy5zdWJhcnJheSgzMiwgNjQpIH1cblxuICAgIGNvbnN0IHNpZ3IgPSBuZXcgQk4oc2lnT2JqLnIpXG4gICAgY29uc3Qgc2lncyA9IG5ldyBCTihzaWdPYmoucylcbiAgICBpZiAoc2lnci5jbXAoZWNwYXJhbXMubikgPj0gMCB8fCBzaWdzLmNtcChlY3BhcmFtcy5uKSA+PSAwKSByZXR1cm4gMVxuICAgIGlmIChzaWdzLmNtcChlYy5uaCkgPT09IDEgfHwgc2lnci5pc1plcm8oKSB8fCBzaWdzLmlzWmVybygpKSByZXR1cm4gM1xuXG4gICAgY29uc3QgcGFpciA9IGxvYWRQdWJsaWNLZXkocHVia2V5KVxuICAgIGlmIChwYWlyID09PSBudWxsKSByZXR1cm4gMlxuXG4gICAgY29uc3QgcG9pbnQgPSBwYWlyLmdldFB1YmxpYygpXG4gICAgY29uc3QgaXNWYWxpZCA9IGVjLnZlcmlmeShtc2czMiwgc2lnT2JqLCBwb2ludClcbiAgICByZXR1cm4gaXNWYWxpZCA/IDAgOiAzXG4gIH0sXG5cbiAgZWNkc2FSZWNvdmVyIChvdXRwdXQsIHNpZywgcmVjaWQsIG1zZzMyKSB7XG4gICAgY29uc3Qgc2lnT2JqID0geyByOiBzaWcuc2xpY2UoMCwgMzIpLCBzOiBzaWcuc2xpY2UoMzIsIDY0KSB9XG5cbiAgICBjb25zdCBzaWdyID0gbmV3IEJOKHNpZ09iai5yKVxuICAgIGNvbnN0IHNpZ3MgPSBuZXcgQk4oc2lnT2JqLnMpXG4gICAgaWYgKHNpZ3IuY21wKGVjcGFyYW1zLm4pID49IDAgfHwgc2lncy5jbXAoZWNwYXJhbXMubikgPj0gMCkgcmV0dXJuIDFcblxuICAgIGlmIChzaWdyLmlzWmVybygpIHx8IHNpZ3MuaXNaZXJvKCkpIHJldHVybiAyXG5cbiAgICAvLyBDYW4gdGhyb3cgYHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgc2VuY29uZCBrZXkgY2FuZGluYXRlJyk7YFxuICAgIGxldCBwb2ludFxuICAgIHRyeSB7XG4gICAgICBwb2ludCA9IGVjLnJlY292ZXJQdWJLZXkobXNnMzIsIHNpZ09iaiwgcmVjaWQpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gMlxuICAgIH1cblxuICAgIHNhdmVQdWJsaWNLZXkob3V0cHV0LCBwb2ludClcblxuICAgIHJldHVybiAwXG4gIH0sXG5cbiAgZWNkaCAob3V0cHV0LCBwdWJrZXksIHNlY2tleSwgZGF0YSwgaGFzaGZuLCB4YnVmLCB5YnVmKSB7XG4gICAgY29uc3QgcGFpciA9IGxvYWRQdWJsaWNLZXkocHVia2V5KVxuICAgIGlmIChwYWlyID09PSBudWxsKSByZXR1cm4gMVxuXG4gICAgY29uc3Qgc2NhbGFyID0gbmV3IEJOKHNlY2tleSlcbiAgICBpZiAoc2NhbGFyLmNtcChlY3BhcmFtcy5uKSA+PSAwIHx8IHNjYWxhci5pc1plcm8oKSkgcmV0dXJuIDJcblxuICAgIGNvbnN0IHBvaW50ID0gcGFpci5nZXRQdWJsaWMoKS5tdWwoc2NhbGFyKVxuXG4gICAgaWYgKGhhc2hmbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkYXRhID0gcG9pbnQuZW5jb2RlKG51bGwsIHRydWUpXG4gICAgICBjb25zdCBzaGEyNTYgPSBlYy5oYXNoKCkudXBkYXRlKGRhdGEpLmRpZ2VzdCgpXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDMyOyArK2kpIG91dHB1dFtpXSA9IHNoYTI1NltpXVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXhidWYpIHhidWYgPSBuZXcgVWludDhBcnJheSgzMilcbiAgICAgIGNvbnN0IHggPSBwb2ludC5nZXRYKCkudG9BcnJheSgnYmUnLCAzMilcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzI7ICsraSkgeGJ1ZltpXSA9IHhbaV1cblxuICAgICAgaWYgKCF5YnVmKSB5YnVmID0gbmV3IFVpbnQ4QXJyYXkoMzIpXG4gICAgICBjb25zdCB5ID0gcG9pbnQuZ2V0WSgpLnRvQXJyYXkoJ2JlJywgMzIpXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDMyOyArK2kpIHlidWZbaV0gPSB5W2ldXG5cbiAgICAgIGNvbnN0IGhhc2ggPSBoYXNoZm4oeGJ1ZiwgeWJ1ZiwgZGF0YSlcblxuICAgICAgY29uc3QgaXNWYWxpZCA9IGhhc2ggaW5zdGFuY2VvZiBVaW50OEFycmF5ICYmIGhhc2gubGVuZ3RoID09PSBvdXRwdXQubGVuZ3RoXG4gICAgICBpZiAoIWlzVmFsaWQpIHJldHVybiAyXG5cbiAgICAgIG91dHB1dC5zZXQoaGFzaClcbiAgICB9XG5cbiAgICByZXR1cm4gMFxuICB9XG59XG4iLCJjb25zdCBlcnJvcnMgPSB7XG4gIElNUE9TU0lCTEVfQ0FTRTogJ0ltcG9zc2libGUgY2FzZS4gUGxlYXNlIGNyZWF0ZSBpc3N1ZS4nLFxuICBUV0VBS19BREQ6XG4gICAgJ1RoZSB0d2VhayB3YXMgb3V0IG9mIHJhbmdlIG9yIHRoZSByZXN1bHRlZCBwcml2YXRlIGtleSBpcyBpbnZhbGlkJyxcbiAgVFdFQUtfTVVMOiAnVGhlIHR3ZWFrIHdhcyBvdXQgb2YgcmFuZ2Ugb3IgZXF1YWwgdG8gemVybycsXG4gIENPTlRFWFRfUkFORE9NSVpFX1VOS05PVzogJ1Vua25vdyBlcnJvciBvbiBjb250ZXh0IHJhbmRvbWl6YXRpb24nLFxuICBTRUNLRVlfSU5WQUxJRDogJ1ByaXZhdGUgS2V5IGlzIGludmFsaWQnLFxuICBQVUJLRVlfUEFSU0U6ICdQdWJsaWMgS2V5IGNvdWxkIG5vdCBiZSBwYXJzZWQnLFxuICBQVUJLRVlfU0VSSUFMSVpFOiAnUHVibGljIEtleSBzZXJpYWxpemF0aW9uIGVycm9yJyxcbiAgUFVCS0VZX0NPTUJJTkU6ICdUaGUgc3VtIG9mIHRoZSBwdWJsaWMga2V5cyBpcyBub3QgdmFsaWQnLFxuICBTSUdfUEFSU0U6ICdTaWduYXR1cmUgY291bGQgbm90IGJlIHBhcnNlZCcsXG4gIFNJR046ICdUaGUgbm9uY2UgZ2VuZXJhdGlvbiBmdW5jdGlvbiBmYWlsZWQsIG9yIHRoZSBwcml2YXRlIGtleSB3YXMgaW52YWxpZCcsXG4gIFJFQ09WRVI6ICdQdWJsaWMga2V5IGNvdWxkIG5vdCBiZSByZWNvdmVyJyxcbiAgRUNESDogJ1NjYWxhciB3YXMgaW52YWxpZCAoemVybyBvciBvdmVyZmxvdyknXG59XG5cbmZ1bmN0aW9uIGFzc2VydCAoY29uZCwgbXNnKSB7XG4gIGlmICghY29uZCkgdGhyb3cgbmV3IEVycm9yKG1zZylcbn1cblxuZnVuY3Rpb24gaXNVaW50OEFycmF5IChuYW1lLCB2YWx1ZSwgbGVuZ3RoKSB7XG4gIGFzc2VydCh2YWx1ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXksIGBFeHBlY3RlZCAke25hbWV9IHRvIGJlIGFuIFVpbnQ4QXJyYXlgKVxuXG4gIGlmIChsZW5ndGggIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGxlbmd0aCkpIHtcbiAgICAgIGNvbnN0IG51bWJlcnMgPSBsZW5ndGguam9pbignLCAnKVxuICAgICAgY29uc3QgbXNnID0gYEV4cGVjdGVkICR7bmFtZX0gdG8gYmUgYW4gVWludDhBcnJheSB3aXRoIGxlbmd0aCBbJHtudW1iZXJzfV1gXG4gICAgICBhc3NlcnQobGVuZ3RoLmluY2x1ZGVzKHZhbHVlLmxlbmd0aCksIG1zZylcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbXNnID0gYEV4cGVjdGVkICR7bmFtZX0gdG8gYmUgYW4gVWludDhBcnJheSB3aXRoIGxlbmd0aCAke2xlbmd0aH1gXG4gICAgICBhc3NlcnQodmFsdWUubGVuZ3RoID09PSBsZW5ndGgsIG1zZylcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNDb21wcmVzc2VkICh2YWx1ZSkge1xuICBhc3NlcnQodG9UeXBlU3RyaW5nKHZhbHVlKSA9PT0gJ0Jvb2xlYW4nLCAnRXhwZWN0ZWQgY29tcHJlc3NlZCB0byBiZSBhIEJvb2xlYW4nKVxufVxuXG5mdW5jdGlvbiBnZXRBc3NlcnRlZE91dHB1dCAob3V0cHV0ID0gKGxlbikgPT4gbmV3IFVpbnQ4QXJyYXkobGVuKSwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2Ygb3V0cHV0ID09PSAnZnVuY3Rpb24nKSBvdXRwdXQgPSBvdXRwdXQobGVuZ3RoKVxuICBpc1VpbnQ4QXJyYXkoJ291dHB1dCcsIG91dHB1dCwgbGVuZ3RoKVxuICByZXR1cm4gb3V0cHV0XG59XG5cbmZ1bmN0aW9uIHRvVHlwZVN0cmluZyAodmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkuc2xpY2UoOCwgLTEpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gKHNlY3AyNTZrMSkgPT4ge1xuICByZXR1cm4ge1xuICAgIGNvbnRleHRSYW5kb21pemUgKHNlZWQpIHtcbiAgICAgIGFzc2VydChcbiAgICAgICAgc2VlZCA9PT0gbnVsbCB8fCBzZWVkIGluc3RhbmNlb2YgVWludDhBcnJheSxcbiAgICAgICAgJ0V4cGVjdGVkIHNlZWQgdG8gYmUgYW4gVWludDhBcnJheSBvciBudWxsJ1xuICAgICAgKVxuICAgICAgaWYgKHNlZWQgIT09IG51bGwpIGlzVWludDhBcnJheSgnc2VlZCcsIHNlZWQsIDMyKVxuXG4gICAgICBzd2l0Y2ggKHNlY3AyNTZrMS5jb250ZXh0UmFuZG9taXplKHNlZWQpKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLkNPTlRFWFRfUkFORE9NSVpFX1VOS05PVylcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgcHJpdmF0ZUtleVZlcmlmeSAoc2Vja2V5KSB7XG4gICAgICBpc1VpbnQ4QXJyYXkoJ3ByaXZhdGUga2V5Jywgc2Vja2V5LCAzMilcblxuICAgICAgcmV0dXJuIHNlY3AyNTZrMS5wcml2YXRlS2V5VmVyaWZ5KHNlY2tleSkgPT09IDBcbiAgICB9LFxuXG4gICAgcHJpdmF0ZUtleU5lZ2F0ZSAoc2Vja2V5KSB7XG4gICAgICBpc1VpbnQ4QXJyYXkoJ3ByaXZhdGUga2V5Jywgc2Vja2V5LCAzMilcblxuICAgICAgc3dpdGNoIChzZWNwMjU2azEucHJpdmF0ZUtleU5lZ2F0ZShzZWNrZXkpKSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICByZXR1cm4gc2Vja2V5XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLklNUE9TU0lCTEVfQ0FTRSlcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgcHJpdmF0ZUtleVR3ZWFrQWRkIChzZWNrZXksIHR3ZWFrKSB7XG4gICAgICBpc1VpbnQ4QXJyYXkoJ3ByaXZhdGUga2V5Jywgc2Vja2V5LCAzMilcbiAgICAgIGlzVWludDhBcnJheSgndHdlYWsnLCB0d2VhaywgMzIpXG5cbiAgICAgIHN3aXRjaCAoc2VjcDI1NmsxLnByaXZhdGVLZXlUd2Vha0FkZChzZWNrZXksIHR3ZWFrKSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgcmV0dXJuIHNlY2tleVxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9ycy5UV0VBS19BREQpXG4gICAgICB9XG4gICAgfSxcblxuICAgIHByaXZhdGVLZXlUd2Vha011bCAoc2Vja2V5LCB0d2Vhaykge1xuICAgICAgaXNVaW50OEFycmF5KCdwcml2YXRlIGtleScsIHNlY2tleSwgMzIpXG4gICAgICBpc1VpbnQ4QXJyYXkoJ3R3ZWFrJywgdHdlYWssIDMyKVxuXG4gICAgICBzd2l0Y2ggKHNlY3AyNTZrMS5wcml2YXRlS2V5VHdlYWtNdWwoc2Vja2V5LCB0d2VhaykpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIHJldHVybiBzZWNrZXlcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcnMuVFdFQUtfTVVMKVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBwdWJsaWNLZXlWZXJpZnkgKHB1YmtleSkge1xuICAgICAgaXNVaW50OEFycmF5KCdwdWJsaWMga2V5JywgcHVia2V5LCBbMzMsIDY1XSlcblxuICAgICAgcmV0dXJuIHNlY3AyNTZrMS5wdWJsaWNLZXlWZXJpZnkocHVia2V5KSA9PT0gMFxuICAgIH0sXG5cbiAgICBwdWJsaWNLZXlDcmVhdGUgKHNlY2tleSwgY29tcHJlc3NlZCA9IHRydWUsIG91dHB1dCkge1xuICAgICAgaXNVaW50OEFycmF5KCdwcml2YXRlIGtleScsIHNlY2tleSwgMzIpXG4gICAgICBpc0NvbXByZXNzZWQoY29tcHJlc3NlZClcbiAgICAgIG91dHB1dCA9IGdldEFzc2VydGVkT3V0cHV0KG91dHB1dCwgY29tcHJlc3NlZCA/IDMzIDogNjUpXG5cbiAgICAgIHN3aXRjaCAoc2VjcDI1NmsxLnB1YmxpY0tleUNyZWF0ZShvdXRwdXQsIHNlY2tleSkpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIHJldHVybiBvdXRwdXRcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcnMuU0VDS0VZX0lOVkFMSUQpXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLlBVQktFWV9TRVJJQUxJWkUpXG4gICAgICB9XG4gICAgfSxcblxuICAgIHB1YmxpY0tleUNvbnZlcnQgKHB1YmtleSwgY29tcHJlc3NlZCA9IHRydWUsIG91dHB1dCkge1xuICAgICAgaXNVaW50OEFycmF5KCdwdWJsaWMga2V5JywgcHVia2V5LCBbMzMsIDY1XSlcbiAgICAgIGlzQ29tcHJlc3NlZChjb21wcmVzc2VkKVxuICAgICAgb3V0cHV0ID0gZ2V0QXNzZXJ0ZWRPdXRwdXQob3V0cHV0LCBjb21wcmVzc2VkID8gMzMgOiA2NSlcblxuICAgICAgc3dpdGNoIChzZWNwMjU2azEucHVibGljS2V5Q29udmVydChvdXRwdXQsIHB1YmtleSkpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIHJldHVybiBvdXRwdXRcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcnMuUFVCS0VZX1BBUlNFKVxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9ycy5QVUJLRVlfU0VSSUFMSVpFKVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBwdWJsaWNLZXlOZWdhdGUgKHB1YmtleSwgY29tcHJlc3NlZCA9IHRydWUsIG91dHB1dCkge1xuICAgICAgaXNVaW50OEFycmF5KCdwdWJsaWMga2V5JywgcHVia2V5LCBbMzMsIDY1XSlcbiAgICAgIGlzQ29tcHJlc3NlZChjb21wcmVzc2VkKVxuICAgICAgb3V0cHV0ID0gZ2V0QXNzZXJ0ZWRPdXRwdXQob3V0cHV0LCBjb21wcmVzc2VkID8gMzMgOiA2NSlcblxuICAgICAgc3dpdGNoIChzZWNwMjU2azEucHVibGljS2V5TmVnYXRlKG91dHB1dCwgcHVia2V5KSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgcmV0dXJuIG91dHB1dFxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9ycy5QVUJLRVlfUEFSU0UpXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLklNUE9TU0lCTEVfQ0FTRSlcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcnMuUFVCS0VZX1NFUklBTElaRSlcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgcHVibGljS2V5Q29tYmluZSAocHVia2V5cywgY29tcHJlc3NlZCA9IHRydWUsIG91dHB1dCkge1xuICAgICAgYXNzZXJ0KEFycmF5LmlzQXJyYXkocHVia2V5cyksICdFeHBlY3RlZCBwdWJsaWMga2V5cyB0byBiZSBhbiBBcnJheScpXG4gICAgICBhc3NlcnQocHVia2V5cy5sZW5ndGggPiAwLCAnRXhwZWN0ZWQgcHVibGljIGtleXMgYXJyYXkgd2lsbCBoYXZlIG1vcmUgdGhhbiB6ZXJvIGl0ZW1zJylcbiAgICAgIGZvciAoY29uc3QgcHVia2V5IG9mIHB1YmtleXMpIHtcbiAgICAgICAgaXNVaW50OEFycmF5KCdwdWJsaWMga2V5JywgcHVia2V5LCBbMzMsIDY1XSlcbiAgICAgIH1cbiAgICAgIGlzQ29tcHJlc3NlZChjb21wcmVzc2VkKVxuICAgICAgb3V0cHV0ID0gZ2V0QXNzZXJ0ZWRPdXRwdXQob3V0cHV0LCBjb21wcmVzc2VkID8gMzMgOiA2NSlcblxuICAgICAgc3dpdGNoIChzZWNwMjU2azEucHVibGljS2V5Q29tYmluZShvdXRwdXQsIHB1YmtleXMpKSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICByZXR1cm4gb3V0cHV0XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLlBVQktFWV9QQVJTRSlcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcnMuUFVCS0VZX0NPTUJJTkUpXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLlBVQktFWV9TRVJJQUxJWkUpXG4gICAgICB9XG4gICAgfSxcblxuICAgIHB1YmxpY0tleVR3ZWFrQWRkIChwdWJrZXksIHR3ZWFrLCBjb21wcmVzc2VkID0gdHJ1ZSwgb3V0cHV0KSB7XG4gICAgICBpc1VpbnQ4QXJyYXkoJ3B1YmxpYyBrZXknLCBwdWJrZXksIFszMywgNjVdKVxuICAgICAgaXNVaW50OEFycmF5KCd0d2VhaycsIHR3ZWFrLCAzMilcbiAgICAgIGlzQ29tcHJlc3NlZChjb21wcmVzc2VkKVxuICAgICAgb3V0cHV0ID0gZ2V0QXNzZXJ0ZWRPdXRwdXQob3V0cHV0LCBjb21wcmVzc2VkID8gMzMgOiA2NSlcblxuICAgICAgc3dpdGNoIChzZWNwMjU2azEucHVibGljS2V5VHdlYWtBZGQob3V0cHV0LCBwdWJrZXksIHR3ZWFrKSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgcmV0dXJuIG91dHB1dFxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9ycy5QVUJLRVlfUEFSU0UpXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLlRXRUFLX0FERClcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgcHVibGljS2V5VHdlYWtNdWwgKHB1YmtleSwgdHdlYWssIGNvbXByZXNzZWQgPSB0cnVlLCBvdXRwdXQpIHtcbiAgICAgIGlzVWludDhBcnJheSgncHVibGljIGtleScsIHB1YmtleSwgWzMzLCA2NV0pXG4gICAgICBpc1VpbnQ4QXJyYXkoJ3R3ZWFrJywgdHdlYWssIDMyKVxuICAgICAgaXNDb21wcmVzc2VkKGNvbXByZXNzZWQpXG4gICAgICBvdXRwdXQgPSBnZXRBc3NlcnRlZE91dHB1dChvdXRwdXQsIGNvbXByZXNzZWQgPyAzMyA6IDY1KVxuXG4gICAgICBzd2l0Y2ggKHNlY3AyNTZrMS5wdWJsaWNLZXlUd2Vha011bChvdXRwdXQsIHB1YmtleSwgdHdlYWspKSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICByZXR1cm4gb3V0cHV0XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLlBVQktFWV9QQVJTRSlcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcnMuVFdFQUtfTVVMKVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBzaWduYXR1cmVOb3JtYWxpemUgKHNpZykge1xuICAgICAgaXNVaW50OEFycmF5KCdzaWduYXR1cmUnLCBzaWcsIDY0KVxuXG4gICAgICBzd2l0Y2ggKHNlY3AyNTZrMS5zaWduYXR1cmVOb3JtYWxpemUoc2lnKSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgcmV0dXJuIHNpZ1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9ycy5TSUdfUEFSU0UpXG4gICAgICB9XG4gICAgfSxcblxuICAgIHNpZ25hdHVyZUV4cG9ydCAoc2lnLCBvdXRwdXQpIHtcbiAgICAgIGlzVWludDhBcnJheSgnc2lnbmF0dXJlJywgc2lnLCA2NClcbiAgICAgIG91dHB1dCA9IGdldEFzc2VydGVkT3V0cHV0KG91dHB1dCwgNzIpXG5cbiAgICAgIGNvbnN0IG9iaiA9IHsgb3V0cHV0LCBvdXRwdXRsZW46IDcyIH1cbiAgICAgIHN3aXRjaCAoc2VjcDI1NmsxLnNpZ25hdHVyZUV4cG9ydChvYmosIHNpZykpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIHJldHVybiBvdXRwdXQuc2xpY2UoMCwgb2JqLm91dHB1dGxlbilcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcnMuU0lHX1BBUlNFKVxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9ycy5JTVBPU1NJQkxFX0NBU0UpXG4gICAgICB9XG4gICAgfSxcblxuICAgIHNpZ25hdHVyZUltcG9ydCAoc2lnLCBvdXRwdXQpIHtcbiAgICAgIGlzVWludDhBcnJheSgnc2lnbmF0dXJlJywgc2lnKVxuICAgICAgb3V0cHV0ID0gZ2V0QXNzZXJ0ZWRPdXRwdXQob3V0cHV0LCA2NClcblxuICAgICAgc3dpdGNoIChzZWNwMjU2azEuc2lnbmF0dXJlSW1wb3J0KG91dHB1dCwgc2lnKSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgcmV0dXJuIG91dHB1dFxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9ycy5TSUdfUEFSU0UpXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLklNUE9TU0lCTEVfQ0FTRSlcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgZWNkc2FTaWduIChtc2czMiwgc2Vja2V5LCBvcHRpb25zID0ge30sIG91dHB1dCkge1xuICAgICAgaXNVaW50OEFycmF5KCdtZXNzYWdlJywgbXNnMzIsIDMyKVxuICAgICAgaXNVaW50OEFycmF5KCdwcml2YXRlIGtleScsIHNlY2tleSwgMzIpXG4gICAgICBhc3NlcnQodG9UeXBlU3RyaW5nKG9wdGlvbnMpID09PSAnT2JqZWN0JywgJ0V4cGVjdGVkIG9wdGlvbnMgdG8gYmUgYW4gT2JqZWN0JylcbiAgICAgIGlmIChvcHRpb25zLmRhdGEgIT09IHVuZGVmaW5lZCkgaXNVaW50OEFycmF5KCdvcHRpb25zLmRhdGEnLCBvcHRpb25zLmRhdGEpXG4gICAgICBpZiAob3B0aW9ucy5ub25jZWZuICE9PSB1bmRlZmluZWQpIGFzc2VydCh0b1R5cGVTdHJpbmcob3B0aW9ucy5ub25jZWZuKSA9PT0gJ0Z1bmN0aW9uJywgJ0V4cGVjdGVkIG9wdGlvbnMubm9uY2VmbiB0byBiZSBhIEZ1bmN0aW9uJylcbiAgICAgIG91dHB1dCA9IGdldEFzc2VydGVkT3V0cHV0KG91dHB1dCwgNjQpXG5cbiAgICAgIGNvbnN0IG9iaiA9IHsgc2lnbmF0dXJlOiBvdXRwdXQsIHJlY2lkOiBudWxsIH1cbiAgICAgIHN3aXRjaCAoc2VjcDI1NmsxLmVjZHNhU2lnbihvYmosIG1zZzMyLCBzZWNrZXksIG9wdGlvbnMuZGF0YSwgb3B0aW9ucy5ub25jZWZuKSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgcmV0dXJuIG9ialxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9ycy5TSUdOKVxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9ycy5JTVBPU1NJQkxFX0NBU0UpXG4gICAgICB9XG4gICAgfSxcblxuICAgIGVjZHNhVmVyaWZ5IChzaWcsIG1zZzMyLCBwdWJrZXkpIHtcbiAgICAgIGlzVWludDhBcnJheSgnc2lnbmF0dXJlJywgc2lnLCA2NClcbiAgICAgIGlzVWludDhBcnJheSgnbWVzc2FnZScsIG1zZzMyLCAzMilcbiAgICAgIGlzVWludDhBcnJheSgncHVibGljIGtleScsIHB1YmtleSwgWzMzLCA2NV0pXG5cbiAgICAgIHN3aXRjaCAoc2VjcDI1NmsxLmVjZHNhVmVyaWZ5KHNpZywgbXNnMzIsIHB1YmtleSkpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcnMuU0lHX1BBUlNFKVxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9ycy5QVUJLRVlfUEFSU0UpXG4gICAgICB9XG4gICAgfSxcblxuICAgIGVjZHNhUmVjb3ZlciAoc2lnLCByZWNpZCwgbXNnMzIsIGNvbXByZXNzZWQgPSB0cnVlLCBvdXRwdXQpIHtcbiAgICAgIGlzVWludDhBcnJheSgnc2lnbmF0dXJlJywgc2lnLCA2NClcbiAgICAgIGFzc2VydChcbiAgICAgICAgdG9UeXBlU3RyaW5nKHJlY2lkKSA9PT0gJ051bWJlcicgJiZcbiAgICAgICAgICByZWNpZCA+PSAwICYmXG4gICAgICAgICAgcmVjaWQgPD0gMyxcbiAgICAgICAgJ0V4cGVjdGVkIHJlY292ZXJ5IGlkIHRvIGJlIGEgTnVtYmVyIHdpdGhpbiBpbnRlcnZhbCBbMCwgM10nXG4gICAgICApXG4gICAgICBpc1VpbnQ4QXJyYXkoJ21lc3NhZ2UnLCBtc2czMiwgMzIpXG4gICAgICBpc0NvbXByZXNzZWQoY29tcHJlc3NlZClcbiAgICAgIG91dHB1dCA9IGdldEFzc2VydGVkT3V0cHV0KG91dHB1dCwgY29tcHJlc3NlZCA/IDMzIDogNjUpXG5cbiAgICAgIHN3aXRjaCAoc2VjcDI1NmsxLmVjZHNhUmVjb3ZlcihvdXRwdXQsIHNpZywgcmVjaWQsIG1zZzMyKSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgcmV0dXJuIG91dHB1dFxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9ycy5TSUdfUEFSU0UpXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLlJFQ09WRVIpXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLklNUE9TU0lCTEVfQ0FTRSlcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgZWNkaCAocHVia2V5LCBzZWNrZXksIG9wdGlvbnMgPSB7fSwgb3V0cHV0KSB7XG4gICAgICBpc1VpbnQ4QXJyYXkoJ3B1YmxpYyBrZXknLCBwdWJrZXksIFszMywgNjVdKVxuICAgICAgaXNVaW50OEFycmF5KCdwcml2YXRlIGtleScsIHNlY2tleSwgMzIpXG4gICAgICBhc3NlcnQodG9UeXBlU3RyaW5nKG9wdGlvbnMpID09PSAnT2JqZWN0JywgJ0V4cGVjdGVkIG9wdGlvbnMgdG8gYmUgYW4gT2JqZWN0JylcbiAgICAgIGlmIChvcHRpb25zLmRhdGEgIT09IHVuZGVmaW5lZCkgaXNVaW50OEFycmF5KCdvcHRpb25zLmRhdGEnLCBvcHRpb25zLmRhdGEpXG4gICAgICBpZiAob3B0aW9ucy5oYXNoZm4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhc3NlcnQodG9UeXBlU3RyaW5nKG9wdGlvbnMuaGFzaGZuKSA9PT0gJ0Z1bmN0aW9uJywgJ0V4cGVjdGVkIG9wdGlvbnMuaGFzaGZuIHRvIGJlIGEgRnVuY3Rpb24nKVxuICAgICAgICBpZiAob3B0aW9ucy54YnVmICE9PSB1bmRlZmluZWQpIGlzVWludDhBcnJheSgnb3B0aW9ucy54YnVmJywgb3B0aW9ucy54YnVmLCAzMilcbiAgICAgICAgaWYgKG9wdGlvbnMueWJ1ZiAhPT0gdW5kZWZpbmVkKSBpc1VpbnQ4QXJyYXkoJ29wdGlvbnMueWJ1ZicsIG9wdGlvbnMueWJ1ZiwgMzIpXG4gICAgICAgIGlzVWludDhBcnJheSgnb3V0cHV0Jywgb3V0cHV0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0cHV0ID0gZ2V0QXNzZXJ0ZWRPdXRwdXQob3V0cHV0LCAzMilcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChzZWNwMjU2azEuZWNkaChvdXRwdXQsIHB1YmtleSwgc2Vja2V5LCBvcHRpb25zLmRhdGEsIG9wdGlvbnMuaGFzaGZuLCBvcHRpb25zLnhidWYsIG9wdGlvbnMueWJ1ZikpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIHJldHVybiBvdXRwdXRcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcnMuUFVCS0VZX1BBUlNFKVxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9ycy5FQ0RIKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBwdW55Y29kZSA9IHJlcXVpcmUoXCJwdW55Y29kZVwiKTtcbnZhciBtYXBwaW5nVGFibGUgPSByZXF1aXJlKFwiLi9saWIvbWFwcGluZ1RhYmxlLmpzb25cIik7XG5cbnZhciBQUk9DRVNTSU5HX09QVElPTlMgPSB7XG4gIFRSQU5TSVRJT05BTDogMCxcbiAgTk9OVFJBTlNJVElPTkFMOiAxXG59O1xuXG5mdW5jdGlvbiBub3JtYWxpemUoc3RyKSB7IC8vIGZpeCBidWcgaW4gdjhcbiAgcmV0dXJuIHN0ci5zcGxpdCgnXFx1MDAwMCcpLm1hcChmdW5jdGlvbiAocykgeyByZXR1cm4gcy5ub3JtYWxpemUoJ05GQycpOyB9KS5qb2luKCdcXHUwMDAwJyk7XG59XG5cbmZ1bmN0aW9uIGZpbmRTdGF0dXModmFsKSB7XG4gIHZhciBzdGFydCA9IDA7XG4gIHZhciBlbmQgPSBtYXBwaW5nVGFibGUubGVuZ3RoIC0gMTtcblxuICB3aGlsZSAoc3RhcnQgPD0gZW5kKSB7XG4gICAgdmFyIG1pZCA9IE1hdGguZmxvb3IoKHN0YXJ0ICsgZW5kKSAvIDIpO1xuXG4gICAgdmFyIHRhcmdldCA9IG1hcHBpbmdUYWJsZVttaWRdO1xuICAgIGlmICh0YXJnZXRbMF1bMF0gPD0gdmFsICYmIHRhcmdldFswXVsxXSA+PSB2YWwpIHtcbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfSBlbHNlIGlmICh0YXJnZXRbMF1bMF0gPiB2YWwpIHtcbiAgICAgIGVuZCA9IG1pZCAtIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXJ0ID0gbWlkICsgMTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxudmFyIHJlZ2V4QXN0cmFsU3ltYm9scyA9IC9bXFx1RDgwMC1cXHVEQkZGXVtcXHVEQzAwLVxcdURGRkZdL2c7XG5cbmZ1bmN0aW9uIGNvdW50U3ltYm9scyhzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZ1xuICAgIC8vIHJlcGxhY2UgZXZlcnkgc3Vycm9nYXRlIHBhaXIgd2l0aCBhIEJNUCBzeW1ib2xcbiAgICAucmVwbGFjZShyZWdleEFzdHJhbFN5bWJvbHMsICdfJylcbiAgICAvLyB0aGVuIGdldCB0aGUgbGVuZ3RoXG4gICAgLmxlbmd0aDtcbn1cblxuZnVuY3Rpb24gbWFwQ2hhcnMoZG9tYWluX25hbWUsIHVzZVNURDMsIHByb2Nlc3Npbmdfb3B0aW9uKSB7XG4gIHZhciBoYXNFcnJvciA9IGZhbHNlO1xuICB2YXIgcHJvY2Vzc2VkID0gXCJcIjtcblxuICB2YXIgbGVuID0gY291bnRTeW1ib2xzKGRvbWFpbl9uYW1lKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIHZhciBjb2RlUG9pbnQgPSBkb21haW5fbmFtZS5jb2RlUG9pbnRBdChpKTtcbiAgICB2YXIgc3RhdHVzID0gZmluZFN0YXR1cyhjb2RlUG9pbnQpO1xuXG4gICAgc3dpdGNoIChzdGF0dXNbMV0pIHtcbiAgICAgIGNhc2UgXCJkaXNhbGxvd2VkXCI6XG4gICAgICAgIGhhc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgcHJvY2Vzc2VkICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNvZGVQb2ludCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImlnbm9yZWRcIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibWFwcGVkXCI6XG4gICAgICAgIHByb2Nlc3NlZCArPSBTdHJpbmcuZnJvbUNvZGVQb2ludC5hcHBseShTdHJpbmcsIHN0YXR1c1syXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImRldmlhdGlvblwiOlxuICAgICAgICBpZiAocHJvY2Vzc2luZ19vcHRpb24gPT09IFBST0NFU1NJTkdfT1BUSU9OUy5UUkFOU0lUSU9OQUwpIHtcbiAgICAgICAgICBwcm9jZXNzZWQgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQuYXBwbHkoU3RyaW5nLCBzdGF0dXNbMl0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb2Nlc3NlZCArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjb2RlUG9pbnQpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInZhbGlkXCI6XG4gICAgICAgIHByb2Nlc3NlZCArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjb2RlUG9pbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJkaXNhbGxvd2VkX1NURDNfbWFwcGVkXCI6XG4gICAgICAgIGlmICh1c2VTVEQzKSB7XG4gICAgICAgICAgaGFzRXJyb3IgPSB0cnVlO1xuICAgICAgICAgIHByb2Nlc3NlZCArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjb2RlUG9pbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb2Nlc3NlZCArPSBTdHJpbmcuZnJvbUNvZGVQb2ludC5hcHBseShTdHJpbmcsIHN0YXR1c1syXSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZGlzYWxsb3dlZF9TVEQzX3ZhbGlkXCI6XG4gICAgICAgIGlmICh1c2VTVEQzKSB7XG4gICAgICAgICAgaGFzRXJyb3IgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvY2Vzc2VkICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNvZGVQb2ludCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RyaW5nOiBwcm9jZXNzZWQsXG4gICAgZXJyb3I6IGhhc0Vycm9yXG4gIH07XG59XG5cbnZhciBjb21iaW5pbmdNYXJrc1JlZ2V4ID0gL1tcXHUwMzAwLVxcdTAzNkZcXHUwNDgzLVxcdTA0ODlcXHUwNTkxLVxcdTA1QkRcXHUwNUJGXFx1MDVDMVxcdTA1QzJcXHUwNUM0XFx1MDVDNVxcdTA1QzdcXHUwNjEwLVxcdTA2MUFcXHUwNjRCLVxcdTA2NUZcXHUwNjcwXFx1MDZENi1cXHUwNkRDXFx1MDZERi1cXHUwNkU0XFx1MDZFN1xcdTA2RThcXHUwNkVBLVxcdTA2RURcXHUwNzExXFx1MDczMC1cXHUwNzRBXFx1MDdBNi1cXHUwN0IwXFx1MDdFQi1cXHUwN0YzXFx1MDgxNi1cXHUwODE5XFx1MDgxQi1cXHUwODIzXFx1MDgyNS1cXHUwODI3XFx1MDgyOS1cXHUwODJEXFx1MDg1OS1cXHUwODVCXFx1MDhFNC1cXHUwOTAzXFx1MDkzQS1cXHUwOTNDXFx1MDkzRS1cXHUwOTRGXFx1MDk1MS1cXHUwOTU3XFx1MDk2MlxcdTA5NjNcXHUwOTgxLVxcdTA5ODNcXHUwOUJDXFx1MDlCRS1cXHUwOUM0XFx1MDlDN1xcdTA5QzhcXHUwOUNCLVxcdTA5Q0RcXHUwOUQ3XFx1MDlFMlxcdTA5RTNcXHUwQTAxLVxcdTBBMDNcXHUwQTNDXFx1MEEzRS1cXHUwQTQyXFx1MEE0N1xcdTBBNDhcXHUwQTRCLVxcdTBBNERcXHUwQTUxXFx1MEE3MFxcdTBBNzFcXHUwQTc1XFx1MEE4MS1cXHUwQTgzXFx1MEFCQ1xcdTBBQkUtXFx1MEFDNVxcdTBBQzctXFx1MEFDOVxcdTBBQ0ItXFx1MEFDRFxcdTBBRTJcXHUwQUUzXFx1MEIwMS1cXHUwQjAzXFx1MEIzQ1xcdTBCM0UtXFx1MEI0NFxcdTBCNDdcXHUwQjQ4XFx1MEI0Qi1cXHUwQjREXFx1MEI1NlxcdTBCNTdcXHUwQjYyXFx1MEI2M1xcdTBCODJcXHUwQkJFLVxcdTBCQzJcXHUwQkM2LVxcdTBCQzhcXHUwQkNBLVxcdTBCQ0RcXHUwQkQ3XFx1MEMwMC1cXHUwQzAzXFx1MEMzRS1cXHUwQzQ0XFx1MEM0Ni1cXHUwQzQ4XFx1MEM0QS1cXHUwQzREXFx1MEM1NVxcdTBDNTZcXHUwQzYyXFx1MEM2M1xcdTBDODEtXFx1MEM4M1xcdTBDQkNcXHUwQ0JFLVxcdTBDQzRcXHUwQ0M2LVxcdTBDQzhcXHUwQ0NBLVxcdTBDQ0RcXHUwQ0Q1XFx1MENENlxcdTBDRTJcXHUwQ0UzXFx1MEQwMS1cXHUwRDAzXFx1MEQzRS1cXHUwRDQ0XFx1MEQ0Ni1cXHUwRDQ4XFx1MEQ0QS1cXHUwRDREXFx1MEQ1N1xcdTBENjJcXHUwRDYzXFx1MEQ4MlxcdTBEODNcXHUwRENBXFx1MERDRi1cXHUwREQ0XFx1MERENlxcdTBERDgtXFx1MERERlxcdTBERjJcXHUwREYzXFx1MEUzMVxcdTBFMzQtXFx1MEUzQVxcdTBFNDctXFx1MEU0RVxcdTBFQjFcXHUwRUI0LVxcdTBFQjlcXHUwRUJCXFx1MEVCQ1xcdTBFQzgtXFx1MEVDRFxcdTBGMThcXHUwRjE5XFx1MEYzNVxcdTBGMzdcXHUwRjM5XFx1MEYzRVxcdTBGM0ZcXHUwRjcxLVxcdTBGODRcXHUwRjg2XFx1MEY4N1xcdTBGOEQtXFx1MEY5N1xcdTBGOTktXFx1MEZCQ1xcdTBGQzZcXHUxMDJCLVxcdTEwM0VcXHUxMDU2LVxcdTEwNTlcXHUxMDVFLVxcdTEwNjBcXHUxMDYyLVxcdTEwNjRcXHUxMDY3LVxcdTEwNkRcXHUxMDcxLVxcdTEwNzRcXHUxMDgyLVxcdTEwOERcXHUxMDhGXFx1MTA5QS1cXHUxMDlEXFx1MTM1RC1cXHUxMzVGXFx1MTcxMi1cXHUxNzE0XFx1MTczMi1cXHUxNzM0XFx1MTc1MlxcdTE3NTNcXHUxNzcyXFx1MTc3M1xcdTE3QjQtXFx1MTdEM1xcdTE3RERcXHUxODBCLVxcdTE4MERcXHUxOEE5XFx1MTkyMC1cXHUxOTJCXFx1MTkzMC1cXHUxOTNCXFx1MTlCMC1cXHUxOUMwXFx1MTlDOFxcdTE5QzlcXHUxQTE3LVxcdTFBMUJcXHUxQTU1LVxcdTFBNUVcXHUxQTYwLVxcdTFBN0NcXHUxQTdGXFx1MUFCMC1cXHUxQUJFXFx1MUIwMC1cXHUxQjA0XFx1MUIzNC1cXHUxQjQ0XFx1MUI2Qi1cXHUxQjczXFx1MUI4MC1cXHUxQjgyXFx1MUJBMS1cXHUxQkFEXFx1MUJFNi1cXHUxQkYzXFx1MUMyNC1cXHUxQzM3XFx1MUNEMC1cXHUxQ0QyXFx1MUNENC1cXHUxQ0U4XFx1MUNFRFxcdTFDRjItXFx1MUNGNFxcdTFDRjhcXHUxQ0Y5XFx1MURDMC1cXHUxREY1XFx1MURGQy1cXHUxREZGXFx1MjBEMC1cXHUyMEYwXFx1MkNFRi1cXHUyQ0YxXFx1MkQ3RlxcdTJERTAtXFx1MkRGRlxcdTMwMkEtXFx1MzAyRlxcdTMwOTlcXHUzMDlBXFx1QTY2Ri1cXHVBNjcyXFx1QTY3NC1cXHVBNjdEXFx1QTY5RlxcdUE2RjBcXHVBNkYxXFx1QTgwMlxcdUE4MDZcXHVBODBCXFx1QTgyMy1cXHVBODI3XFx1QTg4MFxcdUE4ODFcXHVBOEI0LVxcdUE4QzRcXHVBOEUwLVxcdUE4RjFcXHVBOTI2LVxcdUE5MkRcXHVBOTQ3LVxcdUE5NTNcXHVBOTgwLVxcdUE5ODNcXHVBOUIzLVxcdUE5QzBcXHVBOUU1XFx1QUEyOS1cXHVBQTM2XFx1QUE0M1xcdUFBNENcXHVBQTREXFx1QUE3Qi1cXHVBQTdEXFx1QUFCMFxcdUFBQjItXFx1QUFCNFxcdUFBQjdcXHVBQUI4XFx1QUFCRVxcdUFBQkZcXHVBQUMxXFx1QUFFQi1cXHVBQUVGXFx1QUFGNVxcdUFBRjZcXHVBQkUzLVxcdUFCRUFcXHVBQkVDXFx1QUJFRFxcdUZCMUVcXHVGRTAwLVxcdUZFMEZcXHVGRTIwLVxcdUZFMkRdfFxcdUQ4MDBbXFx1RERGRFxcdURFRTBcXHVERjc2LVxcdURGN0FdfFxcdUQ4MDJbXFx1REUwMS1cXHVERTAzXFx1REUwNVxcdURFMDZcXHVERTBDLVxcdURFMEZcXHVERTM4LVxcdURFM0FcXHVERTNGXFx1REVFNVxcdURFRTZdfFxcdUQ4MDRbXFx1REMwMC1cXHVEQzAyXFx1REMzOC1cXHVEQzQ2XFx1REM3Ri1cXHVEQzgyXFx1RENCMC1cXHVEQ0JBXFx1REQwMC1cXHVERDAyXFx1REQyNy1cXHVERDM0XFx1REQ3M1xcdUREODAtXFx1REQ4MlxcdUREQjMtXFx1RERDMFxcdURFMkMtXFx1REUzN1xcdURFREYtXFx1REVFQVxcdURGMDEtXFx1REYwM1xcdURGM0NcXHVERjNFLVxcdURGNDRcXHVERjQ3XFx1REY0OFxcdURGNEItXFx1REY0RFxcdURGNTdcXHVERjYyXFx1REY2M1xcdURGNjYtXFx1REY2Q1xcdURGNzAtXFx1REY3NF18XFx1RDgwNVtcXHVEQ0IwLVxcdURDQzNcXHVEREFGLVxcdUREQjVcXHVEREI4LVxcdUREQzBcXHVERTMwLVxcdURFNDBcXHVERUFCLVxcdURFQjddfFxcdUQ4MUFbXFx1REVGMC1cXHVERUY0XFx1REYzMC1cXHVERjM2XXxcXHVEODFCW1xcdURGNTEtXFx1REY3RVxcdURGOEYtXFx1REY5Ml18XFx1RDgyRltcXHVEQzlEXFx1REM5RV18XFx1RDgzNFtcXHVERDY1LVxcdURENjlcXHVERDZELVxcdURENzJcXHVERDdCLVxcdUREODJcXHVERDg1LVxcdUREOEJcXHVEREFBLVxcdUREQURcXHVERTQyLVxcdURFNDRdfFxcdUQ4M0FbXFx1RENEMC1cXHVEQ0Q2XXxcXHVEQjQwW1xcdUREMDAtXFx1RERFRl0vO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZUxhYmVsKGxhYmVsLCBwcm9jZXNzaW5nX29wdGlvbikge1xuICBpZiAobGFiZWwuc3Vic3RyKDAsIDQpID09PSBcInhuLS1cIikge1xuICAgIGxhYmVsID0gcHVueWNvZGUudG9Vbmljb2RlKGxhYmVsKTtcbiAgICBwcm9jZXNzaW5nX29wdGlvbiA9IFBST0NFU1NJTkdfT1BUSU9OUy5OT05UUkFOU0lUSU9OQUw7XG4gIH1cblxuICB2YXIgZXJyb3IgPSBmYWxzZTtcblxuICBpZiAobm9ybWFsaXplKGxhYmVsKSAhPT0gbGFiZWwgfHxcbiAgICAgIChsYWJlbFszXSA9PT0gXCItXCIgJiYgbGFiZWxbNF0gPT09IFwiLVwiKSB8fFxuICAgICAgbGFiZWxbMF0gPT09IFwiLVwiIHx8IGxhYmVsW2xhYmVsLmxlbmd0aCAtIDFdID09PSBcIi1cIiB8fFxuICAgICAgbGFiZWwuaW5kZXhPZihcIi5cIikgIT09IC0xIHx8XG4gICAgICBsYWJlbC5zZWFyY2goY29tYmluaW5nTWFya3NSZWdleCkgPT09IDApIHtcbiAgICBlcnJvciA9IHRydWU7XG4gIH1cblxuICB2YXIgbGVuID0gY291bnRTeW1ib2xzKGxhYmVsKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIHZhciBzdGF0dXMgPSBmaW5kU3RhdHVzKGxhYmVsLmNvZGVQb2ludEF0KGkpKTtcbiAgICBpZiAoKHByb2Nlc3NpbmcgPT09IFBST0NFU1NJTkdfT1BUSU9OUy5UUkFOU0lUSU9OQUwgJiYgc3RhdHVzWzFdICE9PSBcInZhbGlkXCIpIHx8XG4gICAgICAgIChwcm9jZXNzaW5nID09PSBQUk9DRVNTSU5HX09QVElPTlMuTk9OVFJBTlNJVElPTkFMICYmXG4gICAgICAgICBzdGF0dXNbMV0gIT09IFwidmFsaWRcIiAmJiBzdGF0dXNbMV0gIT09IFwiZGV2aWF0aW9uXCIpKSB7XG4gICAgICBlcnJvciA9IHRydWU7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGxhYmVsOiBsYWJlbCxcbiAgICBlcnJvcjogZXJyb3JcbiAgfTtcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc2luZyhkb21haW5fbmFtZSwgdXNlU1REMywgcHJvY2Vzc2luZ19vcHRpb24pIHtcbiAgdmFyIHJlc3VsdCA9IG1hcENoYXJzKGRvbWFpbl9uYW1lLCB1c2VTVEQzLCBwcm9jZXNzaW5nX29wdGlvbik7XG4gIHJlc3VsdC5zdHJpbmcgPSBub3JtYWxpemUocmVzdWx0LnN0cmluZyk7XG5cbiAgdmFyIGxhYmVscyA9IHJlc3VsdC5zdHJpbmcuc3BsaXQoXCIuXCIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxhYmVscy5sZW5ndGg7ICsraSkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgdmFsaWRhdGlvbiA9IHZhbGlkYXRlTGFiZWwobGFiZWxzW2ldKTtcbiAgICAgIGxhYmVsc1tpXSA9IHZhbGlkYXRpb24ubGFiZWw7XG4gICAgICByZXN1bHQuZXJyb3IgPSByZXN1bHQuZXJyb3IgfHwgdmFsaWRhdGlvbi5lcnJvcjtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgIHJlc3VsdC5lcnJvciA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdHJpbmc6IGxhYmVscy5qb2luKFwiLlwiKSxcbiAgICBlcnJvcjogcmVzdWx0LmVycm9yXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzLnRvQVNDSUkgPSBmdW5jdGlvbihkb21haW5fbmFtZSwgdXNlU1REMywgcHJvY2Vzc2luZ19vcHRpb24sIHZlcmlmeURuc0xlbmd0aCkge1xuICB2YXIgcmVzdWx0ID0gcHJvY2Vzc2luZyhkb21haW5fbmFtZSwgdXNlU1REMywgcHJvY2Vzc2luZ19vcHRpb24pO1xuICB2YXIgbGFiZWxzID0gcmVzdWx0LnN0cmluZy5zcGxpdChcIi5cIik7XG4gIGxhYmVscyA9IGxhYmVscy5tYXAoZnVuY3Rpb24obCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gcHVueWNvZGUudG9BU0NJSShsKTtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgIHJlc3VsdC5lcnJvciA9IHRydWU7XG4gICAgICByZXR1cm4gbDtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICh2ZXJpZnlEbnNMZW5ndGgpIHtcbiAgICB2YXIgdG90YWwgPSBsYWJlbHMuc2xpY2UoMCwgbGFiZWxzLmxlbmd0aCAtIDEpLmpvaW4oXCIuXCIpLmxlbmd0aDtcbiAgICBpZiAodG90YWwubGVuZ3RoID4gMjUzIHx8IHRvdGFsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmVzdWx0LmVycm9yID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpPTA7IGkgPCBsYWJlbHMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGlmIChsYWJlbHMubGVuZ3RoID4gNjMgfHwgbGFiZWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXN1bHQuZXJyb3IgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAocmVzdWx0LmVycm9yKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIGxhYmVscy5qb2luKFwiLlwiKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzLnRvVW5pY29kZSA9IGZ1bmN0aW9uKGRvbWFpbl9uYW1lLCB1c2VTVEQzKSB7XG4gIHZhciByZXN1bHQgPSBwcm9jZXNzaW5nKGRvbWFpbl9uYW1lLCB1c2VTVEQzLCBQUk9DRVNTSU5HX09QVElPTlMuTk9OVFJBTlNJVElPTkFMKTtcblxuICByZXR1cm4ge1xuICAgIGRvbWFpbjogcmVzdWx0LnN0cmluZyxcbiAgICBlcnJvcjogcmVzdWx0LmVycm9yXG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5QUk9DRVNTSU5HX09QVElPTlMgPSBQUk9DRVNTSU5HX09QVElPTlM7XG4iLCJpbXBvcnQgKiBhcyBwYyBmcm9tIFwiLi4vLi4vaW5kZXhcIjtcbmltcG9ydCB0eXBlIHsgUmVzdENsaWVudCB9IGZyb20gXCIuLi9yZXN0Y2xpZW50L2ludGVyZmFjZXNcIjtcbmltcG9ydCB0eXBlIHsgUXVlcnlPYmplY3QgfSBmcm9tIFwiLi4vcmVzdGNsaWVudC90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBDaHJvbWlhQ2xpZW50IH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgQmxvY2tjaGFpblVybFVuZGVmaW5lZEV4Y2VwdGlvbiB9IGZyb20gXCIuL2Vycm9yc1wiO1xuXG4vKipcbiAqIFByb3ZpZGVzIHBvc3RjaGFpbiBjbGllbnRzIHRoYXQgY2FuIGJlIHVzZWQgdG8gY29tbXVuaWNhdGUgd2l0aCBkYXBwcyB3aXRoaW4gdGhlIGNocm9taWEgbmV0d29ya1xuICogQHBhcmFtIGNoYWluMEJSSUQgYnJpZCBvZiBjaGFpbjBcbiAqIEBwYXJhbSByZXN0IHJlc3QgY2xpZW50IGNvbmZpZ3VyZWQgdG8gbm9kZSBydW5uaW5nIGNoYWluMFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjaHJvbWlhQ2xpZW50UHJvdmlkZXIoXG4gIGNoYWluMEJSSUQ6IHN0cmluZyxcbiAgcmVzdDogUmVzdENsaWVudFxuKTogQ2hyb21pYUNsaWVudCB7XG4gIGNvbnN0IGNoYWluMENsaWVudCA9IHBjLmd0eENsaWVudC5jcmVhdGVDbGllbnQocmVzdCwgY2hhaW4wQlJJRCwgW10pO1xuXG4gIHJldHVybiB7XG4gICAgYmxvY2tjaGFpbkNvbm5lY3Rpb246IGFzeW5jIGZ1bmN0aW9uIChcbiAgICAgIGRhcHBCUklEOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPFJlc3RDbGllbnQ+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5T2JqZWN0OiBRdWVyeU9iamVjdCA9IHtcbiAgICAgICAgdHlwZTogXCJjbV9nZXRfYmxvY2tjaGFpbl9hcGlfdXJsc1wiLFxuICAgICAgICBibG9ja2NoYWluX3JpZDogZGFwcEJSSUQsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBiYXNlVXJsczogc3RyaW5nW10gPSBhd2FpdCBjaGFpbjBDbGllbnQucXVlcnkocXVlcnlPYmplY3QpO1xuICAgICAgaWYgKCFiYXNlVXJscy5sZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJsb2NrY2hhaW5VcmxVbmRlZmluZWRFeGNlcHRpb24oZGFwcEJSSUQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBjLnJlc3RDbGllbnQuY3JlYXRlUmVzdENsaWVudChiYXNlVXJscywgZGFwcEJSSUQpO1xuICAgIH0sXG4gIH07XG59XG4iLCJleHBvcnQgY2xhc3MgQmxvY2tjaGFpblVybFVuZGVmaW5lZEV4Y2VwdGlvbiBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoYnJpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoYENhbm5vdCBmaW5kIG5vZGVzIGhvc3RpbmcgdGhlIGJsb2NrY2hhaW4gd2l0aCBSSUQgJHticmlkfWApO1xuICB9XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCAqIGFzIHNlY3AyNTZrMSBmcm9tIFwic2VjcDI1NmsxXCI7XG5pbXBvcnQgeyBlbnN1cmVCdWZmZXIgfSBmcm9tIFwiLi4vZm9ybWF0dGVyXCI7XG5pbXBvcnQge1xuICBNaXNzaW5nUHJpdktleUFyZ3VtZW50RXhjZXB0aW9uLFxuICBQcml2S2V5Rm9ybWF0RXhjZXB0aW9uLFxufSBmcm9tIFwiLi9lcnJvcnNcIjtcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHVibGljS2V5KHByaXZLZXk6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gIHZhbGlkYXRlUHJpdktleUZvcm1hdChwcml2S2V5KTtcblxuICByZXR1cm4gQnVmZmVyLmZyb20oc2VjcDI1NmsxLnB1YmxpY0tleUNyZWF0ZShwcml2S2V5LCB0cnVlKS5idWZmZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tQnl0ZXMoc2l6ZTogbnVtYmVyKTogQnVmZmVyIHtcbiAgcmV0dXJuIGNyeXB0by5yYW5kb21CeXRlcyhzaXplKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNoYTI1NihidWZmZXI6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gIHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoYnVmZmVyKS5kaWdlc3QoKTtcbn1cblxuZXhwb3J0IGNvbnN0IGhhc2gyNTYgPSBzaGEyNTY7XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoQ29uY2F0KGl0ZW1zOiBCdWZmZXJbXSk6IEJ1ZmZlciB7XG4gIHJldHVybiBoYXNoMjU2KEJ1ZmZlci5jb25jYXQoaXRlbXMpKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gY29udGVudCB0aGUgY29udGVudCB0aGF0IHRoZSBzaWduYXR1cmUgc2lnbnMuIEl0IHdpbGwgYmUgZGlnZXN0ZWQgYmVmb3JlIHZhbGlkYXRpbmcuXG4gKiBAcGFyYW0gcHViS2V5IFRoZSBwdWJLZXkgdG8gdmFsaWRhdGUgdGhlIHNpZ25hdHVyZSB3aXRoXG4gKiBAcGFyYW0gc2lnbmF0dXJlIHRoZSBzaWduYXR1cmUgdG8gdmFsaWRhdGVcbiAqXG4gKiBAcmV0dXJuIHRydWUgaWYgc2lnbmF0dXJlIG9rLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrU2lnbmF0dXJlKFxuICBjb250ZW50OiBCdWZmZXIsXG4gIHB1YktleTogQnVmZmVyLFxuICBzaWduYXR1cmU6IEJ1ZmZlclxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGRpZ2VzdCA9IGhhc2gyNTYoY29udGVudCk7XG4gIHJldHVybiBjaGVja0RpZ2VzdFNpZ25hdHVyZShkaWdlc3QsIHB1YktleSwgc2lnbmF0dXJlKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gZGlnZXN0IHRoZSBzaWduZWQgZGlnZXN0LiBJdCB3aWxsIG5vdCBiZSBkaWdlc3RlZCBiZWZvcmUgdmFsaWRhdGluZy5cbiAqIEBwYXJhbSBwdWJLZXkgVGhlIHB1YktleSB0byB2YWxpZGF0ZSB0aGUgc2lnbmF0dXJlIHdpdGhcbiAqIEBwYXJhbSBzaWduYXR1cmUgdGhlIHNpZ25hdHVyZSB0byB2YWxpZGF0ZVxuICpcbiAqIEByZXR1cm4gdHJ1ZSBpZiBzaWduYXR1cmUgb2ssIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tEaWdlc3RTaWduYXR1cmUoXG4gIGRpZ2VzdDogQnVmZmVyLFxuICBwdWJLZXk6IEJ1ZmZlcixcbiAgc2lnbmF0dXJlOiBCdWZmZXJcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gc2VjcDI1NmsxLmVjZHNhVmVyaWZ5KHNpZ25hdHVyZSwgZGlnZXN0LCBwdWJLZXkpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBjb250ZW50IHRvIHNpZ24uIEl0IHdpbGwgYmUgZGlnZXN0ZWQgYmVmb3JlIHNpZ25pbmcuXG4gKiBAcGFyYW0gcHJpdktleSBUaGUgcHJpdmF0ZSBrZXkgdG8gc2lnbiB0aGUgY29udGVudCB3aXRoXG4gKlxuICogQHJldHVybiB0aGUgc2lnbmF0dXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduKGNvbnRlbnQ6IEJ1ZmZlciwgcHJpdktleTogQnVmZmVyKTogQnVmZmVyIHtcbiAgdmFsaWRhdGVQcml2S2V5Rm9ybWF0KHByaXZLZXkpO1xuICBjb25zdCBkaWdlc3RCdWZmZXIgPSBzaGEyNTYoY29udGVudCk7XG4gIHJldHVybiBzaWduRGlnZXN0KGRpZ2VzdEJ1ZmZlciwgcHJpdktleSk7XG59XG5cbi8qKlxuICogQHBhcmFtIGRpZ2VzdEJ1ZmZlciB0byBzaWduLiBJdCB3aWxsIG5vdCBiZSBkaWdlc3RlZCBiZWZvcmUgc2lnbmluZy5cbiAqIEBwYXJhbSBwcml2S2V5IFRoZSBwcml2YXRlIGtleSB0byBzaWduIHRoZSBkaWdlc3Qgd2l0aFxuICpcbiAqIEByZXR1cm4gdGhlIHNpZ25hdHVyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnbkRpZ2VzdChkaWdlc3RCdWZmZXI6IEJ1ZmZlciwgcHJpdktleTogQnVmZmVyKTogQnVmZmVyIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKHNlY3AyNTZrMS5lY2RzYVNpZ24oZGlnZXN0QnVmZmVyLCBwcml2S2V5KS5zaWduYXR1cmUpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBrZXkgcGFpciAod2hpY2ggdXN1YWxseSByZXByZXNlbnRzIG9uZSB1c2VyKVxuICogQHBhcmFtIHByaXZLZXkgdG8gY3JlYXRlIGtleSBwYWlyIGJhc2VkIG9uXG4gKiBAcmV0dXJucyB7e3B1YktleTogQnVmZmVyLCBwcml2S2V5OiBCdWZmZXJ9fVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUtleVBhaXIocHJpdktleT86IEJ1ZmZlciB8IHN0cmluZyk6IEtleVBhaXIge1xuICBsZXQgcHViS2V5O1xuICBpZiAocHJpdktleSkge1xuICAgIHByaXZLZXkgPSBlbnN1cmVCdWZmZXIocHJpdktleSk7XG4gICAgcHViS2V5ID0gY3JlYXRlUHVibGljS2V5KHByaXZLZXkpO1xuICB9IGVsc2Uge1xuICAgIGRvIHtcbiAgICAgIHByaXZLZXkgPSByYW5kb21CeXRlcygzMik7XG4gICAgfSB3aGlsZSAoIXNlY3AyNTZrMS5wcml2YXRlS2V5VmVyaWZ5KHByaXZLZXkpKTtcbiAgICBwdWJLZXkgPSBCdWZmZXIuZnJvbShzZWNwMjU2azEucHVibGljS2V5Q3JlYXRlKHByaXZLZXkpLmJ1ZmZlcik7XG4gIH1cbiAgcmV0dXJuIHsgcHViS2V5LCBwcml2S2V5IH07XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgMTZieXRlcyBUVUlEIChUZXh0IHVuaXF1ZSBJRCkgKGEgMzJjaGFyYWN0ZXJzIGxvbmcgc3RyaW5nKVxuICogQHJldHVybnMgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlVHVpZCgpOiBzdHJpbmcge1xuICByZXR1cm4gcmFuZG9tQnl0ZXMoMTYpLnRvU3RyaW5nKFwiaGV4XCIpO1xufVxuXG4vKipcbiAqIFZlcmlmeSB0aGF0IGtleXBhaXIgaXMgY29ycmVjdC4gUHJvdmlkaW5nIHRoZSBwcml2YXRlIGtleSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGl0cyBhc3NvY2lhdGVkIHB1YmxpYyBrZXlcbiAqIEBwYXJhbSBwcml2S2V5OiBCdWZmZXJcbiAqIEByZXR1cm5zIHt7cHViS2V5OiBCdWZmZXIsIHByaXZLZXk6IEJ1ZmZlcn19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlLZXlQYWlyKHByaXZLZXk6IEJ1ZmZlcik6IEtleVBhaXIge1xuICB2YWxpZGF0ZVByaXZLZXlGb3JtYXQocHJpdktleSk7XG4gIGNvbnN0IHB1YktleSA9IEJ1ZmZlci5mcm9tKHNlY3AyNTZrMS5wdWJsaWNLZXlDcmVhdGUocHJpdktleSkuYnVmZmVyKTtcbiAgcmV0dXJuIHsgcHViS2V5LCBwcml2S2V5IH07XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUHJpdktleUZvcm1hdChwcml2S2V5OiBCdWZmZXIpIHtcbiAgaWYgKCFwcml2S2V5KSB7XG4gICAgdGhyb3cgbmV3IE1pc3NpbmdQcml2S2V5QXJndW1lbnRFeGNlcHRpb24oKTtcbiAgfVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwcml2S2V5KSB8fCBwcml2S2V5Lmxlbmd0aCAhPT0gMzIpIHtcbiAgICB0aHJvdyBuZXcgUHJpdktleUZvcm1hdEV4Y2VwdGlvbihwcml2S2V5KTtcbiAgfVxufVxuIiwiZXhwb3J0IGNsYXNzIFByaXZLZXlGb3JtYXRFeGNlcHRpb24gZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHByaXZLZXk6IEJ1ZmZlcikge1xuICAgIHN1cGVyKGBJbnZhbGlkIGtleSBsZW5ndGguIEV4cGVjdGVkIDMyLCBidXQgZ290ICR7cHJpdktleS5sZW5ndGh9YCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pc3NpbmdQcml2S2V5QXJndW1lbnRFeGNlcHRpb24gZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGBNaXNzaW5nIGFyZ3VtZW50IHByaXZLZXlgKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgR1RYLCBSYXdHdHggfSBmcm9tIFwiLi9ndHgvdHlwZXNcIjtcbmV4cG9ydCBmdW5jdGlvbiBwZ0J5dGVzKGJ1ZmZlcjogQnVmZmVyKTogc3RyaW5nIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKSkge1xuICAgIHRocm93IG5ldyBQZ0J5dGVzSW5wdXRFeGNlcHRpb24oYnVmZmVyKTtcbiAgfVxuICByZXR1cm4gXCJcXFxceFwiICsgYnVmZmVyLnRvU3RyaW5nKFwiaGV4XCIpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGhleCBzdHJpbmcgdG8gQnVmZmVyXG4gKiBAcGFyYW0ga2V5OiBzdHJpbmdcbiAqIEByZXR1cm5zIHtCdWZmZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0J1ZmZlcihrZXk6IHN0cmluZyk6IEJ1ZmZlciB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShrZXksIFwiaGV4XCIpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIEJ1ZmZlciB0byBoZXggc3RyaW5nXG4gKiBAcGFyYW0gYnVmZmVyOiBCdWZmZXJcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1N0cmluZyhidWZmZXI6IEJ1ZmZlcik6IHN0cmluZyB7XG4gIHJldHVybiBidWZmZXIudG9TdHJpbmcoXCJoZXhcIik7XG59XG5cbmV4cG9ydCBjbGFzcyBQZ0J5dGVzSW5wdXRFeGNlcHRpb24gZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGJ1ZmZlcjogQnVmZmVyKSB7XG4gICAgc3VwZXIoYHV0aWwucGdCeXRlcyBleHBlY3RzIGEgYnVmZmVyLCBidXQgZ290ICR7dHlwZW9mIGJ1ZmZlcn1gKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQnVmZmVyKHZhbHVlOiBzdHJpbmcgfCBCdWZmZXIpOiBCdWZmZXIge1xuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRvQnVmZmVyKHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tHdHZUeXBlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJVc2VyIGVycm9yOiBPbmx5IGludGVnZXJzIGFyZSBzdXBwb3J0ZWRcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJiaWdpbnRcIikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gQXJyYXkpIHtcbiAgICAgIHZhbHVlLm1hcCgoaXRlbSkgPT4gY2hlY2tHdHZUeXBlKGl0ZW0pKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBPYmplY3Qua2V5cyh2YWx1ZSkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgY2hlY2tHdHZUeXBlKHZhbHVlW2tleV0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gY2hlY2sgdHlwZTogJHtlcnJvcn1gKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByYXdHdHhUb0d0eChyYXdHdHg6IFJhd0d0eCk6IEdUWCB7XG4gIGNvbnN0IHJhd0d0eEJvZHkgPSByYXdHdHhbMF07XG4gIGNvbnN0IHNpZ25hdHVyZXMgPSByYXdHdHhbMV07XG5cbiAgY29uc3QgZ3R4Qm9keSA9IHtcbiAgICBibG9ja2NoYWluUklEOiByYXdHdHhCb2R5WzBdLFxuICAgIG9wZXJhdGlvbnM6IHJhd0d0eEJvZHlbMV0ubWFwKChvcGVyYXRpb246IGFueVtdKSA9PiAoe1xuICAgICAgb3BOYW1lOiBvcGVyYXRpb25bMF0sXG4gICAgICBhcmdzOiBvcGVyYXRpb25bMV0sXG4gICAgfSkpLFxuICAgIHNpZ25lcnM6IHJhd0d0eEJvZHlbMl0sXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBibG9ja2NoYWluUklEOiBndHhCb2R5LmJsb2NrY2hhaW5SSUQsXG4gICAgb3BlcmF0aW9uczogZ3R4Qm9keS5vcGVyYXRpb25zLFxuICAgIHNpZ25lcnM6IGd0eEJvZHkuc2lnbmVycyxcbiAgICBzaWduYXR1cmVzLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tHdHhUeXBlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICByYXdHdHhUb0d0eCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEdXBsaWNhdGVTaWduZXJzKHNpZ25lcnM6IEJ1ZmZlcltdKSB7XG4gIGNvbnN0IHNpZ25lcnNBc1N0cmluZzogc3RyaW5nW10gPSBbXTtcbiAgc2lnbmVycy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgY29uc3QgaXRlbUFzU3RyaW5nID0gaXRlbS50b1N0cmluZyhcImhleFwiKTtcbiAgICBpZiAoIXNpZ25lcnNBc1N0cmluZy5pbmNsdWRlcyhpdGVtQXNTdHJpbmcpKSB7XG4gICAgICBzaWduZXJzQXNTdHJpbmcucHVzaChpdGVtQXNTdHJpbmcpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHJlc3VsdDogQnVmZmVyW10gPSBbXTtcbiAgc2lnbmVyc0FzU3RyaW5nLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICByZXN1bHQucHVzaChCdWZmZXIuZnJvbShpdGVtLCBcImhleFwiKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuIiwiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbmNvbnN0IGFzbiA9IHJlcXVpcmUoXCJhc24xLmpzL2xpYi9hc24xXCIpO1xuXG5leHBvcnQgY29uc3QgQVNORGljdFBhaXIgPSBhc24uZGVmaW5lKFwiRGljdFBhaXJcIiwgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaih0aGlzLmtleShcIm5hbWVcIikudXRmOHN0cigpLCB0aGlzLmtleShcInZhbHVlXCIpLnVzZShyYXdHVFYpKTtcbn0pO1xuXG5leHBvcnQgY29uc3QgcmF3R1RWID0gYXNuLmRlZmluZShcIkd0dlZhbHVlXCIsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5jaG9pY2Uoe1xuICAgIG51bGw6IHRoaXMuZXhwbGljaXQoMCkubnVsbF8oKSxcbiAgICBieXRlQXJyYXk6IHRoaXMuZXhwbGljaXQoMSkub2N0c3RyKCksXG4gICAgc3RyaW5nOiB0aGlzLmV4cGxpY2l0KDIpLnV0ZjhzdHIoKSxcbiAgICBpbnRlZ2VyOiB0aGlzLmV4cGxpY2l0KDMpLmludCgpLFxuICAgIGRpY3Q6IHRoaXMuZXhwbGljaXQoNCkuc2Vxb2YoQVNORGljdFBhaXIpLFxuICAgIGFycmF5OiB0aGlzLmV4cGxpY2l0KDUpLnNlcW9mKHJhd0dUViksXG4gICAgYmlnSW50ZWdlcjogdGhpcy5leHBsaWNpdCg2KS5pbnQoKSxcbiAgfSk7XG59KTtcblxuZXhwb3J0IGNvbnN0IEFTTkJ1ZmZlciA9IGFzbi5kZWZpbmUoXCJCdWZmZXJcIiwgZnVuY3Rpb24gKCkge1xuICB0aGlzLm9jdHN0cigpO1xufSk7XG4iLCJpbXBvcnQge1xuICBNZXJrbGVIYXNoQ2FsY3VsYXRvcixcbiAgQ3J5cHRvU3lzdGVtLFxufSBmcm9tIFwiLi4vbWVya2xlL21lcmtsZWhhc2hjYWxjdWxhdG9yXCI7XG5jb25zdCB0aGVNZXJrbGVIYXNoQ2FsY3VsYXRvciA9IG5ldyBNZXJrbGVIYXNoQ2FsY3VsYXRvcihuZXcgQ3J5cHRvU3lzdGVtKCkpO1xuaW1wb3J0IHsgbWVya2xlSGFzaFN1bW1hcnkgfSBmcm9tIFwiLi4vbWVya2xlL3Byb29mL21lcmtsZXByb29mXCI7XG5pbXBvcnQgKiBhcyBzZXJpYWxpemF0aW9uIGZyb20gXCIuLi9ndHgvc2VyaWFsaXphdGlvblwiO1xuXG5jb25zdCBndHZIYXNoID0gKG9iajogYW55KSA9PiB7XG4gIHJldHVybiBtZXJrbGVIYXNoU3VtbWFyeShvYmosIHRoZU1lcmtsZUhhc2hDYWxjdWxhdG9yKS5tZXJrbGVIYXNoO1xufTtcbmNvbnN0IGVuY29kZSA9IHNlcmlhbGl6YXRpb24uZW5jb2RlVmFsdWU7XG5jb25zdCBkZWNvZGUgPSBzZXJpYWxpemF0aW9uLmRlY29kZVZhbHVlO1xuXG5leHBvcnQgeyBlbmNvZGUsIGRlY29kZSwgZ3R2SGFzaCB9O1xuIiwiZXhwb3J0IGNsYXNzIFVuZXhwZWN0ZWRBcmd1bWVudFR5cGVFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IodHlwZWRBcmc6IGFueSkge1xuICAgIHN1cGVyKGBDYW5ub3QgcGFyc2UgdHlwZWRBcmcgJHt0eXBlZEFyZ30uIFVua25vd24gdHlwZSAke3R5cGVkQXJnLnR5cGV9YCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pc3NpbmdHdHhFeGNlcHRpb24gZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFxuICAgICAgYE1pc3NpbmcgaW5zdGFuY2Ugb2YgZ3R4IHByb3RvY29sICh1c2VkIGZvciBjb21tdW5pY2F0aW5nIHdpdGggcG9zdGNoYWluKSB0byBhZGQgb3BlcmF0aW9uIHRvYFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFscmVhZHlTaWduZWRUcmFuc2FjdGlvbkV4Y2VwdGlvbiBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3Iob3BlcmF0aW9uOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgQ2Fubm90IGFkZCAke29wZXJhdGlvbn0gY2FsbHMgdG8gYW4gYWxyZWFkeSBzaWduZWQgZ3R4YCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE51bWJlck9mU2lnbmVyc0FuZFNpZ25hdHVyZXNFeGNlcHRpb24gZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGBOb3QgbWF0Y2hpbmcgbnVtYmVyIG9mIHNpZ25lcnMgYW5kIHNpZ25hdHVyZXNgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWlzc2luZ1NpZ25lckV4Y2VwdGlvbiBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXG4gICAgICBgTm8gc3VjaCBzaWduZXIsIHJlbWVtYmVyIHRvIGNhbGwgYWRkU2lnbmVyVG9HdHgoKSBiZWZvcmUgYWRkaW5nIGEgc2lnbmF0dXJlYFxuICAgICk7XG4gIH1cbn1cbiIsImltcG9ydCB7IEdUWCwgUmF3R3R4Qm9keSwgUmVsbE9wZXJhdGlvbiB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBSYXdHdHYgfSBmcm9tIFwiLi4vZ3R2L3R5cGVzXCI7XG5pbXBvcnQgKiBhcyBndHYgZnJvbSBcIi4uL2d0dlwiO1xuaW1wb3J0IHsgc2lnbkRpZ2VzdCwgY2hlY2tEaWdlc3RTaWduYXR1cmUgfSBmcm9tIFwiLi4vZW5jcnlwdGlvbi9lbmNyeXB0aW9uXCI7XG5pbXBvcnQge1xuICBBbHJlYWR5U2lnbmVkVHJhbnNhY3Rpb25FeGNlcHRpb24sXG4gIE1pc3NpbmdHdHhFeGNlcHRpb24sXG4gIE1pc3NpbmdTaWduZXJFeGNlcHRpb24sXG4gIE51bWJlck9mU2lnbmVyc0FuZFNpZ25hdHVyZXNFeGNlcHRpb24sXG59IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgZW5jb2RlIGFzIGd0eEVuY29kZSwgZGVjb2RlIGFzIGd0eERlY29kZSB9IGZyb20gXCIuL2luZGV4XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbXB0eUd0eChibG9ja2NoYWluUklEOiBCdWZmZXIpOiBHVFgge1xuICByZXR1cm4geyBibG9ja2NoYWluUklEOiBibG9ja2NoYWluUklELCBvcGVyYXRpb25zOiBbXSwgc2lnbmVyczogW10gfTtcbn1cblxuLyoqXG4gKiBBZGRzIGEgZnVuY3Rpb24gY2FsbCB0byBhIEdUWC4gQ3JlYXRlcyBhIG5ldyBHVFggaWYgbm9uZSBzcGVjaWZpZWQuXG4gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgdGhyb3cgRXJyb3IgaWYgZ3R4IGlzIGFscmVhZHkgc2lnbmVkXG4gKiBAcGFyYW0gb3BOYW1lIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBjYWxsXG4gKiBAcGFyYW0gYXJncyB0aGUgYXJyYXkgb2YgYXJndW1lbnRzIG9mIHRoZSBmdW5jdGlvbiBjYWxsLiBJZiBubyBhcmdzLCB0aGlzIG11c3QgYmUgYW4gZW1wdHkgYXJyYXlcbiAqIEBwYXJhbSBndHggdGhlIGZ1bmN0aW9uIGNhbGwgd2lsbCBiZSBhZGRlZCB0byB0aGlzIGd0eFxuICogQHJldHVybnMgdGhlIGd0eFxuICogQHRocm93cyBpZiBndHggaXMgbnVsbCBvciBpZiBndHggaXMgYWxyZWFkeSBzaWduZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFRyYW5zYWN0aW9uVG9HdHgoXG4gIG9wTmFtZTogc3RyaW5nLFxuICBhcmdzOiBSYXdHdHZbXSxcbiAgZ3R4OiBHVFhcbik6IEdUWCB7XG4gIGlmIChndHggPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBNaXNzaW5nR3R4RXhjZXB0aW9uKCk7XG4gIH1cbiAgaWYgKGd0eC5zaWduYXR1cmVzKSB7XG4gICAgdGhyb3cgbmV3IEFscmVhZHlTaWduZWRUcmFuc2FjdGlvbkV4Y2VwdGlvbihcImZ1bmN0aW9uXCIpO1xuICB9XG4gIGd0eC5vcGVyYXRpb25zLnB1c2goeyBvcE5hbWU6IG9wTmFtZSwgYXJnczogYXJncyB9KTtcbiAgcmV0dXJuIGd0eDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFNpZ25lclRvR3R4KHNpZ25lcjogQnVmZmVyLCBndHg6IEdUWCk6IHZvaWQge1xuICBpZiAoZ3R4LnNpZ25hdHVyZXMpIHtcbiAgICB0aHJvdyBuZXcgQWxyZWFkeVNpZ25lZFRyYW5zYWN0aW9uRXhjZXB0aW9uKFwic2lnbmVyXCIpO1xuICB9XG4gIGd0eC5zaWduZXJzLnB1c2goc2lnbmVyKTtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBndHggZm9yIHNpZ25pbmdcbiAqIEBwYXJhbSBndHggdGhlIGd0eCB0byBzZXJpYWxpemVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERpZ2VzdFRvU2lnbihndHg6IEdUWCk6IEJ1ZmZlciB7XG4gIHJldHVybiBndHYuZ3R2SGFzaChndHZUeEJvZHkoZ3R4KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBndHZUeEJvZHkoZ3R4OiBHVFgpOiBSYXdHdHhCb2R5IHtcbiAgcmV0dXJuIFtcbiAgICBndHguYmxvY2tjaGFpblJJRCxcbiAgICBndHgub3BlcmF0aW9ucy5tYXAoKG9wOiBSZWxsT3BlcmF0aW9uKSA9PiBbb3Aub3BOYW1lLCBvcC5hcmdzXSksXG4gICAgZ3R4LnNpZ25lcnMsXG4gIF07XG59XG5cbi8qKlxuICogU2lnbnMgdGhlIGd0eCB3aXRoIHRoZSBwcm92aWRlZCBwcml2S2V5LiBUaGlzIGlzIGEgY29udmVuaWVuY2UgZnVuY3Rpb25cbiAqIGZvciBzaXR1YXRpb25zIHdoZXJlIHlvdSBkb24ndCBoYXZlIHRvIGFzayBzb21lb25lIGVsc2UgdG8gc2lnbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ24ocHJpdktleTogQnVmZmVyLCBwdWJLZXk6IEJ1ZmZlciwgZ3R4OiBhbnkpIHtcbiAgY29uc3QgZGlnZXN0VG9TaWduID0gZ2V0RGlnZXN0VG9TaWduKGd0eCk7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IHNpZ25EaWdlc3QoZGlnZXN0VG9TaWduLCBwcml2S2V5KTtcbiAgYWRkU2lnbmF0dXJlKHB1YktleSwgc2lnbmF0dXJlLCBndHgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnblJhd1RyYW5zYWN0aW9uKGtleVBhaXI6IEJ1ZmZlciwgcmF3VHJhbnNhY3Rpb246IEJ1ZmZlcikge1xuICB0aHJvdyBFcnJvcihcIlRPRE9cIik7XG4gIC8vVE9ET1xuICAvL2NvbnN0IGd0eCA9IG1vZHVsZS5leHBvcnRzLmRlc2VyaWFsaXplKHJhd1RyYW5zYWN0aW9uKTtcbiAgLy9tb2R1bGUuZXhwb3J0cy5zaWduKGtleVBhaXIucHJpdktleSwga2V5UGFpci5wdWJLZXksIGd0eCk7XG4gIC8vIHJldHVybiBtb2R1bGUuZXhwb3J0cy5zZXJpYWxpemUoZ3R4KVxufVxuXG4vKipcbiAqIEFkZHMgYSBzaWduYXR1cmUgdG8gdGhlIGd0eFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkU2lnbmF0dXJlKFxuICBwdWJLZXlCdWZmZXI6IEJ1ZmZlcixcbiAgc2lnbmF0dXJlQnVmZmVyOiBCdWZmZXIsXG4gIGd0eDogYW55XG4pIHtcbiAgaWYgKCFndHguc2lnbmF0dXJlcykge1xuICAgIGd0eC5zaWduYXR1cmVzID0gQXJyYXkoZ3R4LnNpZ25lcnMubGVuZ3RoKS5maWxsKEJ1ZmZlci5hbGxvYyg2NCkpO1xuICB9XG4gIGlmIChndHguc2lnbmVycy5sZW5ndGggIT09IGd0eC5zaWduYXR1cmVzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOdW1iZXJPZlNpZ25lcnNBbmRTaWduYXR1cmVzRXhjZXB0aW9uKCk7XG4gIH1cbiAgY29uc3Qgc2lnbmVySW5kZXggPSBndHguc2lnbmVycy5maW5kSW5kZXgoKHNpZ25lcjogQnVmZmVyKSA9PlxuICAgIHB1YktleUJ1ZmZlci5lcXVhbHMoc2lnbmVyKVxuICApO1xuICBpZiAoc2lnbmVySW5kZXggPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IE1pc3NpbmdTaWduZXJFeGNlcHRpb24oKTtcbiAgfVxuICBndHguc2lnbmF0dXJlc1tzaWduZXJJbmRleF0gPSBzaWduYXR1cmVCdWZmZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemUoZ3R4OiBHVFgpOiBCdWZmZXIge1xuICBpZiAoIWd0eC5zaWduYXR1cmVzKSB7XG4gICAgLy8gVE9ET1xuICAgIC8vIFRoZSBndHggaXMgbm90IHNpZ25lZCwgYnV0IHdlIG11c3QgaW5jbHVkZVxuICAgIC8vIHRoZSBzaWduYXR1cmVzIGF0dHJpYnV0ZSwgc28gbGV0J3MgYWRkIHRoYXQuXG4gICAgZ3R4LnNpZ25hdHVyZXMgPSBbXTtcbiAgfVxuICByZXR1cm4gZ3R4RW5jb2RlKFtndHZUeEJvZHkoZ3R4KSwgZ3R4LnNpZ25hdHVyZXNdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplKGd0eEJ5dGVzOiBCdWZmZXIpOiBHVFgge1xuICBjb25zdCBkZXNlcmlhbGl6ZWRUeCA9IGd0eERlY29kZShndHhCeXRlcyk7XG4gIGNvbnN0IGJvZHkgPSBkZXNlcmlhbGl6ZWRUeFswXTtcbiAgY29uc3QgZ3R2VHhCb2R5ID0ge1xuICAgIGJsb2NrY2hhaW5SSUQ6IGJvZHlbMF0sXG4gICAgb3BlcmF0aW9uczogYm9keVsxXS5tYXAoKG9wZXJhdGlvbjogYW55W10pID0+ICh7XG4gICAgICBvcE5hbWU6IG9wZXJhdGlvblswXSxcbiAgICAgIGFyZ3M6IG9wZXJhdGlvblsxXSxcbiAgICB9KSksXG4gICAgc2lnbmVyczogYm9keVsyXSxcbiAgfTtcbiAgY29uc3Qgc2lnbmF0dXJlcyA9IGRlc2VyaWFsaXplZFR4WzFdO1xuXG4gIHJldHVybiB7XG4gICAgYmxvY2tjaGFpblJJRDogZ3R2VHhCb2R5LmJsb2NrY2hhaW5SSUQsXG4gICAgb3BlcmF0aW9uczogZ3R2VHhCb2R5Lm9wZXJhdGlvbnMsXG4gICAgc2lnbmVyczogZ3R2VHhCb2R5LnNpZ25lcnMsXG4gICAgc2lnbmF0dXJlcyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrR1RYU2lnbmF0dXJlcyh0eEhhc2g6IEJ1ZmZlciwgZ3R4OiBHVFgpOiBib29sZWFuIHtcbiAgZm9yIChjb25zdCBpIGluIGd0eC5zaWduZXJzKSB7XG4gICAgY29uc3Qgc2lnblZhbGlkID0gY2hlY2tEaWdlc3RTaWduYXR1cmUoXG4gICAgICB0eEhhc2gsXG4gICAgICBndHguc2lnbmVyc1tpXSxcbiAgICAgIGd0eC5zaWduYXR1cmVzW2ldXG4gICAgKTtcbiAgICBpZiAoIXNpZ25WYWxpZCkgcmV0dXJuIHNpZ25WYWxpZDtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuaW1wb3J0ICogYXMgZ3R4VG9vbCBmcm9tIFwiLi9ndHhcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG5jb25zdCBzZWNwMjU2azEgPSByZXF1aXJlKFwic2VjcDI1NmsxXCIpO1xuaW1wb3J0IHsgUmF3R3R2IH0gZnJvbSBcIi4uL2d0di90eXBlc1wiO1xuaW1wb3J0IHsgR1RYIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IFJlc3RDbGllbnQgfSBmcm9tIFwiLi4vcmVzdGNsaWVudC9pbnRlcmZhY2VzXCI7XG5pbXBvcnQgeyBRdWVyeU9iamVjdCB9IGZyb20gXCIuLi9yZXN0Y2xpZW50L3R5cGVzXCI7XG5pbXBvcnQgeyBHdHhDbGllbnQsIEl0cmFuc2FjdGlvbiB9IGZyb20gXCIuL2ludGVyZmFjZXNcIjtcbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tIFwiLi4vbG9nZ2VyXCI7XG5pbXBvcnQgeyByZW1vdmVEdXBsaWNhdGVTaWduZXJzIH0gZnJvbSBcIi4uL2Zvcm1hdHRlclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2xpZW50KFxuICByZXN0QXBpQ2xpZW50OiBSZXN0Q2xpZW50LFxuICBibG9ja2NoYWluUklEOiBzdHJpbmcsXG4gIGZ1bmN0aW9uTmFtZXM6IHN0cmluZ1tdXG4pOiBHdHhDbGllbnQge1xuICBmdW5jdGlvbk5hbWVzLnB1c2goXCJtZXNzYWdlXCIpO1xuXG4gIGZ1bmN0aW9uIHRyYW5zYWN0aW9uKGd0eDogR1RYKTogSXRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3R4LFxuXG4gICAgICBzaWduOiBmdW5jdGlvbiAocHJpdktleTogQnVmZmVyLCBwdWJLZXk6IEJ1ZmZlcikge1xuICAgICAgICBsZXQgcHViID0gcHViS2V5O1xuICAgICAgICBpZiAoIXB1Yikge1xuICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgIGBwdWJLZXkgbm90IHByb3ZpZGVkLCB3aWxsIGluc3RlYWQgYmUgZ2VuZXJhdGVkIHVzaW5nIHNlY3AyNTZrMWBcbiAgICAgICAgICApO1xuICAgICAgICAgIHB1YiA9IEJ1ZmZlci5mcm9tKHNlY3AyNTZrMS5wdWJsaWNLZXlDcmVhdGUocHJpdktleSkpO1xuICAgICAgICB9XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBgc2lnbmluZyB0cmFuc2FjdGlvbiB3aXRoIHByaXZLZXk6ICR7cHJpdktleX0sIHB1YktleTogJHtwdWJ9YFxuICAgICAgICApO1xuICAgICAgICBndHhUb29sLnNpZ24ocHJpdktleSwgcHViLCB0aGlzLmd0eCk7XG4gICAgICB9LFxuXG4gICAgICBnZXRUeFJJRDogZnVuY3Rpb24gKCk6IEJ1ZmZlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldERpZ2VzdFRvU2lnbigpO1xuICAgICAgfSxcblxuICAgICAgZ2V0RGlnZXN0VG9TaWduOiBmdW5jdGlvbiAoKTogQnVmZmVyIHtcbiAgICAgICAgcmV0dXJuIGd0eFRvb2wuZ2V0RGlnZXN0VG9TaWduKHRoaXMuZ3R4KTtcbiAgICAgIH0sXG5cbiAgICAgIGFkZFNpZ25hdHVyZTogZnVuY3Rpb24gKHB1YktleTogQnVmZmVyLCBzaWduYXR1cmU6IEJ1ZmZlcikge1xuICAgICAgICBndHhUb29sLmFkZFNpZ25hdHVyZShwdWJLZXksIHNpZ25hdHVyZSwgdGhpcy5ndHgpO1xuICAgICAgfSxcblxuICAgICAgLy8gcmF3IGNhbGxcbiAgICAgIGFkZE9wZXJhdGlvbjogZnVuY3Rpb24gKG5hbWU6IHN0cmluZywgLi4uYXJnczogUmF3R3R2W10pIHtcbiAgICAgICAgZ3R4VG9vbC5hZGRUcmFuc2FjdGlvblRvR3R4KG5hbWUsIGFyZ3MsIHRoaXMuZ3R4KTtcbiAgICAgIH0sXG5cbiAgICAgIHBvc3RBbmRXYWl0Q29uZmlybWF0aW9uKCk6IFByb21pc2U8bnVsbD4ge1xuICAgICAgICByZXR1cm4gcmVzdEFwaUNsaWVudC5wb3N0QW5kV2FpdENvbmZpcm1hdGlvbihcbiAgICAgICAgICBndHhUb29sLnNlcmlhbGl6ZSh0aGlzLmd0eCksXG4gICAgICAgICAgdGhpcy5nZXRUeFJJRCgpXG4gICAgICAgICk7XG4gICAgICB9LFxuXG4gICAgICBzZW5kOiBmdW5jdGlvbiAoY2FsbGJhY2s6IChlcnJvcjogRXJyb3IsIHJlc3BvbnNlT2JqZWN0OiBhbnkpID0+IHZvaWQpIHtcbiAgICAgICAgY29uc3QgZ3R4Qnl0ZXMgPSBndHhUb29sLnNlcmlhbGl6ZSh0aGlzLmd0eCk7XG4gICAgICAgIHJlc3RBcGlDbGllbnQucG9zdFRyYW5zYWN0aW9uKGd0eEJ5dGVzLCBjYWxsYmFjayk7XG4gICAgICAgIHRoaXMuZ3R4ID0gbnVsbDtcbiAgICAgICAgdGhpcy5ndHhCeXRlcyA9IGd0eEJ5dGVzO1xuICAgICAgfSxcblxuICAgICAgZW5jb2RlOiBmdW5jdGlvbiAoKTogQnVmZmVyIHtcbiAgICAgICAgcmV0dXJuIGd0eFRvb2wuc2VyaWFsaXplKHRoaXMuZ3R4KTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZEZ1bmN0aW9ucyhyZXE6IEl0cmFuc2FjdGlvbikge1xuICAgIGZ1bmN0aW9uTmFtZXMuZm9yRWFjaCgoZnVuY3Rpb25OYW1lKSA9PiB7XG4gICAgICByZXFbZnVuY3Rpb25OYW1lXSA9IGZ1bmN0aW9uICguLi5hcmdzOiBSYXdHdHZbXSkge1xuICAgICAgICBndHhUb29sLmFkZFRyYW5zYWN0aW9uVG9HdHgoZnVuY3Rpb25OYW1lLCBhcmdzLCB0aGlzLmd0eCk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgY2xpZW50ID0ge1xuICAgIG5ld1RyYW5zYWN0aW9uOiBmdW5jdGlvbiAoc2lnbmVyczogQnVmZmVyW10pOiBJdHJhbnNhY3Rpb24ge1xuICAgICAgc2lnbmVycyA9IHJlbW92ZUR1cGxpY2F0ZVNpZ25lcnMoc2lnbmVycyk7XG4gICAgICBjb25zdCBuZXdHdHggPSBndHhUb29sLmVtcHR5R3R4KEJ1ZmZlci5mcm9tKGJsb2NrY2hhaW5SSUQsIFwiaGV4XCIpKTtcbiAgICAgIHNpZ25lcnMuZm9yRWFjaCgoc2lnbmVyKSA9PiBndHhUb29sLmFkZFNpZ25lclRvR3R4KHNpZ25lciwgbmV3R3R4KSk7XG5cbiAgICAgIGNvbnN0IHJlcSA9IHRyYW5zYWN0aW9uKG5ld0d0eCk7XG4gICAgICBhZGRGdW5jdGlvbnMocmVxKTtcbiAgICAgIHJldHVybiByZXE7XG4gICAgfSxcblxuICAgIHRyYW5zYWN0aW9uRnJvbVJhd1RyYW5zYWN0aW9uOiBmdW5jdGlvbiAoXG4gICAgICByYXdUcmFuc2FjdGlvbjogQnVmZmVyXG4gICAgKTogSXRyYW5zYWN0aW9uIHtcbiAgICAgIGNvbnN0IGd0eCA9IGd0eFRvb2wuZGVzZXJpYWxpemUocmF3VHJhbnNhY3Rpb24pO1xuICAgICAgbG9nZ2VyLmRlYnVnKGBPdXRwdXQgZnJvbSBkZXNlcmlhbGl6aW5nIGEgcmF3IHRyYW5zYWN0aW9uOiAke2d0eH1gKTtcbiAgICAgIGNvbnN0IHJlcSA9IHRyYW5zYWN0aW9uKGd0eCk7XG4gICAgICBhZGRGdW5jdGlvbnMocmVxKTtcbiAgICAgIHJldHVybiByZXE7XG4gICAgfSxcbiAgICBxdWVyeTogZnVuY3Rpb24gKFxuICAgICAgcXVlcnlPYmplY3Q6IFF1ZXJ5T2JqZWN0LFxuICAgICAgY2FsbGJhY2s6IChlcnJvcjogRXJyb3IsIHJlc3BvbnNlT2JqZWN0OiBhbnkpID0+IHZvaWRcbiAgICApIHtcbiAgICAgIHJldHVybiByZXN0QXBpQ2xpZW50LnF1ZXJ5KHF1ZXJ5T2JqZWN0LCBjYWxsYmFjayk7XG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gY2xpZW50O1xufVxuIiwiaW1wb3J0ICogYXMgc2VyaWFsaXphdGlvbiBmcm9tIFwiLi9zZXJpYWxpemF0aW9uXCI7XG5cbmNvbnN0IGVuY29kZSA9IHNlcmlhbGl6YXRpb24uZW5jb2RlVmFsdWVHdHg7XG5jb25zdCBkZWNvZGUgPSBzZXJpYWxpemF0aW9uLmRlY29kZVZhbHVlR3R4O1xuXG5leHBvcnQgeyBlbmNvZGUsIGRlY29kZSB9O1xuIiwiaW1wb3J0IHsgcmF3R1RWIH0gZnJvbSBcIi4uL2d0di9kZWZpbml0aW9uXCI7XG5pbXBvcnQgeyBSYXdHdHggfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgQk4gfSBmcm9tIFwiYm4uanNcIjtcbmltcG9ydCB7IFJhd0d0diB9IGZyb20gXCIuLi9ndHYvdHlwZXNcIjtcbmltcG9ydCB7IFVuZXhwZWN0ZWRBcmd1bWVudFR5cGVFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgY2hlY2tHdHhUeXBlIH0gZnJvbSBcIi4uL2Zvcm1hdHRlclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlVmFsdWUocmF3R3R2OiBSYXdHdHYpOiBCdWZmZXIge1xuICByZXR1cm4gcmF3R1RWLmVuY29kZShjcmVhdGVUeXBlZEFyZyhyYXdHdHYpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVZhbHVlR3R4KHJhd0d0eDogUmF3R3R4KTogQnVmZmVyIHtcbiAgcmV0dXJuIGVuY29kZVZhbHVlKHJhd0d0eCBhcyBSYXdHdHYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlVmFsdWUoYnl0ZXM6IEJ1ZmZlcik6IFJhd0d0diB7XG4gIGNvbnN0IG9iaiA9IHJhd0dUVi5kZWNvZGUoYnl0ZXMpO1xuICByZXR1cm4gcGFyc2VWYWx1ZShvYmopO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVZhbHVlR3R4KGJ5dGVzOiBCdWZmZXIpOiBSYXdHdHgge1xuICBjb25zdCBkZWNvZGVkVmFsdWUgPSBkZWNvZGVWYWx1ZShieXRlcyk7XG4gIGlmICghY2hlY2tHdHhUeXBlKGRlY29kZWRWYWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVW5leHBlY3RlZCB0eXBlIG9mIHZhbHVlOiAke2RlY29kZWRWYWx1ZX0sIGV4cGVjdGVkIGRlY29kZWQgdmFsdWUgdG8gYmUgb2YgdHlwZSBSYXdHdHhgXG4gICAgKTtcbiAgfVxuICByZXR1cm4gZGVjb2RlZFZhbHVlIGFzIFJhd0d0eDtcbn1cblxuZnVuY3Rpb24gcGFyc2VWYWx1ZSh0eXBlZEFyZzogYW55KSB7XG4gIGlmICh0eXBlZEFyZy50eXBlID09PSBcIm51bGxcIikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICh0eXBlZEFyZy50eXBlID09PSBcImJ5dGVBcnJheVwiKSB7XG4gICAgcmV0dXJuIHR5cGVkQXJnLnZhbHVlO1xuICB9XG4gIGlmICh0eXBlZEFyZy50eXBlID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHR5cGVkQXJnLnZhbHVlO1xuICB9XG4gIGlmICh0eXBlZEFyZy50eXBlID09PSBcImludGVnZXJcIikge1xuICAgIHJldHVybiB0eXBlZEFyZy52YWx1ZS50b051bWJlcigpO1xuICB9XG4gIGlmICh0eXBlZEFyZy50eXBlID09PSBcImFycmF5XCIpIHtcbiAgICByZXR1cm4gdHlwZWRBcmcudmFsdWUubWFwKChpdGVtOiBhbnkpID0+IHBhcnNlVmFsdWUoaXRlbSkpO1xuICB9XG4gIGlmICh0eXBlZEFyZy50eXBlID09PSBcImJpZ0ludGVnZXJcIikge1xuICAgIHJldHVybiBCaWdJbnQodHlwZWRBcmcudmFsdWUpO1xuICB9XG4gIGlmICh0eXBlZEFyZy50eXBlID09PSBcImRpY3RcIikge1xuICAgIGNvbnN0IHJlc3VsdDogeyBbbmFtZTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICB0eXBlZEFyZy52YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uIChwYWlyOiBhbnkpIHtcbiAgICAgIHJlc3VsdFtwYWlyLm5hbWVdID0gcGFyc2VWYWx1ZShwYWlyLnZhbHVlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHRocm93IG5ldyBVbmV4cGVjdGVkQXJndW1lbnRUeXBlRXJyb3IodHlwZWRBcmcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHlwZWRBcmcodmFsdWU6IFJhd0d0dik6IGFueSB7XG4gIHRyeSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwibnVsbFwiLCB2YWx1ZTogbnVsbCB9O1xuICAgIH1cbiAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJieXRlQXJyYXlcIiwgdmFsdWU6IHZhbHVlIH07XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwic3RyaW5nXCIsIHZhbHVlOiB2YWx1ZSB9O1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIodmFsdWUpKSB7XG4gICAgICAgIHRocm93IEVycm9yKFwiVXNlciBlcnJvcjogT25seSBpbnRlZ2VycyBhcmUgc3VwcG9ydGVkXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgdHlwZTogXCJpbnRlZ2VyXCIsIHZhbHVlOiBuZXcgQk4odmFsdWUpIH07XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwiYmlnSW50ZWdlclwiLCB2YWx1ZTogbmV3IEJOKE51bWJlcih2YWx1ZSkpIH07XG4gICAgfVxuICAgIGlmICh2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gQXJyYXkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgdmFsdWU6ICh2YWx1ZSBhcyBBcnJheTxSYXdHdHY+KS5tYXAoKGl0ZW0pID0+IGNyZWF0ZVR5cGVkQXJnKGl0ZW0pKSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwiZGljdFwiLFxuICAgICAgICB2YWx1ZTogT2JqZWN0LmtleXModmFsdWUpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IGtleSxcbiAgICAgICAgICAgIHZhbHVlOiBjcmVhdGVUeXBlZEFyZyh2YWx1ZVtrZXkgYXMga2V5b2YgUmF3R3R2XSksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBlbmNvZGUgJHt2YWx1ZS50b1N0cmluZygpfTogJHtlcnJvcn1gKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYHZhbHVlICR7dmFsdWV9IGhhdmUgdW5zdXBwb3J0ZWQgdHlwZTogJHt0eXBlb2YgdmFsdWV9YCk7XG59XG4iLCJleHBvcnQgeyBkZWJ1ZywgaW5mbywgZXJyb3IsIHdhcm5pbmcsIHNldExvZ0xldmVsIH07XG5cbmVudW0gTXNnVHlwZSB7XG4gIGRlYnVnID0gXCJERUJVR1wiLFxuICBpbmZvID0gXCJJTkZPXCIsXG4gIGVycm9yID0gXCJFUlJPUlwiLFxuICB3YXJuaW5nID0gXCJXQVJOSU5HXCIsXG59XG5lbnVtIExvZ0NvbG9yIHtcbiAgcmVkID0gXCJcXHgxYls5MW1cIixcbiAgZ3JlZW4gPSBcIlxceDFiWzkybVwiLFxuICBibHVlID0gXCJcXHgxYlszNm1cIixcbiAgeWVsbG93ID0gXCJcXHgxYls5M21cIixcbiAgc3RvcENvbG9yID0gXCJcXHgxYlswbVwiLFxufVxuXG5sZXQgbG9nTGV2ZWwgPSAxO1xuXG5mdW5jdGlvbiBzZXRMb2dMZXZlbChsZXZlbDogbnVtYmVyKSB7XG4gIGxvZ0xldmVsID0gbGV2ZWw7XG59XG5cbmZ1bmN0aW9uIGRlYnVnKG1lc3NhZ2U6IHN0cmluZykge1xuICBpZiAobG9nTGV2ZWwgPj0gMykge1xuICAgIGVtaXRMb2dNZXNzYWdlKE1zZ1R5cGUuZGVidWcsIG1lc3NhZ2UsIExvZ0NvbG9yLmJsdWUpO1xuICB9XG59XG5mdW5jdGlvbiBpbmZvKG1lc3NhZ2U6IHN0cmluZykge1xuICBpZiAobG9nTGV2ZWwgPj0gMikge1xuICAgIGVtaXRMb2dNZXNzYWdlKE1zZ1R5cGUuaW5mbywgbWVzc2FnZSwgTG9nQ29sb3IuZ3JlZW4pO1xuICB9XG59XG5mdW5jdGlvbiBlcnJvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgaWYgKGxvZ0xldmVsICE9IC0xKSB7XG4gICAgZW1pdExvZ01lc3NhZ2UoTXNnVHlwZS5lcnJvciwgbWVzc2FnZSwgTG9nQ29sb3IucmVkKTtcbiAgfVxufVxuZnVuY3Rpb24gd2FybmluZyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgaWYgKGxvZ0xldmVsID49IDEpIHtcbiAgICBlbWl0TG9nTWVzc2FnZShNc2dUeXBlLndhcm5pbmcsIG1lc3NhZ2UsIExvZ0NvbG9yLnllbGxvdyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW1pdExvZ01lc3NhZ2UobXNnVHlwZTogTXNnVHlwZSwgbWVzc2FnZTogc3RyaW5nLCBjb2xvcjogTG9nQ29sb3IpIHtcbiAgY29uc3QgdGltZSA9IGdldFRpbWVzdGFtcCgpO1xuICBjb25zb2xlLmxvZyhgWyR7dGltZX1dICR7Y29sb3J9JHttc2dUeXBlfToke0xvZ0NvbG9yLnN0b3BDb2xvcn0gJHttZXNzYWdlfWApO1xufVxuXG5mdW5jdGlvbiBnZXRUaW1lc3RhbXAoKSB7XG4gIGNvbnN0IHBhZCA9IChuOiBudW1iZXIsIHMgPSAyKSA9PiBgJHtuZXcgQXJyYXkocykuZmlsbCgwKX0ke259YC5zbGljZSgtcyk7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICByZXR1cm4gYCR7cGFkKGRhdGUuZ2V0SG91cnMoKSl9OiR7cGFkKGRhdGUuZ2V0TWludXRlcygpKX06JHtwYWQoXG4gICAgZGF0ZS5nZXRTZWNvbmRzKClcbiAgKX06JHtwYWQoZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSwgMyl9YDtcbn1cbiIsImltcG9ydCB7IGhhc2hDb25jYXQgfSBmcm9tIFwiLi4vZW5jcnlwdGlvbi9lbmNyeXB0aW9uXCI7XG5pbXBvcnQgeyBQYXRoIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxudmFyIGludGVybmFsTm9kZVByZWZpeCA9IEJ1ZmZlci5hbGxvYygxLCAwKTtcbnZhciBsZWFmUHJlZml4ID0gQnVmZmVyLmFsbG9jKDEsIDEpO1xudmFyIG5vbkV4aXN0aW5nTm9kZUhhc2ggPSBCdWZmZXIuYWxsb2MoMzIpO1xuXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlUm9vdChoYXNoZXMgOiBCdWZmZXJbXSwgZGVwdGg/OiBudW1iZXIsIGxlYWZEZXB0aD86IG51bWJlcikgOiBCdWZmZXIge1xuICAgIHZhciBudW1UcmFuc2FjdGlvbnMgPSBoYXNoZXMubGVuZ3RoO1xuICAgIGlmIChudW1UcmFuc2FjdGlvbnMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5hbGxvYygzMik7XG4gICAgfVxuXG4gICAgaWYgKGRlcHRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGVwdGggPSAwO1xuICAgIH1cbiAgXG4gICAgaWYgKCFsZWFmRGVwdGgpIHtcbiAgICAgICAgbGVhZkRlcHRoID0gTWF0aC5jZWlsKE1hdGgubG9nMihudW1UcmFuc2FjdGlvbnMpKTtcbiAgICB9XG5cbiAgICBpZiAoZGVwdGggPT09IGxlYWZEZXB0aCkge1xuICAgICAgICByZXR1cm4gaGFzaGVzWzBdO1xuICAgIH1cblxuICAgIHZhciBtYXhMZWF2ZXNQZXJDaGlsZCA9IE1hdGgucG93KDIsIGxlYWZEZXB0aCAtIGRlcHRoIC0gMSk7XG4gICAgdmFyIHByZWZpeCA9IGRlcHRoID09PSBsZWFmRGVwdGggLSAxID8gbGVhZlByZWZpeCA6IGludGVybmFsTm9kZVByZWZpeDtcbiAgICBpZiAobnVtVHJhbnNhY3Rpb25zIDw9IG1heExlYXZlc1BlckNoaWxkKSB7XG4gICAgICAgIHZhciBsZWZ0ID0gY2FsY3VsYXRlUm9vdChoYXNoZXMsIGRlcHRoICsgMSwgbGVhZkRlcHRoKTtcbiAgICAgICAgcmV0dXJuIGhhc2hDb25jYXQoW3ByZWZpeCwgbGVmdCwgbm9uRXhpc3RpbmdOb2RlSGFzaF0pO1xuICAgIH1cblxuICAgIHZhciBsZWZ0ID0gY2FsY3VsYXRlUm9vdChoYXNoZXMuc2xpY2UoMCwgbWF4TGVhdmVzUGVyQ2hpbGQpLCBkZXB0aCArIDEsIGxlYWZEZXB0aCk7XG4gICAgdmFyIHJpZ2h0ID0gY2FsY3VsYXRlUm9vdChoYXNoZXMuc2xpY2UobWF4TGVhdmVzUGVyQ2hpbGQpLCBkZXB0aCArIDEsIGxlYWZEZXB0aCk7XG4gICAgcmV0dXJuIGhhc2hDb25jYXQoW3ByZWZpeCwgbGVmdCwgcHJlZml4LCByaWdodF0pO1xufVxuZnVuY3Rpb24gaW50ZXJuYWxNZXJrbGVQYXRoKGhhc2hlcyA6IEJ1ZmZlcltdLCB0YXJnZXRJbmRleCA6IG51bWJlciwgZGVwdGggOiBudW1iZXIsIGxlYWZEZXB0aDogbnVtYmVyKSA6IFBhdGgge1xuICAgIHZhciBudW1UcmFuc2FjdGlvbnMgPSBoYXNoZXMubGVuZ3RoO1xuXG4gICAgaWYgKGRlcHRoID09PSBsZWFmRGVwdGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHZhciBtYXhMZWF2ZXNQZXJDaGlsZCA9IE1hdGgucG93KDIsIGxlYWZEZXB0aCAtIGRlcHRoIC0gMSk7XG4gICAgdmFyIHByZWZpeCA9IGRlcHRoID09IGxlYWZEZXB0aCAtIDEgPyBsZWFmUHJlZml4IDogaW50ZXJuYWxOb2RlUHJlZml4O1xuICAgIGlmIChudW1UcmFuc2FjdGlvbnMgPD0gbWF4TGVhdmVzUGVyQ2hpbGQpIHtcbiAgICAgICAgdmFyIHBhdGggPSBpbnRlcm5hbE1lcmtsZVBhdGgoaGFzaGVzLCB0YXJnZXRJbmRleCwgZGVwdGggKyAxLCBsZWFmRGVwdGgpO1xuICAgICAgICBwYXRoLnB1c2goe3NpZGU6IDEsIGhhc2g6IG5vbkV4aXN0aW5nTm9kZUhhc2h9KTtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuXG4gICAgaWYgKHRhcmdldEluZGV4IDwgbWF4TGVhdmVzUGVyQ2hpbGQpIHtcbiAgICAgICAgdmFyIHBhdGggPSBpbnRlcm5hbE1lcmtsZVBhdGgoaGFzaGVzLnNsaWNlKDAsIG1heExlYXZlc1BlckNoaWxkKSwgdGFyZ2V0SW5kZXgsIGRlcHRoICsgMSwgbGVhZkRlcHRoKTtcbiAgICAgICAgdmFyIHJpZ2h0ID0gY2FsY3VsYXRlUm9vdChoYXNoZXMuc2xpY2UobWF4TGVhdmVzUGVyQ2hpbGQpLCBkZXB0aCArIDEsIGxlYWZEZXB0aCk7XG4gICAgICAgIHBhdGgucHVzaCh7c2lkZTogMSwgaGFzaDogcmlnaHR9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgbGVmdCA9IGNhbGN1bGF0ZVJvb3QoaGFzaGVzLnNsaWNlKDAsIG1heExlYXZlc1BlckNoaWxkKSwgZGVwdGggKyAxLCBsZWFmRGVwdGgpO1xuICAgICAgICB2YXIgcGF0aCA9IGludGVybmFsTWVya2xlUGF0aChoYXNoZXMuc2xpY2UobWF4TGVhdmVzUGVyQ2hpbGQpLCB0YXJnZXRJbmRleCAtIG1heExlYXZlc1BlckNoaWxkLCBkZXB0aCArIDEsIGxlYWZEZXB0aCk7XG4gICAgICAgIHBhdGgucHVzaCh7c2lkZTogMCwgaGFzaDogbGVmdH0pO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aDtcbn1cblxuLypcbiAqIGEgcGF0aCBsb29rcyBsaWtlIHRoaXM6XG4gKiB7bWVya2xlUGF0aDogW3tzaWRlOiA8MHwxPiwgaGFzaDogPGhhc2ggYnVmZmVyIGRlcHRoIG4tMT59LFxuICogICAgICAgICAgICAgICB7c2lkZTogPDB8MT4sIGhhc2g6IDxoYXNoIGJ1ZmZlciBkZXB0aCBuLTI+fSxcbiAqICAgICAgICAgICAgICAgLi4uXG4gKiAgICAgICAgICAgICAgIHtzaWRlOiA8MHwxPiwgaGFzaDogPGhhc2ggYnVmZmVyIGRlcHRoIDE+fV19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJrbGVQYXRoKGhhc2hlcyA6IEJ1ZmZlcltdLCB0YXJnZXQgOiBCdWZmZXIpIDogUGF0aCB7XG4gICAgaWYgKCFoYXNoZXMgfHwgaGFzaGVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBtYWtlIG1lcmtsZSBwYXRoIGZyb20gZW1wdHkgdHJhbnNhY3Rpb24gc2V0XCIpO1xuICAgIH1cbiAgICB2YXIgaW5kZXggPSAtMTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhhc2hlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaGFzaGVzW2ldLmVxdWFscyh0YXJnZXQpKSB7XG4gICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRhcmdldCBpcyBub3QgaW4gbGlzdCBvZiBoYXNoZXNcIik7XG4gICAgfVxuXG4gICAgdmFyIGxlYWZEZXB0aCA9IE1hdGguY2VpbChNYXRoLmxvZzIoaGFzaGVzLmxlbmd0aCkpO1xuICAgIHZhciBwYXRoID0gaW50ZXJuYWxNZXJrbGVQYXRoKGhhc2hlcywgaW5kZXgsIDAsIGxlYWZEZXB0aCk7XG4gICAgcmV0dXJuIHBhdGg7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBwYXRoIFRoZSBtZXJrbGUgcGF0aCB0byB2YWxpZGF0ZS5cbiAqIEZvcm1hdCBbe3NpZGU6IDwwfDE+LCBoYXNoOiA8aGFzaCBidWZmZXIgZGVwdGggbi0xPn0sXG4gKiAgICAgICAgIHtzaWRlOiA8MHwxPiwgaGFzaDogPGhhc2ggYnVmZmVyIGRlcHRoIG4tMj59LFxuICogICAgICAgICAuLi4sXG4gKiAgICAgICAgIHtzaWRlOiA8MHwxPiwgaGFzaDogPGhhc2ggYnVmZmVyIGRlcHRoIDE+fV1cblxuICogQHBhcmFtIHRhcmdldCB0aGUgbGVhZiBoYXNoIHRoYXQgdGhlIHBhdGggcHJvdmVzIGJlbG9uZ3MgaW4gdGhlIG1lcmtsZVJvb3RcbiAqIEBwYXJhbSBtZXJrbGVSb290IFRoZSBtZXJrbGUgcm9vdCB0aGF0IHN1cHBvc2VkbHkgY29udGFpbnMgdGhlIHRhcmdldCB2aWEgdGhlIHN1cHBsaWVkIHBhdGguXG4gKiBUaGUgbWVya2xlIHJvb3QgaXMgdHlwaWNhbGx5IHRha2VuIGZyb20gYSBibG9jayBoZWFkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZU1lcmtsZVBhdGgocGF0aDogUGF0aCwgdGFyZ2V0IDogQnVmZmVyLCBtZXJrbGVSb290IDogQnVmZmVyKSB7XG4gICAgbGV0IGN1cnJlbnRIYXNoID0gdGFyZ2V0O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBwYXRoW2ldO1xuXG4gICAgICAgIGNvbnN0IHByZWZpeCA9IChpID09PSAwKSA/IEJ1ZmZlci5mcm9tKFsxXSkgOiBCdWZmZXIuZnJvbShbMF0pO1xuXG4gICAgICAgIGlmIChpdGVtLnNpZGUgPT09IDApIHtcbiAgICAgICAgICAgIGN1cnJlbnRIYXNoID0gaGFzaENvbmNhdChbcHJlZml4LCBpdGVtLmhhc2gsIHByZWZpeCwgY3VycmVudEhhc2hdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpdGVtLmhhc2guZXF1YWxzKG5vbkV4aXN0aW5nTm9kZUhhc2gpKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudEhhc2ggPSBoYXNoQ29uY2F0KFtwcmVmaXgsIGN1cnJlbnRIYXNoLCBub25FeGlzdGluZ05vZGVIYXNoXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRIYXNoID0gaGFzaENvbmNhdChbcHJlZml4LCBjdXJyZW50SGFzaCwgcHJlZml4LCBpdGVtLmhhc2hdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmtsZVJvb3QuZXF1YWxzKGN1cnJlbnRIYXNoKTtcbn1cblxuIiwiZXhwb3J0IGNsYXNzIFR4UmVqZWN0ZWRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLy9UT0RPIGZpeCBlcnJvciBtZXNzYWdlXG4gIHByaXZhdGUgZnVsbFJlYXNvbjogc3RyaW5nO1xuICBwcml2YXRlIHNob3J0UmVhc29uOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVsbExpbmU6IHN0cmluZztcbiAgcHJpdmF0ZSBvcGVyYXRpb246IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihyZWplY3RSZWFzb246IHN0cmluZykge1xuICAgIHN1cGVyKFwiVHJhbnNhY3Rpb24gd2FzIHJlamVjdGVkXCIpO1xuICAgIHRoaXMubmFtZSA9IFwiVHhSZWplY3RlZEVycm9yXCI7XG4gICAgdGhpcy5mdWxsUmVhc29uID0gcmVqZWN0UmVhc29uO1xuICAgIGNvbnN0IHBhcnNlZCA9IHJlamVjdFJlYXNvbi5tYXRjaChcbiAgICAgIC9eXFxbKC4rKVxcXSBPcGVyYXRpb24gJyguKyknIGZhaWxlZDogKC4rKSQvXG4gICAgKTtcbiAgICBpZiAocGFyc2VkKSB7XG4gICAgICB0aGlzLnNob3J0UmVhc29uID0gcGFyc2VkWzNdO1xuICAgICAgdGhpcy5yZWxsTGluZSA9IHBhcnNlZFsxXTtcbiAgICAgIHRoaXMub3BlcmF0aW9uID0gcGFyc2VkWzJdO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVW5leHBlY3RlZFN0YXR1c0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihzdGF0dXM6IG51bWJlcikge1xuICAgIHN1cGVyKGBVbmV4cGVjdGVkIHN0YXR1cyBjb2RlIGZyb20gc2VydmVyOiAke3N0YXR1c31gKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTG9zdE1lc3NhZ2VFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoYFNlcnZlciBsb3N0IG91ciBtZXNzYWdlYCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVuZXhwZWN0ZWRSZXNwb25zZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihgZ290IHVuZXhwZWN0ZWQgcmVzcG9uc2UgZnJvbSBzZXJ2ZXJgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVW52YWxpZFR4UmlkRXhjZXB0aW9uIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcih0eFJJRDogQnVmZmVyKSB7XG4gICAgc3VwZXIoYGV4cGVjdGVkIGxlbmd0aCAzMiBvZiB0eFJJRCwgYnV0IGdvdCAke3R4UklELmxlbmd0aH1gKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2VyaWFsaXplZFRyYW5zYWN0aW9uRm9ybWF0RXhjZXB0aW9uIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihgbWVzc2FnZUhhc2ggaXMgbm90IGEgQnVmZmVyYCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldEJyaWRGcm9tQ2hhaW5FeGNlcHRpb24gZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGNoYWluSWQ6IG51bWJlciwgcmVhc29uOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgRXJyb3IgcmVzb2x2aW5nIEJSSUQgZm9yIGNoYWluSWQgJHtjaGFpbklkfSwgcmVhc29uOiAke3JlYXNvbn1gKTtcbiAgfVxufVxuZXhwb3J0IGNsYXNzIEVtcHR5TGlzdE9mVXJsc0V4Y2VwdGlvbiBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoYEZhaWxlZCB0byBpbml0aWFsaXplIHJlc3QgY2xpZW50IHdpdGggZW1wdHkgbGlzdCBvZiB1cmxzYCk7XG4gIH1cbn1cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQmxvY2hjaGFpblJJREV4Y2VwdGlvbiBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXG4gICAgICBgRmFpbGVkIHRvIGluaXRpYWxpemUgcmVzdCBjbGllbnQgd2l0aCBibG9ja2NoYWluIFJJRCB0aGF0IGlzIG5vdCAzMiBieXRlc2BcbiAgICApO1xuICB9XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcbmltcG9ydCBmZXRjaCBmcm9tIFwibm9kZS1mZXRjaFwiO1xuaW1wb3J0IHtcbiAgUXVlcnlPYmplY3QsXG4gIFJlc3BvbnNlT2JqZWN0UHJvb2YsXG4gIFJlc3RDbGllbnRDb25maWcsXG4gIFJlc3BvbnNlU3RhdHVzLFxuICBUcmFuc2FjdGlvbk9iamVjdCxcbiAgU3RhdHVzT2JqZWN0LFxuICBQb3N0UmVxdWVzdE9iamVjdHMsXG4gIEZhaWxPdmVyQ29uZmlnLFxuICBNZXRob2QsXG4gIFJlc3BvbnNlT2JqZWN0LFxufSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gXCIuLi9sb2dnZXJcIjtcbmltcG9ydCB7XG4gIEVtcHR5TGlzdE9mVXJsc0V4Y2VwdGlvbixcbiAgTG9zdE1lc3NhZ2VFcnJvcixcbiAgU2VyaWFsaXplZFRyYW5zYWN0aW9uRm9ybWF0RXhjZXB0aW9uLFxuICBUeFJlamVjdGVkRXJyb3IsXG4gIFVuZXhwZWN0ZWRSZXNwb25zZUVycm9yLFxuICBVbmV4cGVjdGVkU3RhdHVzRXJyb3IsXG4gIFVudmFsaWRUeFJpZEV4Y2VwdGlvbixcbn0gZnJvbSBcIi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBSZXN0Q2xpZW50IH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgdG9CdWZmZXIgfSBmcm9tIFwiLi4vZm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBuZXh0RW5kcG9pbnQsIHNsZWVwIH0gZnJvbSBcIi4vcmVzdGNsaWVudHV0aWxcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlc3RDbGllbnQoXG4gIGVuZHBvaW50UG9vbDogcmVhZG9ubHkgc3RyaW5nW10sXG4gIGJsb2NrY2hhaW5SSUQ6IHN0cmluZyxcbiAgbWF4U29ja2V0cyA9IDEwLFxuICBwb2xsaW5nSW50ZXJ2YWwgPSA1MDAsXG4gIGZhaWxPdmVyQ29uZmlnPzogRmFpbE92ZXJDb25maWdcbik6IFJlc3RDbGllbnQge1xuICB2YWxpZGF0ZUlucHV0KGVuZHBvaW50UG9vbCwgZmFpbE92ZXJDb25maWcpO1xuXG4gIHJldHVybiB7XG4gICAgY29uZmlnOiB7XG4gICAgICBlbmRwb2ludFBvb2w6IGVuZHBvaW50UG9vbCxcbiAgICAgIHBvb2w6IHsgbWF4U29ja2V0cyB9LFxuICAgICAgcG9sbGluZ0ludGVydmFsLFxuICAgICAgYXR0ZW1wdHNQZXJFbmRwb2ludDogZmFpbE92ZXJDb25maWc/LmF0dGVtcHRzUGVyRW5kcG9pbnQgfHwgMyxcbiAgICAgIGF0dGVtcHRJbnRlcnZhbDogZmFpbE92ZXJDb25maWc/LmF0dGVtcHRJbnRlcnZhbCB8fCA1MDAsXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgY2xpZW50IG1lc3NhZ2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGRvdWJsZS1zaGEyNTYgaGFzaFxuICAgICAqIEBwYXJhbSBtZXNzYWdlSGFzaCBBIGJ1ZmZlciBvZiAzMiBieXRlc1xuICAgICAqIEBwYXJhbSBjYWxsYmFjayBwYXJhbWV0ZXJzIChlcnJvciwgc2VyaWFsaXplZE1lc3NhZ2UpIGlmIGZpcnN0XG4gICAgICogcGFyYW1ldGVyIGlzIG5vdCBudWxsLCBhbiBlcnJvciBvY2N1cnJlZC5cbiAgICAgKiBJZiBmaXJzdCBwYXJhbWV0ZXIgaXMgbnVsbCwgdGhlbiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyBhIGJ1ZmZlclxuICAgICAqIHdpdGggdGhlIHNlcmlhbGl6ZWQgY2xpZW50IG1lc3NhZ2UuIElmIG5vIHN1Y2ggY2xpZW50IG1lc3NhZ2UgZXhpc3RzLFxuICAgICAqIHRoZSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCB3aXRoIChudWxsLCBudWxsKS5cbiAgICAgKi9cbiAgICBnZXRUcmFuc2FjdGlvbjogYXN5bmMgZnVuY3Rpb24gKFxuICAgICAgdHhSSUQ6IEJ1ZmZlcixcbiAgICAgIGNhbGxiYWNrOiAoZXJyb3I6IEVycm9yLCBzZXJpYWxpemVkTWVzc2FnZTogQnVmZmVyKSA9PiB2b2lkXG4gICAgKSB7XG4gICAgICBpZiAoIXZhbGlkVHhSSUQodHhSSUQpKSB7XG4gICAgICAgIGNhbGxiYWNrKG5ldyBVbnZhbGlkVHhSaWRFeGNlcHRpb24odHhSSUQpLCBudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHsgZXJyb3IsIHN0YXR1c0NvZGUsIHJzcEJvZHkgfSA9IGF3YWl0IHJlcXVlc3RXaXRoUmV0cnkoXG4gICAgICAgICAgTWV0aG9kLkdFVCxcbiAgICAgICAgICBcInR4L1wiICsgYmxvY2tjaGFpblJJRCArIFwiL1wiICsgdHhSSUQudG9TdHJpbmcoXCJoZXhcIiksXG4gICAgICAgICAgdGhpcy5jb25maWdcbiAgICAgICAgKTtcblxuICAgICAgICBoYW5kbGVHZXRSZXNwb25zZShcbiAgICAgICAgICBlcnJvcixcbiAgICAgICAgICBzdGF0dXNDb2RlLFxuICAgICAgICAgIHN0YXR1c0NvZGUgPT09IDIwMCA/IHRvQnVmZmVyKHJzcEJvZHkudHgpIDogcnNwQm9keSxcbiAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTZW5kcyBhIHRyYW5zYWN0aW9uIHRvIHBvc3RjaGFpbiBmb3IgaW5jbHVzaW9uIGluIGEgYmxvY2suXG4gICAgICogVXNlIHN0YXR1cygpIHRvIG1vbml0b3IgcHJvZ3Jlc3Mgb25jZSB0aGlzIHRyYW5zYWN0aW9uIGlzXG4gICAgICogcG9zdGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNlcmlhbGl6ZWRUcmFuc2FjdGlvbiBUaGUgdHJhbnNhY3Rpb24gKGEgYnVmZmVyKSB0byBzZW5kXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIHRha2luZyBwYXJhbWV0ZXIgKGVycm9yLCByZXNwb25zZU9iamVjdCkgaWYgZXJyb3IgaXMgbnVsbFxuICAgICAqIHRoZW4gcmVzb25zZU9iamVjdCBpcyBhbHNvIG51bGwuIElmIGVycm9yIGlzIG5vdCBudWxsLCB0aGVuIHJlc3BvbnNlT2JqZWN0XG4gICAgICogaXMgYW4gb2JqZWN0IHdpdGggdGhlIHN0cmluZyBwcm9wZXJ0eSAnZXJyb3InXG4gICAgICovXG4gICAgcG9zdFRyYW5zYWN0aW9uOiBhc3luYyBmdW5jdGlvbiAoXG4gICAgICBzZXJpYWxpemVkVHJhbnNhY3Rpb246IEJ1ZmZlcixcbiAgICAgIGNhbGxiYWNrOiAoZXJyb3I6IEVycm9yLCByZXNwb25zZU9iamVjdDogYW55KSA9PiB2b2lkXG4gICAgKSB7XG4gICAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihzZXJpYWxpemVkVHJhbnNhY3Rpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBTZXJpYWxpemVkVHJhbnNhY3Rpb25Gb3JtYXRFeGNlcHRpb24oKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uT2JqZWN0OiBUcmFuc2FjdGlvbk9iamVjdCA9IHtcbiAgICAgICAgdHg6IHNlcmlhbGl6ZWRUcmFuc2FjdGlvbi50b1N0cmluZyhcImhleFwiKSxcbiAgICAgIH07XG4gICAgICBjb25zdCB7IGVycm9yLCBzdGF0dXNDb2RlLCByc3BCb2R5IH0gPSBhd2FpdCByZXF1ZXN0V2l0aFJldHJ5KFxuICAgICAgICBNZXRob2QuUE9TVCxcbiAgICAgICAgXCJ0eC9cIiArIGJsb2NrY2hhaW5SSUQsXG4gICAgICAgIHRoaXMuY29uZmlnLFxuICAgICAgICB0cmFuc2FjdGlvbk9iamVjdFxuICAgICAgKTtcblxuICAgICAgaGFuZGxlUG9zdFJlc3BvbnNlKGVycm9yLCBzdGF0dXNDb2RlLCByc3BCb2R5LCBjYWxsYmFjayk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyBhIGNvbmZpcm1hdGlvbiBwcm9vZiBmb3IgYSBjbGllbnQgbWVzc2FnZSB3aXRoIHRoZSBzcGVjaWZpZWQgZG91YmxlLXNoYTI1NlxuICAgICAqIGhhc2guXG4gICAgICogQHBhcmFtIG1lc3NhZ2VIYXNoIEEgYnVmZmVyIG9mIDMyIGJ5dGVzXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIHBhcmFtZXRlcnMgKGVycm9yLCByZXNwb25zZU9iamVjdFByb29mKSBpZiBmaXJzdFxuICAgICAqIHBhcmFtZXRlciBpcyBub3QgbnVsbCwgYW4gZXJyb3Igb2NjdXJyZWQuXG4gICAgICogSWYgZmlyc3QgcGFyYW1ldGVyIGlzIG51bGwsIHRoZW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgYW4gb2JqZWN0XG4gICAgICogbGlrZSB0aGUgZm9sbG93aW5nOlxuICAgICAqXG4gICAgICoge2hhc2g6IG1lc3NhZ2VIYXNoQnVmZmVyLFxuICAgICAqICBibG9ja0hlYWRlcjogYmxvY2tIZWFkZXJCdWZmZXIsXG4gICAgICogIHNpZ25hdHVyZXM6IFt7cHViS2V5OiBwdWJLZXlCdWZmZXIsIHNpZ25hdHVyZTogc2lnQnVmZmVyfSwgLi4uXSxcbiAgICAgKiAgbWVya2xlUGF0aDogW3tzaWRlOiA8MHwxPiwgaGFzaDogPGhhc2ggYnVmZmVyIGxldmVsIG4tMT59LFxuICAgICAqICAgICAgICAgICAgICAgLi4uXG4gICAgICogICAgICAgICAgICAgICB7c2lkZTogPDB8MT4sIGhhc2g6IDxoYXNoIGJ1ZmZlciBsZXZlbCAxPn1dfVxuICAgICAqXG4gICAgICogSWYgbm8gc3VjaCBjbGllbnQgbWVzc2FnZSBleGlzdHMsIHRoZSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCB3aXRoIChudWxsLCBudWxsKS5cbiAgICAgKlxuICAgICAqIFRoZSBwcm9vZiBvYmplY3QgY2FuIGJlIHZhbGlkYXRlZCB1c2luZ1xuICAgICAqIHBvc3RjaGFpbi1jb21tb24udXRpbC52YWxpZGF0ZU1lcmtsZVBhdGgocHJvb2YubWVya2xlUGF0aCwgcHJvb2YuaGFzaCxcbiAgICAgKiBwcm9vZi5ibG9ja0hlYWRlci5zbGljZSgzMiwgNjQpKVxuICAgICAqXG4gICAgICogVGhlIHNpZ25hdHVyZXMgbXVzdCBiZSB2YWxpZGF0ZWQgYWdhaW5zIHNvbWUga25vdyB0cnVzdGVkIHNvdXJjZSBmb3IgdmFsaWQgc2lnbmVyc1xuICAgICAqIGF0IHRoaXMgc3BlY2lmaWMgYmxvY2sgaGVpZ2h0LlxuICAgICAqL1xuICAgIGdldENvbmZpcm1hdGlvblByb29mOiBhc3luYyBmdW5jdGlvbiAoXG4gICAgICB0eFJJRDogQnVmZmVyLFxuICAgICAgY2FsbGJhY2s6IChlcnJvcjogRXJyb3IsIHJlc3BvbnNlT2JqZWN0UHJvb2Y6IFJlc3BvbnNlT2JqZWN0UHJvb2YpID0+IHZvaWRcbiAgICApIHtcbiAgICAgIGlmICghdmFsaWRUeFJJRCh0eFJJRCkpIHtcbiAgICAgICAgY2FsbGJhY2sobmV3IFVudmFsaWRUeFJpZEV4Y2VwdGlvbih0eFJJRCksIG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgeyBlcnJvciwgc3RhdHVzQ29kZSwgcnNwQm9keSB9ID0gYXdhaXQgcmVxdWVzdFdpdGhSZXRyeShcbiAgICAgICAgICBNZXRob2QuR0VULFxuICAgICAgICAgIFwidHgvXCIgK1xuICAgICAgICAgICAgYmxvY2tjaGFpblJJRCArXG4gICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICB0eFJJRC50b1N0cmluZyhcImhleFwiKSArXG4gICAgICAgICAgICBcIi9jb25maXJtYXRpb25Qcm9vZlwiLFxuICAgICAgICAgIHRoaXMuY29uZmlnXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNvbmZpcm1hdGlvblByb29mOiBSZXNwb25zZU9iamVjdFByb29mID0ge1xuICAgICAgICAgIGhhc2g6IHVuZGVmaW5lZCxcbiAgICAgICAgICBibG9ja0hlYWRlcjogdW5kZWZpbmVkLFxuICAgICAgICAgIHNpZ25hdHVyZXM6IFtdLFxuICAgICAgICAgIG1lcmtsZVBhdGg6IFtdLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoc3RhdHVzQ29kZSA9PT0gMjAwIHx8IHN0YXR1c0NvZGUgPT09IDUwMykge1xuICAgICAgICAgIGNvbmZpcm1hdGlvblByb29mLmhhc2ggPSB0b0J1ZmZlcihyc3BCb2R5Lmhhc2gpO1xuICAgICAgICAgIGNvbmZpcm1hdGlvblByb29mLmJsb2NrSGVhZGVyID0gdG9CdWZmZXIocnNwQm9keS5ibG9ja0hlYWRlcik7XG4gICAgICAgICAgaWYgKHJzcEJvZHkuc2lnbmF0dXJlcykge1xuICAgICAgICAgICAgY29uZmlybWF0aW9uUHJvb2Yuc2lnbmF0dXJlcyA9IHJzcEJvZHkuc2lnbmF0dXJlcy5tYXAoXG4gICAgICAgICAgICAgIChpdGVtOiB7IHB1YktleTogYW55OyBzaWduYXR1cmU6IGFueSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIHB1YktleTogdG9CdWZmZXIoaXRlbS5wdWJLZXkpLFxuICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlOiB0b0J1ZmZlcihpdGVtLnNpZ25hdHVyZSksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJzcEJvZHkubWVya2xlUGF0aCkge1xuICAgICAgICAgICAgY29uZmlybWF0aW9uUHJvb2YubWVya2xlUGF0aCA9IHJzcEJvZHkubWVya2xlUGF0aC5tYXAoXG4gICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzaWRlOiBpdGVtLnNpZGUsIGhhc2g6IHRvQnVmZmVyKGl0ZW0uaGFzaCkgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlR2V0UmVzcG9uc2UoZXJyb3IsIHN0YXR1c0NvZGUsIGNvbmZpcm1hdGlvblByb29mLCBjYWxsYmFjayk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFF1ZXJpZXMgdGhlIHN0YXR1cyBvZiBhIGNlcnRhaW4gdHJhbnNhY3Rpb24uXG4gICAgICogQHBhcmFtIHR4UklEIHRoZSBpZCBvZiB0aGUgdHJhbnNhY3Rpb25cbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgdGFraW5nIHBhcmFtZXRlcnMgKGVycm9yLCByZXNwb25zZUJvZHkpLiBJZiBlcnJvciBpcyBudWxsXG4gICAgICogdGhlbiByZXNwb25zZUJvZHkgaXMgYW4gb2JqZWN0IG9uIHRoZSBmb3JtXG4gICAgICogeyBzdGF0dXM6ICc8Y29uZmlybWVkfHdhaXRpbmd8cmVqZWN0ZWR8dW5rbm93bj4nIH1cbiAgICAgKiBJZiBlcnJvciBpcyBub3QgbnVsbCwgdGhlbiByZXNwb25zZUJvZHlcbiAgICAgKiBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgc3RyaW5nIHByb3BlcnR5ICdlcnJvcidcbiAgICAgKi9cbiAgICBzdGF0dXM6IGFzeW5jIGZ1bmN0aW9uIChcbiAgICAgIHR4UklEOiBCdWZmZXIsXG4gICAgICBjYWxsYmFjazogKGVycm9yOiBFcnJvciwgcmVzcG9uc2VCb2R5OiBTdGF0dXNPYmplY3QpID0+IHZvaWRcbiAgICApIHtcbiAgICAgIGlmICghdmFsaWRUeFJJRCh0eFJJRCkpIHtcbiAgICAgICAgY2FsbGJhY2sobmV3IFVudmFsaWRUeFJpZEV4Y2VwdGlvbih0eFJJRCksIG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgeyBlcnJvciwgc3RhdHVzQ29kZSwgcnNwQm9keSB9ID0gYXdhaXQgcmVxdWVzdFdpdGhSZXRyeShcbiAgICAgICAgICBNZXRob2QuR0VULFxuICAgICAgICAgIFwidHgvXCIgKyBibG9ja2NoYWluUklEICsgXCIvXCIgKyB0eFJJRC50b1N0cmluZyhcImhleFwiKSArIFwiL3N0YXR1c1wiLFxuICAgICAgICAgIHRoaXMuY29uZmlnXG4gICAgICAgICk7XG5cbiAgICAgICAgaGFuZGxlR2V0UmVzcG9uc2UoZXJyb3IsIHN0YXR1c0NvZGUsIHJzcEJvZHksIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIEludGVyZmFjZXMgdGhlIHF1ZXJ5IGVucG9pbnQgb2YgdGhlIFJlbGwgYmFja2VuZC4gUmV0dXJucyBlaXRoZXIgYSByZXNvbHZlZCBvciByZWplY3RlZCBwcm9taXNlLlxuICAgICAqIEBwYXJhbSBxdWVyeU9iamVjdCBhbiBvYmplY3QgdGhhdCBtdXN0IGNvbnRhaW4gYSBcInR5cGVcIiBhbmQgZm9sbG93cyB0aGlzIHBhdHRlcm46IHsgdHlwZTogXCJuYW1lT2ZRdWVyeVwiLCBhcmcxOiBhcmdWYWx1ZTEsIGFyZzI6IGFyZ3ZhbHVlMiB9XG4gICAgICovXG4gICAgcXVlcnk6IGFzeW5jIGZ1bmN0aW9uIChxdWVyeU9iamVjdDogUXVlcnlPYmplY3QpOiBQcm9taXNlPGFueT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWFzeW5jLXByb21pc2UtZXhlY3V0b3JcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrID0gKGVycm9yOiBFcnJvciwgcmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHsgZXJyb3IsIHN0YXR1c0NvZGUsIHJzcEJvZHkgfSA9IGF3YWl0IHJlcXVlc3RXaXRoUmV0cnkoXG4gICAgICAgICAgTWV0aG9kLlBPU1QsXG4gICAgICAgICAgYHF1ZXJ5LyR7YmxvY2tjaGFpblJJRH1gLFxuICAgICAgICAgIHRoaXMuY29uZmlnLFxuICAgICAgICAgIHF1ZXJ5T2JqZWN0XG4gICAgICAgICk7XG5cbiAgICAgICAgaGFuZGxlUG9zdFJlc3BvbnNlKGVycm9yLCBzdGF0dXNDb2RlLCByc3BCb2R5LCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFBvbGxzIGZvciBzdGF0dXMgd2hpbGUgd2FpdGluZyBmb3IgcmVzcG9uc2U7IGNvbmZpcm1lZCwgcmVqZWN0ZWQgb3IgdW5rbm93bi4gUmV0dXJucyBlaXRoZXIgYSByZXNvbHZlZCBvciByZWplY3RlZCBwcm9taXNlLlxuICAgICAqIEBwYXJhbSB0eFJJRCB0aGUgaWQgb2YgdGhlIHRyYW5zYWN0aW9uXG4gICAgICovXG4gICAgd2FpdENvbmZpcm1hdGlvbih0eFJJRDogQnVmZmVyKTogUHJvbWlzZTxudWxsIHwgRXJyb3I+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMuc3RhdHVzKHR4UklELCAoZXJyb3I6IEVycm9yLCByZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gcmVzLnN0YXR1cztcbiAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgIGNhc2UgUmVzcG9uc2VTdGF0dXMuQ29uZmlybWVkOlxuICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgUmVzcG9uc2VTdGF0dXMuUmVqZWN0ZWQ6XG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBUeFJlamVjdGVkRXJyb3IocmVzLnJlamVjdFJlYXNvbikpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFJlc3BvbnNlU3RhdHVzLlVua25vd246XG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBMb3N0TWVzc2FnZUVycm9yKCkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFJlc3BvbnNlU3RhdHVzLldhaXRpbmc6XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChcbiAgICAgICAgICAgICAgICAgICgpID0+IHRoaXMud2FpdENvbmZpcm1hdGlvbih0eFJJRCkudGhlbihyZXNvbHZlLCByZWplY3QpLFxuICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWcucG9sbGluZ0ludGVydmFsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc3RhdHVzKTtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IFVuZXhwZWN0ZWRSZXNwb25zZUVycm9yKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFBvc3RzIGEgdHJhbnNhY3Rpb24gYW5kIHBvbGxzIGZvciBzdGF0dXMgd2hpbGUgd2FpdGluZyBmb3Igc3RhdHVzIHJlc3BvbnNlOyBjb25maXJtZWQsIHJlamVjdGVkIG9yIHVua25vd24uIFJldHVybnMgZWl0aGVyIGEgcmVzb2x2ZWQgb3IgcmVqZWN0ZWQgcHJvbWlzZS5cbiAgICAgKiBAcGFyYW0gc2VyaWFsaXplZFRyYW5zYWN0aW9uIFRoZSB0cmFuc2FjdGlvbiAoYSBidWZmZXIpIHRvIHNlbmRcbiAgICAgKiBAcGFyYW0gdHhSSUQgdGhlIGlkIG9mIHRoZSB0cmFuc2FjdGlvblxuICAgICAqIEBwYXJhbSB2YWxpZGF0ZSB0cnVlIGlmIHRoZSB0cmFuc2FjdGlvbiBuZWVkcyB0byBiZSB2YWxpZGF0ZWRcbiAgICAgKi9cbiAgICBwb3N0QW5kV2FpdENvbmZpcm1hdGlvbihcbiAgICAgIHNlcmlhbGl6ZWRUcmFuc2FjdGlvbjogQnVmZmVyLFxuICAgICAgdHhSSUQ6IEJ1ZmZlcixcbiAgICAgIHZhbGlkYXRlOiBib29sZWFuXG4gICAgKTogUHJvbWlzZTxudWxsPiB7XG4gICAgICBpZiAodmFsaWRhdGUgPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFwiQXV0b21hdGljIHZhbGlkYXRpb24gaXMgbm90IHlldCBpbXBsZW1lbnRlZFwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMucG9zdFRyYW5zYWN0aW9uKHNlcmlhbGl6ZWRUcmFuc2FjdGlvbiwgKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgIGlmIChlcnJvcikgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoXG4gICAgICAgICAgICAgICgpID0+IHRoaXMud2FpdENvbmZpcm1hdGlvbih0eFJJRCkudGhlbihyZXNvbHZlLCByZWplY3QpLFxuICAgICAgICAgICAgICAxMDExXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBzdHJpbmcgYXJyYXkgd2l0aCB0aGUgZW5kcG9pbnRzIGhvc3RpbmcgdGhlIGRBcHAgdGhlIGNsaWVudFxuICAgICAqIGlzIGNvbm5lY3RlZCB0b1xuICAgICAqL1xuICAgIGdldEVuZHBvaW50UG9vbCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5lbmRwb2ludFBvb2w7XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBTZW5kcyByZXF1ZXN0IHRvIGdldCBkYXRhIGZyb20gYSBnaXZlbiBBUEkgZW5kcG9pbnQuXG4gKiBAcGFyYW0gY29uZmlnIGNsaWVudCBjb25maWcgb24gZm9ybWF0IHt1cmxCYXNlOiB1cmxCYXNlLCBwb29sOiB7bWF4U29ja2V0czogPG51bWJlcj59fVxuICogQHBhcmFtIHBhdGggQVBJIGVuZHBvaW50IG9mIFJlbGwgYmFja2VuZFxuICogQHBhcmFtIGNhbGxiYWNrIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBwcm9wYWdhdGUgdGhlIGVycm9yLCBzdGF0dXNjb2RlIGFuZCBib2R5IGJhY2sgdG8gdGhlIGNhbGxlclxuICovXG5hc3luYyBmdW5jdGlvbiBnZXQocGF0aDogc3RyaW5nLCBlbmRwb2ludDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZU9iamVjdD4ge1xuICBsb2dnZXIuZGVidWcoXCJHRVQgVVJMIFwiICsgbmV3IFVSTChwYXRoLCBlbmRwb2ludCkuaHJlZik7XG5cbiAgbGV0IHJlc3BvbnNlID0gbnVsbDtcbiAgdHJ5IHtcbiAgICByZXNwb25zZSA9IGF3YWl0IGZldGNoKG5ldyBVUkwocGF0aCwgZW5kcG9pbnQpLmhyZWYpO1xuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gNDA0KSB7XG4gICAgICByZXR1cm4geyBlcnJvcjogbnVsbCwgc3RhdHVzQ29kZTogcmVzcG9uc2Uuc3RhdHVzLCByc3BCb2R5OiBudWxsIH07XG4gICAgfVxuICAgIGNvbnN0IHJzcEJvZHkgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgcmV0dXJuIHsgZXJyb3I6IG51bGwsIHN0YXR1c0NvZGU6IHJlc3BvbnNlLnN0YXR1cywgcnNwQm9keSB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZ2dlci5lcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICByZXR1cm4geyBlcnJvciwgc3RhdHVzQ29kZTogcmVzcG9uc2Uuc3RhdHVzLCByc3BCb2R5OiBudWxsIH07XG4gIH1cbn1cblxuLyoqXG4gKiBTZW5kcyByZXF1ZXN0IHRvIHBvc3QgZGF0YSB0byBhIGdpdmVuIEFQSSBlbmRwb2ludC5cbiAqIEBwYXJhbSBjb25maWcgY2xpZW50IGNvbmZpZyBvbiBmb3JtYXQge3VybEJhc2U6IHVybEJhc2UsIHBvb2w6IHttYXhTb2NrZXRzOiA8bnVtYmVyPn19XG4gKiBAcGFyYW0gcGF0aCBBUEkgZW5kcG9pbnQgb2YgUmVsbCBiYWNrZW5kXG4gKiBAcGFyYW0gcmVxdWVzdEJvZHkgcmVxdWVzdCBib2R5XG4gKiBAcGFyYW0gY2FsbGJhY2sgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHByb3BhZ2F0ZSB0aGUgZXJyb3IsIHN0YXR1c2NvZGUgYW5kIGJvZHkgYmFjayB0byB0aGUgY2FsbGVyXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHBvc3QoXG4gIHBhdGg6IHN0cmluZyxcbiAgZW5kcG9pbnQ6IHN0cmluZyxcbiAgcmVxdWVzdEJvZHk6IFBvc3RSZXF1ZXN0T2JqZWN0c1xuKTogUHJvbWlzZTxSZXNwb25zZU9iamVjdD4ge1xuICBsb2dnZXIuZGVidWcoXCJQT1NUIFVSTCBcIiArIG5ldyBVUkwocGF0aCwgZW5kcG9pbnQpLmhyZWYpO1xuICBsb2dnZXIuZGVidWcoXCJQT1NUIGJvZHkgXCIgKyBKU09OLnN0cmluZ2lmeShyZXF1ZXN0Qm9keSkpO1xuXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2gobmV3IFVSTChwYXRoLCBlbmRwb2ludCkuaHJlZiwge1xuICAgIG1ldGhvZDogXCJwb3N0XCIsXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkocmVxdWVzdEJvZHkpLFxuICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgfSk7XG4gIHRyeSB7XG4gICAgY29uc3QgcnNwQm9keSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICByZXR1cm4geyBlcnJvcjogbnVsbCwgc3RhdHVzQ29kZTogcmVzcG9uc2Uuc3RhdHVzLCByc3BCb2R5IH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHsgZXJyb3IsIHN0YXR1c0NvZGU6IHJlc3BvbnNlLnN0YXR1cywgcnNwQm9keTogbnVsbCB9O1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoYXQgdHhSSUQgaXMgYSBCdWZmZXIgb2YgMzIgYnl0ZXMuXG4gKiBAcGFyYW0gdHhSSUQgQSBidWZmZXIgb2YgMzIgYnl0ZXNcbiAqL1xuZnVuY3Rpb24gdmFsaWRUeFJJRCh0eFJJRDogQnVmZmVyKTogYm9vbGVhbiB7XG4gIGlmICh0eFJJRC5sZW5ndGggIT0gMzIpIHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBVbnZhbGlkVHhSaWRFeGNlcHRpb24odHhSSUQpO1xuICAgIGxvZ2dlci5lcnJvcihlcnJvci50b1N0cmluZygpKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlSW5wdXQoXG4gIGVuZHBvaW50UG9vbDogcmVhZG9ubHkgc3RyaW5nW10sXG4gIGZhaWxPdmVyQ29uZmlnOiBGYWlsT3ZlckNvbmZpZ1xuKTogdm9pZCB7XG4gIGlmICghZW5kcG9pbnRQb29sLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFbXB0eUxpc3RPZlVybHNFeGNlcHRpb24oKTtcbiAgfVxuICBpZiAoZmFpbE92ZXJDb25maWc/LmF0dGVtcHRzUGVyRW5kcG9pbnQgPCAxKSB7XG4gICAgbG9nZ2VyLmRlYnVnKFwiQXR0ZW1wdHMgY2FuIG5vdCBiZSAwIG9yIGJlbG93LCBzZXR0aW5nIGl0IHRvIDFcIik7XG4gICAgZmFpbE92ZXJDb25maWcuYXR0ZW1wdHNQZXJFbmRwb2ludCA9IDE7XG4gIH1cbn1cbi8qKlxuICogQHBhcmFtIGVycm9yIHJlc3BvbnNlIGVycm9yXG4gKiBAcGFyYW0gc3RhdHVzQ29kZSByZXNwb25zZSBzdGF0dXMgY29kZVxuICogQHBhcmFtIHJlc3BvbnNlT2JqZWN0IHRoZSByZXNwb25zZWJvZHkgZnJvbSB0aGUgc2VydmVyXG4gKiBAcGFyYW0gY2FsbGJhY2sgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHByb3BhZ2F0ZSB0aGUgZXJyb3IgYW5kIHJlc3BvbnNlIGJhY2sgdG8gdGhlIGNhbGxlclxuICovXG5mdW5jdGlvbiBoYW5kbGVHZXRSZXNwb25zZShcbiAgZXJyb3I6IEVycm9yLFxuICBzdGF0dXNDb2RlOiBudW1iZXIsXG4gIHJlc3BvbnNlT2JqZWN0OiBhbnksXG4gIGNhbGxiYWNrOiAoZXJyb3I6IEVycm9yLCByZXNwb25zZU9iamVjdDogYW55KSA9PiB2b2lkXG4pIHtcbiAgdHJ5IHtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIGNhbGxiYWNrKGVycm9yLCBudWxsKTtcbiAgICB9IGVsc2UgaWYgKHN0YXR1c0NvZGUgPT09IDQwNCkge1xuICAgICAgbG9nZ2VyLmVycm9yKFwiNDA0IHJlY2VpdmVkXCIpO1xuICAgICAgY2FsbGJhY2sobnVsbCwgbnVsbCk7XG4gICAgfSBlbHNlIGlmIChzdGF0dXNDb2RlICE9IDIwMCkge1xuICAgICAgY2FsbGJhY2sobmV3IFVuZXhwZWN0ZWRTdGF0dXNFcnJvcihzdGF0dXNDb2RlKSwgcmVzcG9uc2VPYmplY3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjayhudWxsLCByZXNwb25zZU9iamVjdCk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZ2dlci5lcnJvcihcbiAgICAgIFwicmVzdGNsaWVudC5oYW5kbGVHZXRSZXNwb25zZSgpOiBGYWlsZWQgdG8gY2FsbCBjYWxsYmFjayBmdW5jdGlvbiBcIiArXG4gICAgICAgIGVycm9yXG4gICAgKTtcbiAgfVxufVxuLyoqXG4gKiBAcGFyYW0gZXJyb3IgcmVzcG9uc2UgZXJyb3JcbiAqIEBwYXJhbSBzdGF0dXNDb2RlIHJlc3BvbnNlIHN0YXR1cyBjb2RlXG4gKiBAcGFyYW0gcmVzcG9uc2VPYmplY3QgdGhlIHJlc3BvbnNlYm9keSBmcm9tIHRoZSBzZXJ2ZXJcbiAqIEBwYXJhbSBjYWxsYmFjayB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcHJvcGFnYXRlIHRoZSBlcnJvciBhbmQgcmVzcG9uc2UgYmFjayB0byB0aGUgY2FsbGVyXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZVBvc3RSZXNwb25zZShcbiAgZXJyb3I6IEVycm9yLFxuICBzdGF0dXNDb2RlOiBudW1iZXIsXG4gIHJlc3BvbnNlT2JqZWN0OiBhbnksXG4gIGNhbGxiYWNrOiAoZXJyb3I6IEVycm9yLCByZXNwb25zZU9iamVjdD86IGFueSkgPT4gdm9pZFxuKSB7XG4gIHRyeSB7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoYEluIHJlc3RjbGllbnQgcG9zdCgpLiAke2Vycm9yfWApO1xuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuICAgIH0gZWxzZSBpZiAoc3RhdHVzQ29kZSAhPSAyMDApIHtcbiAgICAgIGxvZ2dlci5lcnJvcihgVW5leHBlY3RlZCBzdGF0dXMgY29kZSBmcm9tIHNlcnZlcjogJHtzdGF0dXNDb2RlfWApO1xuICAgICAgY2FsbGJhY2sobmV3IFVuZXhwZWN0ZWRTdGF0dXNFcnJvcihzdGF0dXNDb2RlKSwgcmVzcG9uc2VPYmplY3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dnZXIuaW5mbyhcbiAgICAgICAgYENhbGxpbmcgcmVzcG9uc2VDYWxsYmFjayB3aXRoIHJlc3BvbnNlT2JqZWN0OiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHJlc3BvbnNlT2JqZWN0XG4gICAgICAgICl9YFxuICAgICAgKTtcbiAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3BvbnNlT2JqZWN0KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgbG9nZ2VyLmVycm9yKFxuICAgICAgXCJyZXN0Y2xpZW50LmhhbmRsZVBvc3RSZXNwb25zZSgpOiBGYWlsZWQgdG8gY2FsbCBjYWxsYmFjayBmdW5jdGlvbiBcIiArXG4gICAgICAgIGVycm9yXG4gICAgKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZXF1ZXN0V2l0aFJldHJ5KFxuICBtZXRob2Q6IE1ldGhvZCxcbiAgcGF0aDogc3RyaW5nLFxuICBjb25maWc6IFJlc3RDbGllbnRDb25maWcsXG4gIHBvc3RPYmplY3Q/OiBQb3N0UmVxdWVzdE9iamVjdHNcbik6IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+IHtcbiAgbGV0IHN0YXR1c0NvZGU6IG51bWJlciwgcnNwQm9keTogYW55LCBlcnJvcjogRXJyb3I7XG4gIGNvbnN0IG5vUmV0cnlTdGF0dXNDb2RlcyA9IFsyMDAsIDQwMCwgNDA5LCA1MDBdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnLmVuZHBvaW50UG9vbC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gbmV4dEVuZHBvaW50KGNvbmZpZy5lbmRwb2ludFBvb2wpO1xuICAgIGF0dGVtcHRMb29wOiBmb3IgKFxuICAgICAgbGV0IGF0dGVtcHQgPSAwO1xuICAgICAgYXR0ZW1wdCA8IGNvbmZpZy5hdHRlbXB0c1BlckVuZHBvaW50O1xuICAgICAgYXR0ZW1wdCsrXG4gICAgKSB7XG4gICAgICAoeyBlcnJvciwgc3RhdHVzQ29kZSwgcnNwQm9keSB9ID0gYXdhaXQgaGFuZGxlUmVxdWVzdChcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBwYXRoLFxuICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgcG9zdE9iamVjdFxuICAgICAgKSk7XG4gICAgICBpZiAobm9SZXRyeVN0YXR1c0NvZGVzLmluY2x1ZGVzKHN0YXR1c0NvZGUpKSB7XG4gICAgICAgIHJldHVybiB7IGVycm9yLCBzdGF0dXNDb2RlLCByc3BCb2R5IH07XG4gICAgICB9XG4gICAgICBpZiAoc3RhdHVzQ29kZSA9PSA1MDMpIHtcbiAgICAgICAgYnJlYWsgYXR0ZW1wdExvb3A7XG4gICAgICB9XG4gICAgICBsb2dnZXIuaW5mbyhcbiAgICAgICAgYCR7bWV0aG9kfSByZXF1ZXN0IGZhaWxlZCBvbiAke2VuZHBvaW50fS4gQXR0ZW1wdDogJHthdHRlbXB0ICsgMX0gLyAke1xuICAgICAgICAgIGNvbmZpZy5hdHRlbXB0c1BlckVuZHBvaW50XG4gICAgICAgIH1gXG4gICAgICApO1xuICAgICAgYXdhaXQgc2xlZXAoY29uZmlnLmF0dGVtcHRJbnRlcnZhbCk7XG4gICAgfVxuICAgIHJldHVybiB7IGVycm9yLCBzdGF0dXNDb2RlLCByc3BCb2R5IH07XG4gIH1cbn1cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZVJlcXVlc3QoXG4gIG1ldGhvZDogTWV0aG9kLFxuICBwYXRoOiBzdHJpbmcsXG4gIGVuZHBvaW50OiBzdHJpbmcsXG4gIHBvc3RPYmplY3Q/OiBQb3N0UmVxdWVzdE9iamVjdHNcbik6IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+IHtcbiAgaWYgKG1ldGhvZCA9PSBNZXRob2QuR0VUKSB7XG4gICAgcmV0dXJuIGF3YWl0IGdldChwYXRoLCBlbmRwb2ludCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGF3YWl0IHBvc3QocGF0aCwgZW5kcG9pbnQsIHBvc3RPYmplY3QpO1xuICB9XG59XG4iLCJpbXBvcnQgZmV0Y2ggZnJvbSBcIm5vZGUtZmV0Y2hcIjtcbmltcG9ydCB7IEdldEJyaWRGcm9tQ2hhaW5FeGNlcHRpb24gfSBmcm9tIFwiLi9lcnJvcnNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJyaWQodXJsQmFzZTogc3RyaW5nLCBjaGFpbklkOiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz4ge1xuICBpZiAoY2hhaW5JZCA+PSAwKSB7XG4gICAgY29uc3QgdXJsID0gYCR7dXJsQmFzZX0vYnJpZC9paWRfJHtjaGFpbklkfWA7XG4gICAgcmV0dXJuIGZldGNoKHVybCkudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3BvbnNlLm9rKSByZXR1cm4gcmVzcG9uc2UudGV4dCgpO1xuICAgICAgdGhyb3cgbmV3IEdldEJyaWRGcm9tQ2hhaW5FeGNlcHRpb24oY2hhaW5JZCwgcmVzcG9uc2Uuc3RhdHVzVGV4dCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdXJsID0gYCR7dXJsQmFzZX0vX2RlYnVnYDtcbiAgICByZXR1cm4gZmV0Y2godXJsKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICBpZiAocmVzcG9uc2Uub2spXG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgICAgIC5qc29uKClcbiAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgIChqc29uOiBhbnkpID0+IGpzb24uYmxvY2tjaGFpbltqc29uLmJsb2NrY2hhaW4ubGVuZ3RoIC0gMV0uYnJpZFxuICAgICAgICAgICk7XG4gICAgICB0aHJvdyBuZXcgR2V0QnJpZEZyb21DaGFpbkV4Y2VwdGlvbihjaGFpbklkLCByZXNwb25zZS5zdGF0dXNUZXh0KTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV4dEVuZHBvaW50KGVuZHBvaW50UG9vbDogcmVhZG9ubHkgc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gZW5kcG9pbnRQb29sW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGVuZHBvaW50UG9vbC5sZW5ndGgpXTtcbn1cbmV4cG9ydCBjb25zdCBzbGVlcCA9IChtczogbnVtYmVyKSA9PiBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCBtcykpO1xuIiwiaW1wb3J0IHsgUmF3R3R2IH0gZnJvbSBcIi4uL2d0di90eXBlc1wiO1xuaW1wb3J0IHsgQnVmZmVyU2lnbmVyUGFpciwgU2lnbmVyUGFpciB9IGZyb20gXCIuLi9ndHgvdHlwZXNcIjtcbmltcG9ydCB7IFBhdGgsIFN0cmluZ1BhdGggfSBmcm9tIFwiLi4vbWVya2xlL3R5cGVzXCI7XG5cbmV4cG9ydCB0eXBlIFJlc3RDbGllbnRDb25maWcgPSB7XG4gIGVuZHBvaW50UG9vbDogcmVhZG9ubHkgc3RyaW5nW107XG4gIHBvb2w6IHtcbiAgICBtYXhTb2NrZXRzOiBudW1iZXI7XG4gIH07XG4gIHBvbGxpbmdJbnRlcnZhbDogbnVtYmVyO1xuICBhdHRlbXB0c1BlckVuZHBvaW50OiBudW1iZXI7XG4gIGF0dGVtcHRJbnRlcnZhbDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgUmVxdWVzdE9wdGlvbnMgPSB7XG4gIG1ldGhvZDogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAganNvbjogYm9vbGVhbjtcbiAgYm9keT86IG9iamVjdDtcbiAgcG9vbDogeyBtYXhTb2NrZXRzOiBudW1iZXIgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5T2JqZWN0ID0ge1xuICB0eXBlOiBzdHJpbmc7XG4gIFthcmc6IHN0cmluZ106IFJhd0d0djtcbn07XG5cbmV4cG9ydCB0eXBlIFNlcnZlclJldHVyblByb29mID0ge1xuICBoYXNoOiBzdHJpbmc7XG4gIGJsb2NrSGVhZGVyOiBzdHJpbmc7XG4gIHNpZ25hdHVyZXM6IFNpZ25lclBhaXJbXTtcbiAgbWVya2xlUGF0aDogU3RyaW5nUGF0aDtcbn07XG5cbmV4cG9ydCB0eXBlIFJlc3BvbnNlT2JqZWN0UHJvb2YgPSB7XG4gIGhhc2g6IEJ1ZmZlcjtcbiAgYmxvY2tIZWFkZXI6IEJ1ZmZlcjtcbiAgc2lnbmF0dXJlczogQnVmZmVyU2lnbmVyUGFpcltdO1xuICBtZXJrbGVQYXRoOiBQYXRoO1xufTtcblxuZXhwb3J0IGVudW0gUmVzcG9uc2VTdGF0dXMge1xuICBDb25maXJtZWQgPSBcImNvbmZpcm1lZFwiLFxuICBSZWplY3RlZCA9IFwicmVqZWN0ZWRcIixcbiAgVW5rbm93biA9IFwidW5rbm93blwiLFxuICBXYWl0aW5nID0gXCJ3YWl0aW5nXCIsXG59XG4vL3R4IGhhcyB0byBiZSBoZXggc3RyaW5nXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbk9iamVjdCA9IHtcbiAgdHg6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBTdGF0dXNPYmplY3QgPSB7XG4gIHN0YXR1czogUmVzcG9uc2VTdGF0dXM7XG4gIHJlamVjdFJlYXNvbj86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFBvc3RSZXF1ZXN0T2JqZWN0cyA9IFRyYW5zYWN0aW9uT2JqZWN0IHwgUXVlcnlPYmplY3Q7XG5cbmV4cG9ydCB0eXBlIEdldFJlc3BvbnNlT2JqZWN0cyA9XG4gIHwgU3RhdHVzT2JqZWN0XG4gIHwgVHJhbnNhY3Rpb25PYmplY3RcbiAgfCBTZXJ2ZXJSZXR1cm5Qcm9vZjtcblxuZXhwb3J0IHR5cGUgRmFpbE92ZXJDb25maWcgPSB7XG4gIGF0dGVtcHRzUGVyRW5kcG9pbnQ/OiBudW1iZXI7XG4gIGF0dGVtcHRJbnRlcnZhbD86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlc3BvbnNlT2JqZWN0ID0ge1xuICBlcnJvcjogRXJyb3I7XG4gIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgcnNwQm9keTogYW55O1xufTtcblxuZXhwb3J0IGVudW0gTWV0aG9kIHtcbiAgR0VUID0gXCJnZXRcIixcbiAgUE9TVCA9IFwicG9zdFwiLFxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBjb252ZXJzaW9ucyA9IHt9O1xubW9kdWxlLmV4cG9ydHMgPSBjb252ZXJzaW9ucztcblxuZnVuY3Rpb24gc2lnbih4KSB7XG4gICAgcmV0dXJuIHggPCAwID8gLTEgOiAxO1xufVxuXG5mdW5jdGlvbiBldmVuUm91bmQoeCkge1xuICAgIC8vIFJvdW5kIHggdG8gdGhlIG5lYXJlc3QgaW50ZWdlciwgY2hvb3NpbmcgdGhlIGV2ZW4gaW50ZWdlciBpZiBpdCBsaWVzIGhhbGZ3YXkgYmV0d2VlbiB0d28uXG4gICAgaWYgKCh4ICUgMSkgPT09IDAuNSAmJiAoeCAmIDEpID09PSAwKSB7IC8vIFtldmVuIG51bWJlcl0uNTsgcm91bmQgZG93biAoaS5lLiBmbG9vcilcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoeCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoeCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVOdW1iZXJDb252ZXJzaW9uKGJpdExlbmd0aCwgdHlwZU9wdHMpIHtcbiAgICBpZiAoIXR5cGVPcHRzLnVuc2lnbmVkKSB7XG4gICAgICAgIC0tYml0TGVuZ3RoO1xuICAgIH1cbiAgICBjb25zdCBsb3dlckJvdW5kID0gdHlwZU9wdHMudW5zaWduZWQgPyAwIDogLU1hdGgucG93KDIsIGJpdExlbmd0aCk7XG4gICAgY29uc3QgdXBwZXJCb3VuZCA9IE1hdGgucG93KDIsIGJpdExlbmd0aCkgLSAxO1xuXG4gICAgY29uc3QgbW9kdWxvVmFsID0gdHlwZU9wdHMubW9kdWxvQml0TGVuZ3RoID8gTWF0aC5wb3coMiwgdHlwZU9wdHMubW9kdWxvQml0TGVuZ3RoKSA6IE1hdGgucG93KDIsIGJpdExlbmd0aCk7XG4gICAgY29uc3QgbW9kdWxvQm91bmQgPSB0eXBlT3B0cy5tb2R1bG9CaXRMZW5ndGggPyBNYXRoLnBvdygyLCB0eXBlT3B0cy5tb2R1bG9CaXRMZW5ndGggLSAxKSA6IE1hdGgucG93KDIsIGJpdExlbmd0aCAtIDEpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uKFYsIG9wdHMpIHtcbiAgICAgICAgaWYgKCFvcHRzKSBvcHRzID0ge307XG5cbiAgICAgICAgbGV0IHggPSArVjtcblxuICAgICAgICBpZiAob3B0cy5lbmZvcmNlUmFuZ2UpIHtcbiAgICAgICAgICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHgpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IGlzIG5vdCBhIGZpbml0ZSBudW1iZXJcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHggPSBzaWduKHgpICogTWF0aC5mbG9vcihNYXRoLmFicyh4KSk7XG4gICAgICAgICAgICBpZiAoeCA8IGxvd2VyQm91bmQgfHwgeCA+IHVwcGVyQm91bmQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgaXMgbm90IGluIGJ5dGUgcmFuZ2VcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc05hTih4KSAmJiBvcHRzLmNsYW1wKSB7XG4gICAgICAgICAgICB4ID0gZXZlblJvdW5kKHgpO1xuXG4gICAgICAgICAgICBpZiAoeCA8IGxvd2VyQm91bmQpIHggPSBsb3dlckJvdW5kO1xuICAgICAgICAgICAgaWYgKHggPiB1cHBlckJvdW5kKSB4ID0gdXBwZXJCb3VuZDtcbiAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoeCkgfHwgeCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICB4ID0gc2lnbih4KSAqIE1hdGguZmxvb3IoTWF0aC5hYnMoeCkpO1xuICAgICAgICB4ID0geCAlIG1vZHVsb1ZhbDtcblxuICAgICAgICBpZiAoIXR5cGVPcHRzLnVuc2lnbmVkICYmIHggPj0gbW9kdWxvQm91bmQpIHtcbiAgICAgICAgICAgIHJldHVybiB4IC0gbW9kdWxvVmFsO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVPcHRzLnVuc2lnbmVkKSB7XG4gICAgICAgICAgICBpZiAoeCA8IDApIHtcbiAgICAgICAgICAgICAgeCArPSBtb2R1bG9WYWw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHggPT09IC0wKSB7IC8vIGRvbid0IHJldHVybiBuZWdhdGl2ZSB6ZXJvXG4gICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgfVxufVxuXG5jb252ZXJzaW9uc1tcInZvaWRcIl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmNvbnZlcnNpb25zW1wiYm9vbGVhblwiXSA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICByZXR1cm4gISF2YWw7XG59O1xuXG5jb252ZXJzaW9uc1tcImJ5dGVcIl0gPSBjcmVhdGVOdW1iZXJDb252ZXJzaW9uKDgsIHsgdW5zaWduZWQ6IGZhbHNlIH0pO1xuY29udmVyc2lvbnNbXCJvY3RldFwiXSA9IGNyZWF0ZU51bWJlckNvbnZlcnNpb24oOCwgeyB1bnNpZ25lZDogdHJ1ZSB9KTtcblxuY29udmVyc2lvbnNbXCJzaG9ydFwiXSA9IGNyZWF0ZU51bWJlckNvbnZlcnNpb24oMTYsIHsgdW5zaWduZWQ6IGZhbHNlIH0pO1xuY29udmVyc2lvbnNbXCJ1bnNpZ25lZCBzaG9ydFwiXSA9IGNyZWF0ZU51bWJlckNvbnZlcnNpb24oMTYsIHsgdW5zaWduZWQ6IHRydWUgfSk7XG5cbmNvbnZlcnNpb25zW1wibG9uZ1wiXSA9IGNyZWF0ZU51bWJlckNvbnZlcnNpb24oMzIsIHsgdW5zaWduZWQ6IGZhbHNlIH0pO1xuY29udmVyc2lvbnNbXCJ1bnNpZ25lZCBsb25nXCJdID0gY3JlYXRlTnVtYmVyQ29udmVyc2lvbigzMiwgeyB1bnNpZ25lZDogdHJ1ZSB9KTtcblxuY29udmVyc2lvbnNbXCJsb25nIGxvbmdcIl0gPSBjcmVhdGVOdW1iZXJDb252ZXJzaW9uKDMyLCB7IHVuc2lnbmVkOiBmYWxzZSwgbW9kdWxvQml0TGVuZ3RoOiA2NCB9KTtcbmNvbnZlcnNpb25zW1widW5zaWduZWQgbG9uZyBsb25nXCJdID0gY3JlYXRlTnVtYmVyQ29udmVyc2lvbigzMiwgeyB1bnNpZ25lZDogdHJ1ZSwgbW9kdWxvQml0TGVuZ3RoOiA2NCB9KTtcblxuY29udmVyc2lvbnNbXCJkb3VibGVcIl0gPSBmdW5jdGlvbiAoVikge1xuICAgIGNvbnN0IHggPSArVjtcblxuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHgpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudCBpcyBub3QgYSBmaW5pdGUgZmxvYXRpbmctcG9pbnQgdmFsdWVcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHg7XG59O1xuXG5jb252ZXJzaW9uc1tcInVucmVzdHJpY3RlZCBkb3VibGVcIl0gPSBmdW5jdGlvbiAoVikge1xuICAgIGNvbnN0IHggPSArVjtcblxuICAgIGlmIChpc05hTih4KSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgaXMgTmFOXCIpO1xuICAgIH1cblxuICAgIHJldHVybiB4O1xufTtcblxuLy8gbm90IHF1aXRlIHZhbGlkLCBidXQgZ29vZCBlbm91Z2ggZm9yIEpTXG5jb252ZXJzaW9uc1tcImZsb2F0XCJdID0gY29udmVyc2lvbnNbXCJkb3VibGVcIl07XG5jb252ZXJzaW9uc1tcInVucmVzdHJpY3RlZCBmbG9hdFwiXSA9IGNvbnZlcnNpb25zW1widW5yZXN0cmljdGVkIGRvdWJsZVwiXTtcblxuY29udmVyc2lvbnNbXCJET01TdHJpbmdcIl0gPSBmdW5jdGlvbiAoViwgb3B0cykge1xuICAgIGlmICghb3B0cykgb3B0cyA9IHt9O1xuXG4gICAgaWYgKG9wdHMudHJlYXROdWxsQXNFbXB0eVN0cmluZyAmJiBWID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmcoVik7XG59O1xuXG5jb252ZXJzaW9uc1tcIkJ5dGVTdHJpbmdcIl0gPSBmdW5jdGlvbiAoViwgb3B0cykge1xuICAgIGNvbnN0IHggPSBTdHJpbmcoVik7XG4gICAgbGV0IGMgPSB1bmRlZmluZWQ7XG4gICAgZm9yIChsZXQgaSA9IDA7IChjID0geC5jb2RlUG9pbnRBdChpKSkgIT09IHVuZGVmaW5lZDsgKytpKSB7XG4gICAgICAgIGlmIChjID4gMjU1KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgaXMgbm90IGEgdmFsaWQgYnl0ZXN0cmluZ1wiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB4O1xufTtcblxuY29udmVyc2lvbnNbXCJVU1ZTdHJpbmdcIl0gPSBmdW5jdGlvbiAoVikge1xuICAgIGNvbnN0IFMgPSBTdHJpbmcoVik7XG4gICAgY29uc3QgbiA9IFMubGVuZ3RoO1xuICAgIGNvbnN0IFUgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgICBjb25zdCBjID0gUy5jaGFyQ29kZUF0KGkpO1xuICAgICAgICBpZiAoYyA8IDB4RDgwMCB8fCBjID4gMHhERkZGKSB7XG4gICAgICAgICAgICBVLnB1c2goU3RyaW5nLmZyb21Db2RlUG9pbnQoYykpO1xuICAgICAgICB9IGVsc2UgaWYgKDB4REMwMCA8PSBjICYmIGMgPD0gMHhERkZGKSB7XG4gICAgICAgICAgICBVLnB1c2goU3RyaW5nLmZyb21Db2RlUG9pbnQoMHhGRkZEKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaSA9PT0gbiAtIDEpIHtcbiAgICAgICAgICAgICAgICBVLnB1c2goU3RyaW5nLmZyb21Db2RlUG9pbnQoMHhGRkZEKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBTLmNoYXJDb2RlQXQoaSArIDEpO1xuICAgICAgICAgICAgICAgIGlmICgweERDMDAgPD0gZCAmJiBkIDw9IDB4REZGRikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gYyAmIDB4M0ZGO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiID0gZCAmIDB4M0ZGO1xuICAgICAgICAgICAgICAgICAgICBVLnB1c2goU3RyaW5nLmZyb21Db2RlUG9pbnQoKDIgPDwgMTUpICsgKDIgPDwgOSkgKiBhICsgYikpO1xuICAgICAgICAgICAgICAgICAgICArK2k7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgVS5wdXNoKFN0cmluZy5mcm9tQ29kZVBvaW50KDB4RkZGRCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBVLmpvaW4oJycpO1xufTtcblxuY29udmVyc2lvbnNbXCJEYXRlXCJdID0gZnVuY3Rpb24gKFYsIG9wdHMpIHtcbiAgICBpZiAoIShWIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IGlzIG5vdCBhIERhdGUgb2JqZWN0XCIpO1xuICAgIH1cbiAgICBpZiAoaXNOYU4oVikpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gVjtcbn07XG5cbmNvbnZlcnNpb25zW1wiUmVnRXhwXCJdID0gZnVuY3Rpb24gKFYsIG9wdHMpIHtcbiAgICBpZiAoIShWIGluc3RhbmNlb2YgUmVnRXhwKSkge1xuICAgICAgICBWID0gbmV3IFJlZ0V4cChWKTtcbiAgICB9XG5cbiAgICByZXR1cm4gVjtcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcbmNvbnN0IHVzbSA9IHJlcXVpcmUoXCIuL3VybC1zdGF0ZS1tYWNoaW5lXCIpO1xuXG5leHBvcnRzLmltcGxlbWVudGF0aW9uID0gY2xhc3MgVVJMSW1wbCB7XG4gIGNvbnN0cnVjdG9yKGNvbnN0cnVjdG9yQXJncykge1xuICAgIGNvbnN0IHVybCA9IGNvbnN0cnVjdG9yQXJnc1swXTtcbiAgICBjb25zdCBiYXNlID0gY29uc3RydWN0b3JBcmdzWzFdO1xuXG4gICAgbGV0IHBhcnNlZEJhc2UgPSBudWxsO1xuICAgIGlmIChiYXNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcnNlZEJhc2UgPSB1c20uYmFzaWNVUkxQYXJzZShiYXNlKTtcbiAgICAgIGlmIChwYXJzZWRCYXNlID09PSBcImZhaWx1cmVcIikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBiYXNlIFVSTFwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWRVUkwgPSB1c20uYmFzaWNVUkxQYXJzZSh1cmwsIHsgYmFzZVVSTDogcGFyc2VkQmFzZSB9KTtcbiAgICBpZiAocGFyc2VkVVJMID09PSBcImZhaWx1cmVcIikge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgVVJMXCIpO1xuICAgIH1cblxuICAgIHRoaXMuX3VybCA9IHBhcnNlZFVSTDtcblxuICAgIC8vIFRPRE86IHF1ZXJ5IHN0dWZmXG4gIH1cblxuICBnZXQgaHJlZigpIHtcbiAgICByZXR1cm4gdXNtLnNlcmlhbGl6ZVVSTCh0aGlzLl91cmwpO1xuICB9XG5cbiAgc2V0IGhyZWYodikge1xuICAgIGNvbnN0IHBhcnNlZFVSTCA9IHVzbS5iYXNpY1VSTFBhcnNlKHYpO1xuICAgIGlmIChwYXJzZWRVUkwgPT09IFwiZmFpbHVyZVwiKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBVUkxcIik7XG4gICAgfVxuXG4gICAgdGhpcy5fdXJsID0gcGFyc2VkVVJMO1xuICB9XG5cbiAgZ2V0IG9yaWdpbigpIHtcbiAgICByZXR1cm4gdXNtLnNlcmlhbGl6ZVVSTE9yaWdpbih0aGlzLl91cmwpO1xuICB9XG5cbiAgZ2V0IHByb3RvY29sKCkge1xuICAgIHJldHVybiB0aGlzLl91cmwuc2NoZW1lICsgXCI6XCI7XG4gIH1cblxuICBzZXQgcHJvdG9jb2wodikge1xuICAgIHVzbS5iYXNpY1VSTFBhcnNlKHYgKyBcIjpcIiwgeyB1cmw6IHRoaXMuX3VybCwgc3RhdGVPdmVycmlkZTogXCJzY2hlbWUgc3RhcnRcIiB9KTtcbiAgfVxuXG4gIGdldCB1c2VybmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdXJsLnVzZXJuYW1lO1xuICB9XG5cbiAgc2V0IHVzZXJuYW1lKHYpIHtcbiAgICBpZiAodXNtLmNhbm5vdEhhdmVBVXNlcm5hbWVQYXNzd29yZFBvcnQodGhpcy5fdXJsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHVzbS5zZXRUaGVVc2VybmFtZSh0aGlzLl91cmwsIHYpO1xuICB9XG5cbiAgZ2V0IHBhc3N3b3JkKCkge1xuICAgIHJldHVybiB0aGlzLl91cmwucGFzc3dvcmQ7XG4gIH1cblxuICBzZXQgcGFzc3dvcmQodikge1xuICAgIGlmICh1c20uY2Fubm90SGF2ZUFVc2VybmFtZVBhc3N3b3JkUG9ydCh0aGlzLl91cmwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdXNtLnNldFRoZVBhc3N3b3JkKHRoaXMuX3VybCwgdik7XG4gIH1cblxuICBnZXQgaG9zdCgpIHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLl91cmw7XG5cbiAgICBpZiAodXJsLmhvc3QgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIGlmICh1cmwucG9ydCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHVzbS5zZXJpYWxpemVIb3N0KHVybC5ob3N0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNtLnNlcmlhbGl6ZUhvc3QodXJsLmhvc3QpICsgXCI6XCIgKyB1c20uc2VyaWFsaXplSW50ZWdlcih1cmwucG9ydCk7XG4gIH1cblxuICBzZXQgaG9zdCh2KSB7XG4gICAgaWYgKHRoaXMuX3VybC5jYW5ub3RCZUFCYXNlVVJMKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdXNtLmJhc2ljVVJMUGFyc2UodiwgeyB1cmw6IHRoaXMuX3VybCwgc3RhdGVPdmVycmlkZTogXCJob3N0XCIgfSk7XG4gIH1cblxuICBnZXQgaG9zdG5hbWUoKSB7XG4gICAgaWYgKHRoaXMuX3VybC5ob3N0ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNtLnNlcmlhbGl6ZUhvc3QodGhpcy5fdXJsLmhvc3QpO1xuICB9XG5cbiAgc2V0IGhvc3RuYW1lKHYpIHtcbiAgICBpZiAodGhpcy5fdXJsLmNhbm5vdEJlQUJhc2VVUkwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB1c20uYmFzaWNVUkxQYXJzZSh2LCB7IHVybDogdGhpcy5fdXJsLCBzdGF0ZU92ZXJyaWRlOiBcImhvc3RuYW1lXCIgfSk7XG4gIH1cblxuICBnZXQgcG9ydCgpIHtcbiAgICBpZiAodGhpcy5fdXJsLnBvcnQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHJldHVybiB1c20uc2VyaWFsaXplSW50ZWdlcih0aGlzLl91cmwucG9ydCk7XG4gIH1cblxuICBzZXQgcG9ydCh2KSB7XG4gICAgaWYgKHVzbS5jYW5ub3RIYXZlQVVzZXJuYW1lUGFzc3dvcmRQb3J0KHRoaXMuX3VybCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodiA9PT0gXCJcIikge1xuICAgICAgdGhpcy5fdXJsLnBvcnQgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB1c20uYmFzaWNVUkxQYXJzZSh2LCB7IHVybDogdGhpcy5fdXJsLCBzdGF0ZU92ZXJyaWRlOiBcInBvcnRcIiB9KTtcbiAgICB9XG4gIH1cblxuICBnZXQgcGF0aG5hbWUoKSB7XG4gICAgaWYgKHRoaXMuX3VybC5jYW5ub3RCZUFCYXNlVVJMKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdXJsLnBhdGhbMF07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3VybC5wYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiL1wiICsgdGhpcy5fdXJsLnBhdGguam9pbihcIi9cIik7XG4gIH1cblxuICBzZXQgcGF0aG5hbWUodikge1xuICAgIGlmICh0aGlzLl91cmwuY2Fubm90QmVBQmFzZVVSTCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3VybC5wYXRoID0gW107XG4gICAgdXNtLmJhc2ljVVJMUGFyc2UodiwgeyB1cmw6IHRoaXMuX3VybCwgc3RhdGVPdmVycmlkZTogXCJwYXRoIHN0YXJ0XCIgfSk7XG4gIH1cblxuICBnZXQgc2VhcmNoKCkge1xuICAgIGlmICh0aGlzLl91cmwucXVlcnkgPT09IG51bGwgfHwgdGhpcy5fdXJsLnF1ZXJ5ID09PSBcIlwiKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gXCI/XCIgKyB0aGlzLl91cmwucXVlcnk7XG4gIH1cblxuICBzZXQgc2VhcmNoKHYpIHtcbiAgICAvLyBUT0RPOiBxdWVyeSBzdHVmZlxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5fdXJsO1xuXG4gICAgaWYgKHYgPT09IFwiXCIpIHtcbiAgICAgIHVybC5xdWVyeSA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXQgPSB2WzBdID09PSBcIj9cIiA/IHYuc3Vic3RyaW5nKDEpIDogdjtcbiAgICB1cmwucXVlcnkgPSBcIlwiO1xuICAgIHVzbS5iYXNpY1VSTFBhcnNlKGlucHV0LCB7IHVybCwgc3RhdGVPdmVycmlkZTogXCJxdWVyeVwiIH0pO1xuICB9XG5cbiAgZ2V0IGhhc2goKSB7XG4gICAgaWYgKHRoaXMuX3VybC5mcmFnbWVudCA9PT0gbnVsbCB8fCB0aGlzLl91cmwuZnJhZ21lbnQgPT09IFwiXCIpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHJldHVybiBcIiNcIiArIHRoaXMuX3VybC5mcmFnbWVudDtcbiAgfVxuXG4gIHNldCBoYXNoKHYpIHtcbiAgICBpZiAodiA9PT0gXCJcIikge1xuICAgICAgdGhpcy5fdXJsLmZyYWdtZW50ID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpbnB1dCA9IHZbMF0gPT09IFwiI1wiID8gdi5zdWJzdHJpbmcoMSkgOiB2O1xuICAgIHRoaXMuX3VybC5mcmFnbWVudCA9IFwiXCI7XG4gICAgdXNtLmJhc2ljVVJMUGFyc2UoaW5wdXQsIHsgdXJsOiB0aGlzLl91cmwsIHN0YXRlT3ZlcnJpZGU6IFwiZnJhZ21lbnRcIiB9KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmNvbnN0IGNvbnZlcnNpb25zID0gcmVxdWlyZShcIndlYmlkbC1jb252ZXJzaW9uc1wiKTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZShcIi4vdXRpbHMuanNcIik7XG5jb25zdCBJbXBsID0gcmVxdWlyZShcIi4vL1VSTC1pbXBsLmpzXCIpO1xuXG5jb25zdCBpbXBsID0gdXRpbHMuaW1wbFN5bWJvbDtcblxuZnVuY3Rpb24gVVJMKHVybCkge1xuICBpZiAoIXRoaXMgfHwgdGhpc1tpbXBsXSB8fCAhKHRoaXMgaW5zdGFuY2VvZiBVUkwpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ1VSTCc6IFBsZWFzZSB1c2UgdGhlICduZXcnIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLlwiKTtcbiAgfVxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmFpbGVkIHRvIGNvbnN0cnVjdCAnVVJMJzogMSBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgXCIgKyBhcmd1bWVudHMubGVuZ3RoICsgXCIgcHJlc2VudC5cIik7XG4gIH1cbiAgY29uc3QgYXJncyA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGggJiYgaSA8IDI7ICsraSkge1xuICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gIH1cbiAgYXJnc1swXSA9IGNvbnZlcnNpb25zW1wiVVNWU3RyaW5nXCJdKGFyZ3NbMF0pO1xuICBpZiAoYXJnc1sxXSAhPT0gdW5kZWZpbmVkKSB7XG4gIGFyZ3NbMV0gPSBjb252ZXJzaW9uc1tcIlVTVlN0cmluZ1wiXShhcmdzWzFdKTtcbiAgfVxuXG4gIG1vZHVsZS5leHBvcnRzLnNldHVwKHRoaXMsIGFyZ3MpO1xufVxuXG5VUkwucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgaWYgKCF0aGlzIHx8ICFtb2R1bGUuZXhwb3J0cy5pcyh0aGlzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbGxlZ2FsIGludm9jYXRpb25cIik7XG4gIH1cbiAgY29uc3QgYXJncyA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGggJiYgaSA8IDA7ICsraSkge1xuICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gIH1cbiAgcmV0dXJuIHRoaXNbaW1wbF0udG9KU09OLmFwcGx5KHRoaXNbaW1wbF0sIGFyZ3MpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShVUkwucHJvdG90eXBlLCBcImhyZWZcIiwge1xuICBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXNbaW1wbF0uaHJlZjtcbiAgfSxcbiAgc2V0KFYpIHtcbiAgICBWID0gY29udmVyc2lvbnNbXCJVU1ZTdHJpbmdcIl0oVik7XG4gICAgdGhpc1tpbXBsXS5ocmVmID0gVjtcbiAgfSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgY29uZmlndXJhYmxlOiB0cnVlXG59KTtcblxuVVJMLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzIHx8ICFtb2R1bGUuZXhwb3J0cy5pcyh0aGlzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbGxlZ2FsIGludm9jYXRpb25cIik7XG4gIH1cbiAgcmV0dXJuIHRoaXMuaHJlZjtcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShVUkwucHJvdG90eXBlLCBcIm9yaWdpblwiLCB7XG4gIGdldCgpIHtcbiAgICByZXR1cm4gdGhpc1tpbXBsXS5vcmlnaW47XG4gIH0sXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZVxufSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShVUkwucHJvdG90eXBlLCBcInByb3RvY29sXCIsIHtcbiAgZ2V0KCkge1xuICAgIHJldHVybiB0aGlzW2ltcGxdLnByb3RvY29sO1xuICB9LFxuICBzZXQoVikge1xuICAgIFYgPSBjb252ZXJzaW9uc1tcIlVTVlN0cmluZ1wiXShWKTtcbiAgICB0aGlzW2ltcGxdLnByb3RvY29sID0gVjtcbiAgfSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgY29uZmlndXJhYmxlOiB0cnVlXG59KTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFVSTC5wcm90b3R5cGUsIFwidXNlcm5hbWVcIiwge1xuICBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXNbaW1wbF0udXNlcm5hbWU7XG4gIH0sXG4gIHNldChWKSB7XG4gICAgViA9IGNvbnZlcnNpb25zW1wiVVNWU3RyaW5nXCJdKFYpO1xuICAgIHRoaXNbaW1wbF0udXNlcm5hbWUgPSBWO1xuICB9LFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBjb25maWd1cmFibGU6IHRydWVcbn0pO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoVVJMLnByb3RvdHlwZSwgXCJwYXNzd29yZFwiLCB7XG4gIGdldCgpIHtcbiAgICByZXR1cm4gdGhpc1tpbXBsXS5wYXNzd29yZDtcbiAgfSxcbiAgc2V0KFYpIHtcbiAgICBWID0gY29udmVyc2lvbnNbXCJVU1ZTdHJpbmdcIl0oVik7XG4gICAgdGhpc1tpbXBsXS5wYXNzd29yZCA9IFY7XG4gIH0sXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZVxufSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShVUkwucHJvdG90eXBlLCBcImhvc3RcIiwge1xuICBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXNbaW1wbF0uaG9zdDtcbiAgfSxcbiAgc2V0KFYpIHtcbiAgICBWID0gY29udmVyc2lvbnNbXCJVU1ZTdHJpbmdcIl0oVik7XG4gICAgdGhpc1tpbXBsXS5ob3N0ID0gVjtcbiAgfSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgY29uZmlndXJhYmxlOiB0cnVlXG59KTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFVSTC5wcm90b3R5cGUsIFwiaG9zdG5hbWVcIiwge1xuICBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXNbaW1wbF0uaG9zdG5hbWU7XG4gIH0sXG4gIHNldChWKSB7XG4gICAgViA9IGNvbnZlcnNpb25zW1wiVVNWU3RyaW5nXCJdKFYpO1xuICAgIHRoaXNbaW1wbF0uaG9zdG5hbWUgPSBWO1xuICB9LFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBjb25maWd1cmFibGU6IHRydWVcbn0pO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoVVJMLnByb3RvdHlwZSwgXCJwb3J0XCIsIHtcbiAgZ2V0KCkge1xuICAgIHJldHVybiB0aGlzW2ltcGxdLnBvcnQ7XG4gIH0sXG4gIHNldChWKSB7XG4gICAgViA9IGNvbnZlcnNpb25zW1wiVVNWU3RyaW5nXCJdKFYpO1xuICAgIHRoaXNbaW1wbF0ucG9ydCA9IFY7XG4gIH0sXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZVxufSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShVUkwucHJvdG90eXBlLCBcInBhdGhuYW1lXCIsIHtcbiAgZ2V0KCkge1xuICAgIHJldHVybiB0aGlzW2ltcGxdLnBhdGhuYW1lO1xuICB9LFxuICBzZXQoVikge1xuICAgIFYgPSBjb252ZXJzaW9uc1tcIlVTVlN0cmluZ1wiXShWKTtcbiAgICB0aGlzW2ltcGxdLnBhdGhuYW1lID0gVjtcbiAgfSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgY29uZmlndXJhYmxlOiB0cnVlXG59KTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFVSTC5wcm90b3R5cGUsIFwic2VhcmNoXCIsIHtcbiAgZ2V0KCkge1xuICAgIHJldHVybiB0aGlzW2ltcGxdLnNlYXJjaDtcbiAgfSxcbiAgc2V0KFYpIHtcbiAgICBWID0gY29udmVyc2lvbnNbXCJVU1ZTdHJpbmdcIl0oVik7XG4gICAgdGhpc1tpbXBsXS5zZWFyY2ggPSBWO1xuICB9LFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBjb25maWd1cmFibGU6IHRydWVcbn0pO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoVVJMLnByb3RvdHlwZSwgXCJoYXNoXCIsIHtcbiAgZ2V0KCkge1xuICAgIHJldHVybiB0aGlzW2ltcGxdLmhhc2g7XG4gIH0sXG4gIHNldChWKSB7XG4gICAgViA9IGNvbnZlcnNpb25zW1wiVVNWU3RyaW5nXCJdKFYpO1xuICAgIHRoaXNbaW1wbF0uaGFzaCA9IFY7XG4gIH0sXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZVxufSk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGlzKG9iaikge1xuICAgIHJldHVybiAhIW9iaiAmJiBvYmpbaW1wbF0gaW5zdGFuY2VvZiBJbXBsLmltcGxlbWVudGF0aW9uO1xuICB9LFxuICBjcmVhdGUoY29uc3RydWN0b3JBcmdzLCBwcml2YXRlRGF0YSkge1xuICAgIGxldCBvYmogPSBPYmplY3QuY3JlYXRlKFVSTC5wcm90b3R5cGUpO1xuICAgIHRoaXMuc2V0dXAob2JqLCBjb25zdHJ1Y3RvckFyZ3MsIHByaXZhdGVEYXRhKTtcbiAgICByZXR1cm4gb2JqO1xuICB9LFxuICBzZXR1cChvYmosIGNvbnN0cnVjdG9yQXJncywgcHJpdmF0ZURhdGEpIHtcbiAgICBpZiAoIXByaXZhdGVEYXRhKSBwcml2YXRlRGF0YSA9IHt9O1xuICAgIHByaXZhdGVEYXRhLndyYXBwZXIgPSBvYmo7XG5cbiAgICBvYmpbaW1wbF0gPSBuZXcgSW1wbC5pbXBsZW1lbnRhdGlvbihjb25zdHJ1Y3RvckFyZ3MsIHByaXZhdGVEYXRhKTtcbiAgICBvYmpbaW1wbF1bdXRpbHMud3JhcHBlclN5bWJvbF0gPSBvYmo7XG4gIH0sXG4gIGludGVyZmFjZTogVVJMLFxuICBleHBvc2U6IHtcbiAgICBXaW5kb3c6IHsgVVJMOiBVUkwgfSxcbiAgICBXb3JrZXI6IHsgVVJMOiBVUkwgfVxuICB9XG59O1xuXG4iLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5VUkwgPSByZXF1aXJlKFwiLi9VUkxcIikuaW50ZXJmYWNlO1xuZXhwb3J0cy5zZXJpYWxpemVVUkwgPSByZXF1aXJlKFwiLi91cmwtc3RhdGUtbWFjaGluZVwiKS5zZXJpYWxpemVVUkw7XG5leHBvcnRzLnNlcmlhbGl6ZVVSTE9yaWdpbiA9IHJlcXVpcmUoXCIuL3VybC1zdGF0ZS1tYWNoaW5lXCIpLnNlcmlhbGl6ZVVSTE9yaWdpbjtcbmV4cG9ydHMuYmFzaWNVUkxQYXJzZSA9IHJlcXVpcmUoXCIuL3VybC1zdGF0ZS1tYWNoaW5lXCIpLmJhc2ljVVJMUGFyc2U7XG5leHBvcnRzLnNldFRoZVVzZXJuYW1lID0gcmVxdWlyZShcIi4vdXJsLXN0YXRlLW1hY2hpbmVcIikuc2V0VGhlVXNlcm5hbWU7XG5leHBvcnRzLnNldFRoZVBhc3N3b3JkID0gcmVxdWlyZShcIi4vdXJsLXN0YXRlLW1hY2hpbmVcIikuc2V0VGhlUGFzc3dvcmQ7XG5leHBvcnRzLnNlcmlhbGl6ZUhvc3QgPSByZXF1aXJlKFwiLi91cmwtc3RhdGUtbWFjaGluZVwiKS5zZXJpYWxpemVIb3N0O1xuZXhwb3J0cy5zZXJpYWxpemVJbnRlZ2VyID0gcmVxdWlyZShcIi4vdXJsLXN0YXRlLW1hY2hpbmVcIikuc2VyaWFsaXplSW50ZWdlcjtcbmV4cG9ydHMucGFyc2VVUkwgPSByZXF1aXJlKFwiLi91cmwtc3RhdGUtbWFjaGluZVwiKS5wYXJzZVVSTDtcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5jb25zdCBwdW55Y29kZSA9IHJlcXVpcmUoXCJwdW55Y29kZVwiKTtcclxuY29uc3QgdHI0NiA9IHJlcXVpcmUoXCJ0cjQ2XCIpO1xyXG5cclxuY29uc3Qgc3BlY2lhbFNjaGVtZXMgPSB7XHJcbiAgZnRwOiAyMSxcclxuICBmaWxlOiBudWxsLFxyXG4gIGdvcGhlcjogNzAsXHJcbiAgaHR0cDogODAsXHJcbiAgaHR0cHM6IDQ0MyxcclxuICB3czogODAsXHJcbiAgd3NzOiA0NDNcclxufTtcclxuXHJcbmNvbnN0IGZhaWx1cmUgPSBTeW1ib2woXCJmYWlsdXJlXCIpO1xyXG5cclxuZnVuY3Rpb24gY291bnRTeW1ib2xzKHN0cikge1xyXG4gIHJldHVybiBwdW55Y29kZS51Y3MyLmRlY29kZShzdHIpLmxlbmd0aDtcclxufVxyXG5cclxuZnVuY3Rpb24gYXQoaW5wdXQsIGlkeCkge1xyXG4gIGNvbnN0IGMgPSBpbnB1dFtpZHhdO1xyXG4gIHJldHVybiBpc05hTihjKSA/IHVuZGVmaW5lZCA6IFN0cmluZy5mcm9tQ29kZVBvaW50KGMpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0FTQ0lJRGlnaXQoYykge1xyXG4gIHJldHVybiBjID49IDB4MzAgJiYgYyA8PSAweDM5O1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0FTQ0lJQWxwaGEoYykge1xyXG4gIHJldHVybiAoYyA+PSAweDQxICYmIGMgPD0gMHg1QSkgfHwgKGMgPj0gMHg2MSAmJiBjIDw9IDB4N0EpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0FTQ0lJQWxwaGFudW1lcmljKGMpIHtcclxuICByZXR1cm4gaXNBU0NJSUFscGhhKGMpIHx8IGlzQVNDSUlEaWdpdChjKTtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNBU0NJSUhleChjKSB7XHJcbiAgcmV0dXJuIGlzQVNDSUlEaWdpdChjKSB8fCAoYyA+PSAweDQxICYmIGMgPD0gMHg0NikgfHwgKGMgPj0gMHg2MSAmJiBjIDw9IDB4NjYpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc1NpbmdsZURvdChidWZmZXIpIHtcclxuICByZXR1cm4gYnVmZmVyID09PSBcIi5cIiB8fCBidWZmZXIudG9Mb3dlckNhc2UoKSA9PT0gXCIlMmVcIjtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNEb3VibGVEb3QoYnVmZmVyKSB7XHJcbiAgYnVmZmVyID0gYnVmZmVyLnRvTG93ZXJDYXNlKCk7XHJcbiAgcmV0dXJuIGJ1ZmZlciA9PT0gXCIuLlwiIHx8IGJ1ZmZlciA9PT0gXCIlMmUuXCIgfHwgYnVmZmVyID09PSBcIi4lMmVcIiB8fCBidWZmZXIgPT09IFwiJTJlJTJlXCI7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzV2luZG93c0RyaXZlTGV0dGVyQ29kZVBvaW50cyhjcDEsIGNwMikge1xyXG4gIHJldHVybiBpc0FTQ0lJQWxwaGEoY3AxKSAmJiAoY3AyID09PSA1OCB8fCBjcDIgPT09IDEyNCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzV2luZG93c0RyaXZlTGV0dGVyU3RyaW5nKHN0cmluZykge1xyXG4gIHJldHVybiBzdHJpbmcubGVuZ3RoID09PSAyICYmIGlzQVNDSUlBbHBoYShzdHJpbmcuY29kZVBvaW50QXQoMCkpICYmIChzdHJpbmdbMV0gPT09IFwiOlwiIHx8IHN0cmluZ1sxXSA9PT0gXCJ8XCIpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc05vcm1hbGl6ZWRXaW5kb3dzRHJpdmVMZXR0ZXJTdHJpbmcoc3RyaW5nKSB7XHJcbiAgcmV0dXJuIHN0cmluZy5sZW5ndGggPT09IDIgJiYgaXNBU0NJSUFscGhhKHN0cmluZy5jb2RlUG9pbnRBdCgwKSkgJiYgc3RyaW5nWzFdID09PSBcIjpcIjtcclxufVxyXG5cclxuZnVuY3Rpb24gY29udGFpbnNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KHN0cmluZykge1xyXG4gIHJldHVybiBzdHJpbmcuc2VhcmNoKC9cXHUwMDAwfFxcdTAwMDl8XFx1MDAwQXxcXHUwMDBEfFxcdTAwMjB8I3wlfFxcL3w6fFxcP3xAfFxcW3xcXFxcfFxcXS8pICE9PSAtMTtcclxufVxyXG5cclxuZnVuY3Rpb24gY29udGFpbnNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50RXhjbHVkaW5nUGVyY2VudChzdHJpbmcpIHtcclxuICByZXR1cm4gc3RyaW5nLnNlYXJjaCgvXFx1MDAwMHxcXHUwMDA5fFxcdTAwMEF8XFx1MDAwRHxcXHUwMDIwfCN8XFwvfDp8XFw/fEB8XFxbfFxcXFx8XFxdLykgIT09IC0xO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc1NwZWNpYWxTY2hlbWUoc2NoZW1lKSB7XHJcbiAgcmV0dXJuIHNwZWNpYWxTY2hlbWVzW3NjaGVtZV0gIT09IHVuZGVmaW5lZDtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNTcGVjaWFsKHVybCkge1xyXG4gIHJldHVybiBpc1NwZWNpYWxTY2hlbWUodXJsLnNjaGVtZSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRlZmF1bHRQb3J0KHNjaGVtZSkge1xyXG4gIHJldHVybiBzcGVjaWFsU2NoZW1lc1tzY2hlbWVdO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwZXJjZW50RW5jb2RlKGMpIHtcclxuICBsZXQgaGV4ID0gYy50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcclxuICBpZiAoaGV4Lmxlbmd0aCA9PT0gMSkge1xyXG4gICAgaGV4ID0gXCIwXCIgKyBoZXg7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gXCIlXCIgKyBoZXg7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHV0ZjhQZXJjZW50RW5jb2RlKGMpIHtcclxuICBjb25zdCBidWYgPSBuZXcgQnVmZmVyKGMpO1xyXG5cclxuICBsZXQgc3RyID0gXCJcIjtcclxuXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBidWYubGVuZ3RoOyArK2kpIHtcclxuICAgIHN0ciArPSBwZXJjZW50RW5jb2RlKGJ1ZltpXSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gc3RyO1xyXG59XHJcblxyXG5mdW5jdGlvbiB1dGY4UGVyY2VudERlY29kZShzdHIpIHtcclxuICBjb25zdCBpbnB1dCA9IG5ldyBCdWZmZXIoc3RyKTtcclxuICBjb25zdCBvdXRwdXQgPSBbXTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICBpZiAoaW5wdXRbaV0gIT09IDM3KSB7XHJcbiAgICAgIG91dHB1dC5wdXNoKGlucHV0W2ldKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wdXRbaV0gPT09IDM3ICYmIGlzQVNDSUlIZXgoaW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4KGlucHV0W2kgKyAyXSkpIHtcclxuICAgICAgb3V0cHV0LnB1c2gocGFyc2VJbnQoaW5wdXQuc2xpY2UoaSArIDEsIGkgKyAzKS50b1N0cmluZygpLCAxNikpO1xyXG4gICAgICBpICs9IDI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvdXRwdXQucHVzaChpbnB1dFtpXSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBuZXcgQnVmZmVyKG91dHB1dCkudG9TdHJpbmcoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNDMENvbnRyb2xQZXJjZW50RW5jb2RlKGMpIHtcclxuICByZXR1cm4gYyA8PSAweDFGIHx8IGMgPiAweDdFO1xyXG59XHJcblxyXG5jb25zdCBleHRyYVBhdGhQZXJjZW50RW5jb2RlU2V0ID0gbmV3IFNldChbMzIsIDM0LCAzNSwgNjAsIDYyLCA2MywgOTYsIDEyMywgMTI1XSk7XHJcbmZ1bmN0aW9uIGlzUGF0aFBlcmNlbnRFbmNvZGUoYykge1xyXG4gIHJldHVybiBpc0MwQ29udHJvbFBlcmNlbnRFbmNvZGUoYykgfHwgZXh0cmFQYXRoUGVyY2VudEVuY29kZVNldC5oYXMoYyk7XHJcbn1cclxuXHJcbmNvbnN0IGV4dHJhVXNlcmluZm9QZXJjZW50RW5jb2RlU2V0ID1cclxuICBuZXcgU2V0KFs0NywgNTgsIDU5LCA2MSwgNjQsIDkxLCA5MiwgOTMsIDk0LCAxMjRdKTtcclxuZnVuY3Rpb24gaXNVc2VyaW5mb1BlcmNlbnRFbmNvZGUoYykge1xyXG4gIHJldHVybiBpc1BhdGhQZXJjZW50RW5jb2RlKGMpIHx8IGV4dHJhVXNlcmluZm9QZXJjZW50RW5jb2RlU2V0LmhhcyhjKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcGVyY2VudEVuY29kZUNoYXIoYywgZW5jb2RlU2V0UHJlZGljYXRlKSB7XHJcbiAgY29uc3QgY1N0ciA9IFN0cmluZy5mcm9tQ29kZVBvaW50KGMpO1xyXG5cclxuICBpZiAoZW5jb2RlU2V0UHJlZGljYXRlKGMpKSB7XHJcbiAgICByZXR1cm4gdXRmOFBlcmNlbnRFbmNvZGUoY1N0cik7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gY1N0cjtcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VJUHY0TnVtYmVyKGlucHV0KSB7XHJcbiAgbGV0IFIgPSAxMDtcclxuXHJcbiAgaWYgKGlucHV0Lmxlbmd0aCA+PSAyICYmIGlucHV0LmNoYXJBdCgwKSA9PT0gXCIwXCIgJiYgaW5wdXQuY2hhckF0KDEpLnRvTG93ZXJDYXNlKCkgPT09IFwieFwiKSB7XHJcbiAgICBpbnB1dCA9IGlucHV0LnN1YnN0cmluZygyKTtcclxuICAgIFIgPSAxNjtcclxuICB9IGVsc2UgaWYgKGlucHV0Lmxlbmd0aCA+PSAyICYmIGlucHV0LmNoYXJBdCgwKSA9PT0gXCIwXCIpIHtcclxuICAgIGlucHV0ID0gaW5wdXQuc3Vic3RyaW5nKDEpO1xyXG4gICAgUiA9IDg7XHJcbiAgfVxyXG5cclxuICBpZiAoaW5wdXQgPT09IFwiXCIpIHtcclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgcmVnZXggPSBSID09PSAxMCA/IC9bXjAtOV0vIDogKFIgPT09IDE2ID8gL1teMC05QS1GYS1mXS8gOiAvW14wLTddLyk7XHJcbiAgaWYgKHJlZ2V4LnRlc3QoaW5wdXQpKSB7XHJcbiAgICByZXR1cm4gZmFpbHVyZTtcclxuICB9XHJcblxyXG4gIHJldHVybiBwYXJzZUludChpbnB1dCwgUik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlSVB2NChpbnB1dCkge1xyXG4gIGNvbnN0IHBhcnRzID0gaW5wdXQuc3BsaXQoXCIuXCIpO1xyXG4gIGlmIChwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSA9PT0gXCJcIikge1xyXG4gICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgcGFydHMucG9wKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpZiAocGFydHMubGVuZ3RoID4gNCkge1xyXG4gICAgcmV0dXJuIGlucHV0O1xyXG4gIH1cclxuXHJcbiAgY29uc3QgbnVtYmVycyA9IFtdO1xyXG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xyXG4gICAgaWYgKHBhcnQgPT09IFwiXCIpIHtcclxuICAgICAgcmV0dXJuIGlucHV0O1xyXG4gICAgfVxyXG4gICAgY29uc3QgbiA9IHBhcnNlSVB2NE51bWJlcihwYXJ0KTtcclxuICAgIGlmIChuID09PSBmYWlsdXJlKSB7XHJcbiAgICAgIHJldHVybiBpbnB1dDtcclxuICAgIH1cclxuXHJcbiAgICBudW1iZXJzLnB1c2gobik7XHJcbiAgfVxyXG5cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IG51bWJlcnMubGVuZ3RoIC0gMTsgKytpKSB7XHJcbiAgICBpZiAobnVtYmVyc1tpXSA+IDI1NSkge1xyXG4gICAgICByZXR1cm4gZmFpbHVyZTtcclxuICAgIH1cclxuICB9XHJcbiAgaWYgKG51bWJlcnNbbnVtYmVycy5sZW5ndGggLSAxXSA+PSBNYXRoLnBvdygyNTYsIDUgLSBudW1iZXJzLmxlbmd0aCkpIHtcclxuICAgIHJldHVybiBmYWlsdXJlO1xyXG4gIH1cclxuXHJcbiAgbGV0IGlwdjQgPSBudW1iZXJzLnBvcCgpO1xyXG4gIGxldCBjb3VudGVyID0gMDtcclxuXHJcbiAgZm9yIChjb25zdCBuIG9mIG51bWJlcnMpIHtcclxuICAgIGlwdjQgKz0gbiAqIE1hdGgucG93KDI1NiwgMyAtIGNvdW50ZXIpO1xyXG4gICAgKytjb3VudGVyO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGlwdjQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNlcmlhbGl6ZUlQdjQoYWRkcmVzcykge1xyXG4gIGxldCBvdXRwdXQgPSBcIlwiO1xyXG4gIGxldCBuID0gYWRkcmVzcztcclxuXHJcbiAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNDsgKytpKSB7XHJcbiAgICBvdXRwdXQgPSBTdHJpbmcobiAlIDI1NikgKyBvdXRwdXQ7XHJcbiAgICBpZiAoaSAhPT0gNCkge1xyXG4gICAgICBvdXRwdXQgPSBcIi5cIiArIG91dHB1dDtcclxuICAgIH1cclxuICAgIG4gPSBNYXRoLmZsb29yKG4gLyAyNTYpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG91dHB1dDtcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VJUHY2KGlucHV0KSB7XHJcbiAgY29uc3QgYWRkcmVzcyA9IFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwXTtcclxuICBsZXQgcGllY2VJbmRleCA9IDA7XHJcbiAgbGV0IGNvbXByZXNzID0gbnVsbDtcclxuICBsZXQgcG9pbnRlciA9IDA7XHJcblxyXG4gIGlucHV0ID0gcHVueWNvZGUudWNzMi5kZWNvZGUoaW5wdXQpO1xyXG5cclxuICBpZiAoaW5wdXRbcG9pbnRlcl0gPT09IDU4KSB7XHJcbiAgICBpZiAoaW5wdXRbcG9pbnRlciArIDFdICE9PSA1OCkge1xyXG4gICAgICByZXR1cm4gZmFpbHVyZTtcclxuICAgIH1cclxuXHJcbiAgICBwb2ludGVyICs9IDI7XHJcbiAgICArK3BpZWNlSW5kZXg7XHJcbiAgICBjb21wcmVzcyA9IHBpZWNlSW5kZXg7XHJcbiAgfVxyXG5cclxuICB3aGlsZSAocG9pbnRlciA8IGlucHV0Lmxlbmd0aCkge1xyXG4gICAgaWYgKHBpZWNlSW5kZXggPT09IDgpIHtcclxuICAgICAgcmV0dXJuIGZhaWx1cmU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGlucHV0W3BvaW50ZXJdID09PSA1OCkge1xyXG4gICAgICBpZiAoY29tcHJlc3MgIT09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gZmFpbHVyZTtcclxuICAgICAgfVxyXG4gICAgICArK3BvaW50ZXI7XHJcbiAgICAgICsrcGllY2VJbmRleDtcclxuICAgICAgY29tcHJlc3MgPSBwaWVjZUluZGV4O1xyXG4gICAgICBjb250aW51ZTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgdmFsdWUgPSAwO1xyXG4gICAgbGV0IGxlbmd0aCA9IDA7XHJcblxyXG4gICAgd2hpbGUgKGxlbmd0aCA8IDQgJiYgaXNBU0NJSUhleChpbnB1dFtwb2ludGVyXSkpIHtcclxuICAgICAgdmFsdWUgPSB2YWx1ZSAqIDB4MTAgKyBwYXJzZUludChhdChpbnB1dCwgcG9pbnRlciksIDE2KTtcclxuICAgICAgKytwb2ludGVyO1xyXG4gICAgICArK2xlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaW5wdXRbcG9pbnRlcl0gPT09IDQ2KSB7XHJcbiAgICAgIGlmIChsZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm4gZmFpbHVyZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcG9pbnRlciAtPSBsZW5ndGg7XHJcblxyXG4gICAgICBpZiAocGllY2VJbmRleCA+IDYpIHtcclxuICAgICAgICByZXR1cm4gZmFpbHVyZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IG51bWJlcnNTZWVuID0gMDtcclxuXHJcbiAgICAgIHdoaWxlIChpbnB1dFtwb2ludGVyXSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgbGV0IGlwdjRQaWVjZSA9IG51bGw7XHJcblxyXG4gICAgICAgIGlmIChudW1iZXJzU2VlbiA+IDApIHtcclxuICAgICAgICAgIGlmIChpbnB1dFtwb2ludGVyXSA9PT0gNDYgJiYgbnVtYmVyc1NlZW4gPCA0KSB7XHJcbiAgICAgICAgICAgICsrcG9pbnRlcjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWlsdXJlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoaW5wdXRbcG9pbnRlcl0pKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFpbHVyZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHdoaWxlIChpc0FTQ0lJRGlnaXQoaW5wdXRbcG9pbnRlcl0pKSB7XHJcbiAgICAgICAgICBjb25zdCBudW1iZXIgPSBwYXJzZUludChhdChpbnB1dCwgcG9pbnRlcikpO1xyXG4gICAgICAgICAgaWYgKGlwdjRQaWVjZSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpcHY0UGllY2UgPSBudW1iZXI7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGlwdjRQaWVjZSA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFpbHVyZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlwdjRQaWVjZSA9IGlwdjRQaWVjZSAqIDEwICsgbnVtYmVyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGlwdjRQaWVjZSA+IDI1NSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFpbHVyZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICsrcG9pbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFkZHJlc3NbcGllY2VJbmRleF0gPSBhZGRyZXNzW3BpZWNlSW5kZXhdICogMHgxMDAgKyBpcHY0UGllY2U7XHJcblxyXG4gICAgICAgICsrbnVtYmVyc1NlZW47XHJcblxyXG4gICAgICAgIGlmIChudW1iZXJzU2VlbiA9PT0gMiB8fCBudW1iZXJzU2VlbiA9PT0gNCkge1xyXG4gICAgICAgICAgKytwaWVjZUluZGV4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG51bWJlcnNTZWVuICE9PSA0KSB7XHJcbiAgICAgICAgcmV0dXJuIGZhaWx1cmU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfSBlbHNlIGlmIChpbnB1dFtwb2ludGVyXSA9PT0gNTgpIHtcclxuICAgICAgKytwb2ludGVyO1xyXG4gICAgICBpZiAoaW5wdXRbcG9pbnRlcl0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiBmYWlsdXJlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGlucHV0W3BvaW50ZXJdICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIGZhaWx1cmU7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkcmVzc1twaWVjZUluZGV4XSA9IHZhbHVlO1xyXG4gICAgKytwaWVjZUluZGV4O1xyXG4gIH1cclxuXHJcbiAgaWYgKGNvbXByZXNzICE9PSBudWxsKSB7XHJcbiAgICBsZXQgc3dhcHMgPSBwaWVjZUluZGV4IC0gY29tcHJlc3M7XHJcbiAgICBwaWVjZUluZGV4ID0gNztcclxuICAgIHdoaWxlIChwaWVjZUluZGV4ICE9PSAwICYmIHN3YXBzID4gMCkge1xyXG4gICAgICBjb25zdCB0ZW1wID0gYWRkcmVzc1tjb21wcmVzcyArIHN3YXBzIC0gMV07XHJcbiAgICAgIGFkZHJlc3NbY29tcHJlc3MgKyBzd2FwcyAtIDFdID0gYWRkcmVzc1twaWVjZUluZGV4XTtcclxuICAgICAgYWRkcmVzc1twaWVjZUluZGV4XSA9IHRlbXA7XHJcbiAgICAgIC0tcGllY2VJbmRleDtcclxuICAgICAgLS1zd2FwcztcclxuICAgIH1cclxuICB9IGVsc2UgaWYgKGNvbXByZXNzID09PSBudWxsICYmIHBpZWNlSW5kZXggIT09IDgpIHtcclxuICAgIHJldHVybiBmYWlsdXJlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGFkZHJlc3M7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNlcmlhbGl6ZUlQdjYoYWRkcmVzcykge1xyXG4gIGxldCBvdXRwdXQgPSBcIlwiO1xyXG4gIGNvbnN0IHNlcVJlc3VsdCA9IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGFkZHJlc3MpO1xyXG4gIGNvbnN0IGNvbXByZXNzID0gc2VxUmVzdWx0LmlkeDtcclxuICBsZXQgaWdub3JlMCA9IGZhbHNlO1xyXG5cclxuICBmb3IgKGxldCBwaWVjZUluZGV4ID0gMDsgcGllY2VJbmRleCA8PSA3OyArK3BpZWNlSW5kZXgpIHtcclxuICAgIGlmIChpZ25vcmUwICYmIGFkZHJlc3NbcGllY2VJbmRleF0gPT09IDApIHtcclxuICAgICAgY29udGludWU7XHJcbiAgICB9IGVsc2UgaWYgKGlnbm9yZTApIHtcclxuICAgICAgaWdub3JlMCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb21wcmVzcyA9PT0gcGllY2VJbmRleCkge1xyXG4gICAgICBjb25zdCBzZXBhcmF0b3IgPSBwaWVjZUluZGV4ID09PSAwID8gXCI6OlwiIDogXCI6XCI7XHJcbiAgICAgIG91dHB1dCArPSBzZXBhcmF0b3I7XHJcbiAgICAgIGlnbm9yZTAgPSB0cnVlO1xyXG4gICAgICBjb250aW51ZTtcclxuICAgIH1cclxuXHJcbiAgICBvdXRwdXQgKz0gYWRkcmVzc1twaWVjZUluZGV4XS50b1N0cmluZygxNik7XHJcblxyXG4gICAgaWYgKHBpZWNlSW5kZXggIT09IDcpIHtcclxuICAgICAgb3V0cHV0ICs9IFwiOlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG91dHB1dDtcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VIb3N0KGlucHV0LCBpc1NwZWNpYWxBcmcpIHtcclxuICBpZiAoaW5wdXRbMF0gPT09IFwiW1wiKSB7XHJcbiAgICBpZiAoaW5wdXRbaW5wdXQubGVuZ3RoIC0gMV0gIT09IFwiXVwiKSB7XHJcbiAgICAgIHJldHVybiBmYWlsdXJlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwYXJzZUlQdjYoaW5wdXQuc3Vic3RyaW5nKDEsIGlucHV0Lmxlbmd0aCAtIDEpKTtcclxuICB9XHJcblxyXG4gIGlmICghaXNTcGVjaWFsQXJnKSB7XHJcbiAgICByZXR1cm4gcGFyc2VPcGFxdWVIb3N0KGlucHV0KTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGRvbWFpbiA9IHV0ZjhQZXJjZW50RGVjb2RlKGlucHV0KTtcclxuICBjb25zdCBhc2NpaURvbWFpbiA9IHRyNDYudG9BU0NJSShkb21haW4sIGZhbHNlLCB0cjQ2LlBST0NFU1NJTkdfT1BUSU9OUy5OT05UUkFOU0lUSU9OQUwsIGZhbHNlKTtcclxuICBpZiAoYXNjaWlEb21haW4gPT09IG51bGwpIHtcclxuICAgIHJldHVybiBmYWlsdXJlO1xyXG4gIH1cclxuXHJcbiAgaWYgKGNvbnRhaW5zRm9yYmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbikpIHtcclxuICAgIHJldHVybiBmYWlsdXJlO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgaXB2NEhvc3QgPSBwYXJzZUlQdjQoYXNjaWlEb21haW4pO1xyXG4gIGlmICh0eXBlb2YgaXB2NEhvc3QgPT09IFwibnVtYmVyXCIgfHwgaXB2NEhvc3QgPT09IGZhaWx1cmUpIHtcclxuICAgIHJldHVybiBpcHY0SG9zdDtcclxuICB9XHJcblxyXG4gIHJldHVybiBhc2NpaURvbWFpbjtcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VPcGFxdWVIb3N0KGlucHV0KSB7XHJcbiAgaWYgKGNvbnRhaW5zRm9yYmlkZGVuSG9zdENvZGVQb2ludEV4Y2x1ZGluZ1BlcmNlbnQoaW5wdXQpKSB7XHJcbiAgICByZXR1cm4gZmFpbHVyZTtcclxuICB9XHJcblxyXG4gIGxldCBvdXRwdXQgPSBcIlwiO1xyXG4gIGNvbnN0IGRlY29kZWQgPSBwdW55Y29kZS51Y3MyLmRlY29kZShpbnB1dCk7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZWNvZGVkLmxlbmd0aDsgKytpKSB7XHJcbiAgICBvdXRwdXQgKz0gcGVyY2VudEVuY29kZUNoYXIoZGVjb2RlZFtpXSwgaXNDMENvbnRyb2xQZXJjZW50RW5jb2RlKTtcclxuICB9XHJcbiAgcmV0dXJuIG91dHB1dDtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoYXJyKSB7XHJcbiAgbGV0IG1heElkeCA9IG51bGw7XHJcbiAgbGV0IG1heExlbiA9IDE7IC8vIG9ubHkgZmluZCBlbGVtZW50cyA+IDFcclxuICBsZXQgY3VyclN0YXJ0ID0gbnVsbDtcclxuICBsZXQgY3VyckxlbiA9IDA7XHJcblxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgKytpKSB7XHJcbiAgICBpZiAoYXJyW2ldICE9PSAwKSB7XHJcbiAgICAgIGlmIChjdXJyTGVuID4gbWF4TGVuKSB7XHJcbiAgICAgICAgbWF4SWR4ID0gY3VyclN0YXJ0O1xyXG4gICAgICAgIG1heExlbiA9IGN1cnJMZW47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGN1cnJTdGFydCA9IG51bGw7XHJcbiAgICAgIGN1cnJMZW4gPSAwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGN1cnJTdGFydCA9PT0gbnVsbCkge1xyXG4gICAgICAgIGN1cnJTdGFydCA9IGk7XHJcbiAgICAgIH1cclxuICAgICAgKytjdXJyTGVuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gaWYgdHJhaWxpbmcgemVyb3NcclxuICBpZiAoY3VyckxlbiA+IG1heExlbikge1xyXG4gICAgbWF4SWR4ID0gY3VyclN0YXJ0O1xyXG4gICAgbWF4TGVuID0gY3VyckxlbjtcclxuICB9XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBpZHg6IG1heElkeCxcclxuICAgIGxlbjogbWF4TGVuXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gc2VyaWFsaXplSG9zdChob3N0KSB7XHJcbiAgaWYgKHR5cGVvZiBob3N0ID09PSBcIm51bWJlclwiKSB7XHJcbiAgICByZXR1cm4gc2VyaWFsaXplSVB2NChob3N0KTtcclxuICB9XHJcblxyXG4gIC8vIElQdjYgc2VyaWFsaXplclxyXG4gIGlmIChob3N0IGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgIHJldHVybiBcIltcIiArIHNlcmlhbGl6ZUlQdjYoaG9zdCkgKyBcIl1cIjtcclxuICB9XHJcblxyXG4gIHJldHVybiBob3N0O1xyXG59XHJcblxyXG5mdW5jdGlvbiB0cmltQ29udHJvbENoYXJzKHVybCkge1xyXG4gIHJldHVybiB1cmwucmVwbGFjZSgvXltcXHUwMDAwLVxcdTAwMUZcXHUwMDIwXSt8W1xcdTAwMDAtXFx1MDAxRlxcdTAwMjBdKyQvZywgXCJcIik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyaW1UYWJBbmROZXdsaW5lKHVybCkge1xyXG4gIHJldHVybiB1cmwucmVwbGFjZSgvXFx1MDAwOXxcXHUwMDBBfFxcdTAwMEQvZywgXCJcIik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3J0ZW5QYXRoKHVybCkge1xyXG4gIGNvbnN0IHBhdGggPSB1cmwucGF0aDtcclxuICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgaWYgKHVybC5zY2hlbWUgPT09IFwiZmlsZVwiICYmIHBhdGgubGVuZ3RoID09PSAxICYmIGlzTm9ybWFsaXplZFdpbmRvd3NEcml2ZUxldHRlcihwYXRoWzBdKSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgcGF0aC5wb3AoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gaW5jbHVkZXNDcmVkZW50aWFscyh1cmwpIHtcclxuICByZXR1cm4gdXJsLnVzZXJuYW1lICE9PSBcIlwiIHx8IHVybC5wYXNzd29yZCAhPT0gXCJcIjtcclxufVxyXG5cclxuZnVuY3Rpb24gY2Fubm90SGF2ZUFVc2VybmFtZVBhc3N3b3JkUG9ydCh1cmwpIHtcclxuICByZXR1cm4gdXJsLmhvc3QgPT09IG51bGwgfHwgdXJsLmhvc3QgPT09IFwiXCIgfHwgdXJsLmNhbm5vdEJlQUJhc2VVUkwgfHwgdXJsLnNjaGVtZSA9PT0gXCJmaWxlXCI7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzTm9ybWFsaXplZFdpbmRvd3NEcml2ZUxldHRlcihzdHJpbmcpIHtcclxuICByZXR1cm4gL15bQS1aYS16XTokLy50ZXN0KHN0cmluZyk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIFVSTFN0YXRlTWFjaGluZShpbnB1dCwgYmFzZSwgZW5jb2RpbmdPdmVycmlkZSwgdXJsLCBzdGF0ZU92ZXJyaWRlKSB7XHJcbiAgdGhpcy5wb2ludGVyID0gMDtcclxuICB0aGlzLmlucHV0ID0gaW5wdXQ7XHJcbiAgdGhpcy5iYXNlID0gYmFzZSB8fCBudWxsO1xyXG4gIHRoaXMuZW5jb2RpbmdPdmVycmlkZSA9IGVuY29kaW5nT3ZlcnJpZGUgfHwgXCJ1dGYtOFwiO1xyXG4gIHRoaXMuc3RhdGVPdmVycmlkZSA9IHN0YXRlT3ZlcnJpZGU7XHJcbiAgdGhpcy51cmwgPSB1cmw7XHJcbiAgdGhpcy5mYWlsdXJlID0gZmFsc2U7XHJcbiAgdGhpcy5wYXJzZUVycm9yID0gZmFsc2U7XHJcblxyXG4gIGlmICghdGhpcy51cmwpIHtcclxuICAgIHRoaXMudXJsID0ge1xyXG4gICAgICBzY2hlbWU6IFwiXCIsXHJcbiAgICAgIHVzZXJuYW1lOiBcIlwiLFxyXG4gICAgICBwYXNzd29yZDogXCJcIixcclxuICAgICAgaG9zdDogbnVsbCxcclxuICAgICAgcG9ydDogbnVsbCxcclxuICAgICAgcGF0aDogW10sXHJcbiAgICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgICBmcmFnbWVudDogbnVsbCxcclxuXHJcbiAgICAgIGNhbm5vdEJlQUJhc2VVUkw6IGZhbHNlXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHJlcyA9IHRyaW1Db250cm9sQ2hhcnModGhpcy5pbnB1dCk7XHJcbiAgICBpZiAocmVzICE9PSB0aGlzLmlucHV0KSB7XHJcbiAgICAgIHRoaXMucGFyc2VFcnJvciA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlucHV0ID0gcmVzO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgcmVzID0gdHJpbVRhYkFuZE5ld2xpbmUodGhpcy5pbnB1dCk7XHJcbiAgaWYgKHJlcyAhPT0gdGhpcy5pbnB1dCkge1xyXG4gICAgdGhpcy5wYXJzZUVycm9yID0gdHJ1ZTtcclxuICB9XHJcbiAgdGhpcy5pbnB1dCA9IHJlcztcclxuXHJcbiAgdGhpcy5zdGF0ZSA9IHN0YXRlT3ZlcnJpZGUgfHwgXCJzY2hlbWUgc3RhcnRcIjtcclxuXHJcbiAgdGhpcy5idWZmZXIgPSBcIlwiO1xyXG4gIHRoaXMuYXRGbGFnID0gZmFsc2U7XHJcbiAgdGhpcy5hcnJGbGFnID0gZmFsc2U7XHJcbiAgdGhpcy5wYXNzd29yZFRva2VuU2VlbkZsYWcgPSBmYWxzZTtcclxuXHJcbiAgdGhpcy5pbnB1dCA9IHB1bnljb2RlLnVjczIuZGVjb2RlKHRoaXMuaW5wdXQpO1xyXG5cclxuICBmb3IgKDsgdGhpcy5wb2ludGVyIDw9IHRoaXMuaW5wdXQubGVuZ3RoOyArK3RoaXMucG9pbnRlcikge1xyXG4gICAgY29uc3QgYyA9IHRoaXMuaW5wdXRbdGhpcy5wb2ludGVyXTtcclxuICAgIGNvbnN0IGNTdHIgPSBpc05hTihjKSA/IHVuZGVmaW5lZCA6IFN0cmluZy5mcm9tQ29kZVBvaW50KGMpO1xyXG5cclxuICAgIC8vIGV4ZWMgc3RhdGUgbWFjaGluZVxyXG4gICAgY29uc3QgcmV0ID0gdGhpc1tcInBhcnNlIFwiICsgdGhpcy5zdGF0ZV0oYywgY1N0cik7XHJcbiAgICBpZiAoIXJldCkge1xyXG4gICAgICBicmVhazsgLy8gdGVybWluYXRlIGFsZ29yaXRobVxyXG4gICAgfSBlbHNlIGlmIChyZXQgPT09IGZhaWx1cmUpIHtcclxuICAgICAgdGhpcy5mYWlsdXJlID0gdHJ1ZTtcclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5VUkxTdGF0ZU1hY2hpbmUucHJvdG90eXBlW1wicGFyc2Ugc2NoZW1lIHN0YXJ0XCJdID0gZnVuY3Rpb24gcGFyc2VTY2hlbWVTdGFydChjLCBjU3RyKSB7XHJcbiAgaWYgKGlzQVNDSUlBbHBoYShjKSkge1xyXG4gICAgdGhpcy5idWZmZXIgKz0gY1N0ci50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5zdGF0ZSA9IFwic2NoZW1lXCI7XHJcbiAgfSBlbHNlIGlmICghdGhpcy5zdGF0ZU92ZXJyaWRlKSB7XHJcbiAgICB0aGlzLnN0YXRlID0gXCJubyBzY2hlbWVcIjtcclxuICAgIC0tdGhpcy5wb2ludGVyO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0aGlzLnBhcnNlRXJyb3IgPSB0cnVlO1xyXG4gICAgcmV0dXJuIGZhaWx1cmU7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcblVSTFN0YXRlTWFjaGluZS5wcm90b3R5cGVbXCJwYXJzZSBzY2hlbWVcIl0gPSBmdW5jdGlvbiBwYXJzZVNjaGVtZShjLCBjU3RyKSB7XHJcbiAgaWYgKGlzQVNDSUlBbHBoYW51bWVyaWMoYykgfHwgYyA9PT0gNDMgfHwgYyA9PT0gNDUgfHwgYyA9PT0gNDYpIHtcclxuICAgIHRoaXMuYnVmZmVyICs9IGNTdHIudG9Mb3dlckNhc2UoKTtcclxuICB9IGVsc2UgaWYgKGMgPT09IDU4KSB7XHJcbiAgICBpZiAodGhpcy5zdGF0ZU92ZXJyaWRlKSB7XHJcbiAgICAgIGlmIChpc1NwZWNpYWwodGhpcy51cmwpICYmICFpc1NwZWNpYWxTY2hlbWUodGhpcy5idWZmZXIpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIWlzU3BlY2lhbCh0aGlzLnVybCkgJiYgaXNTcGVjaWFsU2NoZW1lKHRoaXMuYnVmZmVyKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKChpbmNsdWRlc0NyZWRlbnRpYWxzKHRoaXMudXJsKSB8fCB0aGlzLnVybC5wb3J0ICE9PSBudWxsKSAmJiB0aGlzLmJ1ZmZlciA9PT0gXCJmaWxlXCIpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnVybC5zY2hlbWUgPT09IFwiZmlsZVwiICYmICh0aGlzLnVybC5ob3N0ID09PSBcIlwiIHx8IHRoaXMudXJsLmhvc3QgPT09IG51bGwpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnVybC5zY2hlbWUgPSB0aGlzLmJ1ZmZlcjtcclxuICAgIHRoaXMuYnVmZmVyID0gXCJcIjtcclxuICAgIGlmICh0aGlzLnN0YXRlT3ZlcnJpZGUpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudXJsLnNjaGVtZSA9PT0gXCJmaWxlXCIpIHtcclxuICAgICAgaWYgKHRoaXMuaW5wdXRbdGhpcy5wb2ludGVyICsgMV0gIT09IDQ3IHx8IHRoaXMuaW5wdXRbdGhpcy5wb2ludGVyICsgMl0gIT09IDQ3KSB7XHJcbiAgICAgICAgdGhpcy5wYXJzZUVycm9yID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0YXRlID0gXCJmaWxlXCI7XHJcbiAgICB9IGVsc2UgaWYgKGlzU3BlY2lhbCh0aGlzLnVybCkgJiYgdGhpcy5iYXNlICE9PSBudWxsICYmIHRoaXMuYmFzZS5zY2hlbWUgPT09IHRoaXMudXJsLnNjaGVtZSkge1xyXG4gICAgICB0aGlzLnN0YXRlID0gXCJzcGVjaWFsIHJlbGF0aXZlIG9yIGF1dGhvcml0eVwiO1xyXG4gICAgfSBlbHNlIGlmIChpc1NwZWNpYWwodGhpcy51cmwpKSB7XHJcbiAgICAgIHRoaXMuc3RhdGUgPSBcInNwZWNpYWwgYXV0aG9yaXR5IHNsYXNoZXNcIjtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dFt0aGlzLnBvaW50ZXIgKyAxXSA9PT0gNDcpIHtcclxuICAgICAgdGhpcy5zdGF0ZSA9IFwicGF0aCBvciBhdXRob3JpdHlcIjtcclxuICAgICAgKyt0aGlzLnBvaW50ZXI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnVybC5jYW5ub3RCZUFCYXNlVVJMID0gdHJ1ZTtcclxuICAgICAgdGhpcy51cmwucGF0aC5wdXNoKFwiXCIpO1xyXG4gICAgICB0aGlzLnN0YXRlID0gXCJjYW5ub3QtYmUtYS1iYXNlLVVSTCBwYXRoXCI7XHJcbiAgICB9XHJcbiAgfSBlbHNlIGlmICghdGhpcy5zdGF0ZU92ZXJyaWRlKSB7XHJcbiAgICB0aGlzLmJ1ZmZlciA9IFwiXCI7XHJcbiAgICB0aGlzLnN0YXRlID0gXCJubyBzY2hlbWVcIjtcclxuICAgIHRoaXMucG9pbnRlciA9IC0xO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0aGlzLnBhcnNlRXJyb3IgPSB0cnVlO1xyXG4gICAgcmV0dXJuIGZhaWx1cmU7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcblVSTFN0YXRlTWFjaGluZS5wcm90b3R5cGVbXCJwYXJzZSBubyBzY2hlbWVcIl0gPSBmdW5jdGlvbiBwYXJzZU5vU2NoZW1lKGMpIHtcclxuICBpZiAodGhpcy5iYXNlID09PSBudWxsIHx8ICh0aGlzLmJhc2UuY2Fubm90QmVBQmFzZVVSTCAmJiBjICE9PSAzNSkpIHtcclxuICAgIHJldHVybiBmYWlsdXJlO1xyXG4gIH0gZWxzZSBpZiAodGhpcy5iYXNlLmNhbm5vdEJlQUJhc2VVUkwgJiYgYyA9PT0gMzUpIHtcclxuICAgIHRoaXMudXJsLnNjaGVtZSA9IHRoaXMuYmFzZS5zY2hlbWU7XHJcbiAgICB0aGlzLnVybC5wYXRoID0gdGhpcy5iYXNlLnBhdGguc2xpY2UoKTtcclxuICAgIHRoaXMudXJsLnF1ZXJ5ID0gdGhpcy5iYXNlLnF1ZXJ5O1xyXG4gICAgdGhpcy51cmwuZnJhZ21lbnQgPSBcIlwiO1xyXG4gICAgdGhpcy51cmwuY2Fubm90QmVBQmFzZVVSTCA9IHRydWU7XHJcbiAgICB0aGlzLnN0YXRlID0gXCJmcmFnbWVudFwiO1xyXG4gIH0gZWxzZSBpZiAodGhpcy5iYXNlLnNjaGVtZSA9PT0gXCJmaWxlXCIpIHtcclxuICAgIHRoaXMuc3RhdGUgPSBcImZpbGVcIjtcclxuICAgIC0tdGhpcy5wb2ludGVyO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0aGlzLnN0YXRlID0gXCJyZWxhdGl2ZVwiO1xyXG4gICAgLS10aGlzLnBvaW50ZXI7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcblVSTFN0YXRlTWFjaGluZS5wcm90b3R5cGVbXCJwYXJzZSBzcGVjaWFsIHJlbGF0aXZlIG9yIGF1dGhvcml0eVwiXSA9IGZ1bmN0aW9uIHBhcnNlU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHkoYykge1xyXG4gIGlmIChjID09PSA0NyAmJiB0aGlzLmlucHV0W3RoaXMucG9pbnRlciArIDFdID09PSA0Nykge1xyXG4gICAgdGhpcy5zdGF0ZSA9IFwic3BlY2lhbCBhdXRob3JpdHkgaWdub3JlIHNsYXNoZXNcIjtcclxuICAgICsrdGhpcy5wb2ludGVyO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0aGlzLnBhcnNlRXJyb3IgPSB0cnVlO1xyXG4gICAgdGhpcy5zdGF0ZSA9IFwicmVsYXRpdmVcIjtcclxuICAgIC0tdGhpcy5wb2ludGVyO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRydWU7XHJcbn07XHJcblxyXG5VUkxTdGF0ZU1hY2hpbmUucHJvdG90eXBlW1wicGFyc2UgcGF0aCBvciBhdXRob3JpdHlcIl0gPSBmdW5jdGlvbiBwYXJzZVBhdGhPckF1dGhvcml0eShjKSB7XHJcbiAgaWYgKGMgPT09IDQ3KSB7XHJcbiAgICB0aGlzLnN0YXRlID0gXCJhdXRob3JpdHlcIjtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy5zdGF0ZSA9IFwicGF0aFwiO1xyXG4gICAgLS10aGlzLnBvaW50ZXI7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcblVSTFN0YXRlTWFjaGluZS5wcm90b3R5cGVbXCJwYXJzZSByZWxhdGl2ZVwiXSA9IGZ1bmN0aW9uIHBhcnNlUmVsYXRpdmUoYykge1xyXG4gIHRoaXMudXJsLnNjaGVtZSA9IHRoaXMuYmFzZS5zY2hlbWU7XHJcbiAgaWYgKGlzTmFOKGMpKSB7XHJcbiAgICB0aGlzLnVybC51c2VybmFtZSA9IHRoaXMuYmFzZS51c2VybmFtZTtcclxuICAgIHRoaXMudXJsLnBhc3N3b3JkID0gdGhpcy5iYXNlLnBhc3N3b3JkO1xyXG4gICAgdGhpcy51cmwuaG9zdCA9IHRoaXMuYmFzZS5ob3N0O1xyXG4gICAgdGhpcy51cmwucG9ydCA9IHRoaXMuYmFzZS5wb3J0O1xyXG4gICAgdGhpcy51cmwucGF0aCA9IHRoaXMuYmFzZS5wYXRoLnNsaWNlKCk7XHJcbiAgICB0aGlzLnVybC5xdWVyeSA9IHRoaXMuYmFzZS5xdWVyeTtcclxuICB9IGVsc2UgaWYgKGMgPT09IDQ3KSB7XHJcbiAgICB0aGlzLnN0YXRlID0gXCJyZWxhdGl2ZSBzbGFzaFwiO1xyXG4gIH0gZWxzZSBpZiAoYyA9PT0gNjMpIHtcclxuICAgIHRoaXMudXJsLnVzZXJuYW1lID0gdGhpcy5iYXNlLnVzZXJuYW1lO1xyXG4gICAgdGhpcy51cmwucGFzc3dvcmQgPSB0aGlzLmJhc2UucGFzc3dvcmQ7XHJcbiAgICB0aGlzLnVybC5ob3N0ID0gdGhpcy5iYXNlLmhvc3Q7XHJcbiAgICB0aGlzLnVybC5wb3J0ID0gdGhpcy5iYXNlLnBvcnQ7XHJcbiAgICB0aGlzLnVybC5wYXRoID0gdGhpcy5iYXNlLnBhdGguc2xpY2UoKTtcclxuICAgIHRoaXMudXJsLnF1ZXJ5ID0gXCJcIjtcclxuICAgIHRoaXMuc3RhdGUgPSBcInF1ZXJ5XCI7XHJcbiAgfSBlbHNlIGlmIChjID09PSAzNSkge1xyXG4gICAgdGhpcy51cmwudXNlcm5hbWUgPSB0aGlzLmJhc2UudXNlcm5hbWU7XHJcbiAgICB0aGlzLnVybC5wYXNzd29yZCA9IHRoaXMuYmFzZS5wYXNzd29yZDtcclxuICAgIHRoaXMudXJsLmhvc3QgPSB0aGlzLmJhc2UuaG9zdDtcclxuICAgIHRoaXMudXJsLnBvcnQgPSB0aGlzLmJhc2UucG9ydDtcclxuICAgIHRoaXMudXJsLnBhdGggPSB0aGlzLmJhc2UucGF0aC5zbGljZSgpO1xyXG4gICAgdGhpcy51cmwucXVlcnkgPSB0aGlzLmJhc2UucXVlcnk7XHJcbiAgICB0aGlzLnVybC5mcmFnbWVudCA9IFwiXCI7XHJcbiAgICB0aGlzLnN0YXRlID0gXCJmcmFnbWVudFwiO1xyXG4gIH0gZWxzZSBpZiAoaXNTcGVjaWFsKHRoaXMudXJsKSAmJiBjID09PSA5Mikge1xyXG4gICAgdGhpcy5wYXJzZUVycm9yID0gdHJ1ZTtcclxuICAgIHRoaXMuc3RhdGUgPSBcInJlbGF0aXZlIHNsYXNoXCI7XHJcbiAgfSBlbHNlIHtcclxuICAgIHRoaXMudXJsLnVzZXJuYW1lID0gdGhpcy5iYXNlLnVzZXJuYW1lO1xyXG4gICAgdGhpcy51cmwucGFzc3dvcmQgPSB0aGlzLmJhc2UucGFzc3dvcmQ7XHJcbiAgICB0aGlzLnVybC5ob3N0ID0gdGhpcy5iYXNlLmhvc3Q7XHJcbiAgICB0aGlzLnVybC5wb3J0ID0gdGhpcy5iYXNlLnBvcnQ7XHJcbiAgICB0aGlzLnVybC5wYXRoID0gdGhpcy5iYXNlLnBhdGguc2xpY2UoMCwgdGhpcy5iYXNlLnBhdGgubGVuZ3RoIC0gMSk7XHJcblxyXG4gICAgdGhpcy5zdGF0ZSA9IFwicGF0aFwiO1xyXG4gICAgLS10aGlzLnBvaW50ZXI7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcblVSTFN0YXRlTWFjaGluZS5wcm90b3R5cGVbXCJwYXJzZSByZWxhdGl2ZSBzbGFzaFwiXSA9IGZ1bmN0aW9uIHBhcnNlUmVsYXRpdmVTbGFzaChjKSB7XHJcbiAgaWYgKGlzU3BlY2lhbCh0aGlzLnVybCkgJiYgKGMgPT09IDQ3IHx8IGMgPT09IDkyKSkge1xyXG4gICAgaWYgKGMgPT09IDkyKSB7XHJcbiAgICAgIHRoaXMucGFyc2VFcnJvciA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXRlID0gXCJzcGVjaWFsIGF1dGhvcml0eSBpZ25vcmUgc2xhc2hlc1wiO1xyXG4gIH0gZWxzZSBpZiAoYyA9PT0gNDcpIHtcclxuICAgIHRoaXMuc3RhdGUgPSBcImF1dGhvcml0eVwiO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0aGlzLnVybC51c2VybmFtZSA9IHRoaXMuYmFzZS51c2VybmFtZTtcclxuICAgIHRoaXMudXJsLnBhc3N3b3JkID0gdGhpcy5iYXNlLnBhc3N3b3JkO1xyXG4gICAgdGhpcy51cmwuaG9zdCA9IHRoaXMuYmFzZS5ob3N0O1xyXG4gICAgdGhpcy51cmwucG9ydCA9IHRoaXMuYmFzZS5wb3J0O1xyXG4gICAgdGhpcy5zdGF0ZSA9IFwicGF0aFwiO1xyXG4gICAgLS10aGlzLnBvaW50ZXI7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcblVSTFN0YXRlTWFjaGluZS5wcm90b3R5cGVbXCJwYXJzZSBzcGVjaWFsIGF1dGhvcml0eSBzbGFzaGVzXCJdID0gZnVuY3Rpb24gcGFyc2VTcGVjaWFsQXV0aG9yaXR5U2xhc2hlcyhjKSB7XHJcbiAgaWYgKGMgPT09IDQ3ICYmIHRoaXMuaW5wdXRbdGhpcy5wb2ludGVyICsgMV0gPT09IDQ3KSB7XHJcbiAgICB0aGlzLnN0YXRlID0gXCJzcGVjaWFsIGF1dGhvcml0eSBpZ25vcmUgc2xhc2hlc1wiO1xyXG4gICAgKyt0aGlzLnBvaW50ZXI7XHJcbiAgfSBlbHNlIHtcclxuICAgIHRoaXMucGFyc2VFcnJvciA9IHRydWU7XHJcbiAgICB0aGlzLnN0YXRlID0gXCJzcGVjaWFsIGF1dGhvcml0eSBpZ25vcmUgc2xhc2hlc1wiO1xyXG4gICAgLS10aGlzLnBvaW50ZXI7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcblVSTFN0YXRlTWFjaGluZS5wcm90b3R5cGVbXCJwYXJzZSBzcGVjaWFsIGF1dGhvcml0eSBpZ25vcmUgc2xhc2hlc1wiXSA9IGZ1bmN0aW9uIHBhcnNlU3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXMoYykge1xyXG4gIGlmIChjICE9PSA0NyAmJiBjICE9PSA5Mikge1xyXG4gICAgdGhpcy5zdGF0ZSA9IFwiYXV0aG9yaXR5XCI7XHJcbiAgICAtLXRoaXMucG9pbnRlcjtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy5wYXJzZUVycm9yID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHJldHVybiB0cnVlO1xyXG59O1xyXG5cclxuVVJMU3RhdGVNYWNoaW5lLnByb3RvdHlwZVtcInBhcnNlIGF1dGhvcml0eVwiXSA9IGZ1bmN0aW9uIHBhcnNlQXV0aG9yaXR5KGMsIGNTdHIpIHtcclxuICBpZiAoYyA9PT0gNjQpIHtcclxuICAgIHRoaXMucGFyc2VFcnJvciA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5hdEZsYWcpIHtcclxuICAgICAgdGhpcy5idWZmZXIgPSBcIiU0MFwiICsgdGhpcy5idWZmZXI7XHJcbiAgICB9XHJcbiAgICB0aGlzLmF0RmxhZyA9IHRydWU7XHJcblxyXG4gICAgLy8gY2FyZWZ1bCwgdGhpcyBpcyBiYXNlZCBvbiBidWZmZXIgYW5kIGhhcyBpdHMgb3duIHBvaW50ZXIgKHRoaXMucG9pbnRlciAhPSBwb2ludGVyKSBhbmQgaW5uZXIgY2hhcnNcclxuICAgIGNvbnN0IGxlbiA9IGNvdW50U3ltYm9scyh0aGlzLmJ1ZmZlcik7XHJcbiAgICBmb3IgKGxldCBwb2ludGVyID0gMDsgcG9pbnRlciA8IGxlbjsgKytwb2ludGVyKSB7XHJcbiAgICAgIGNvbnN0IGNvZGVQb2ludCA9IHRoaXMuYnVmZmVyLmNvZGVQb2ludEF0KHBvaW50ZXIpO1xyXG5cclxuICAgICAgaWYgKGNvZGVQb2ludCA9PT0gNTggJiYgIXRoaXMucGFzc3dvcmRUb2tlblNlZW5GbGFnKSB7XHJcbiAgICAgICAgdGhpcy5wYXNzd29yZFRva2VuU2VlbkZsYWcgPSB0cnVlO1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGVuY29kZWRDb2RlUG9pbnRzID0gcGVyY2VudEVuY29kZUNoYXIoY29kZVBvaW50LCBpc1VzZXJpbmZvUGVyY2VudEVuY29kZSk7XHJcbiAgICAgIGlmICh0aGlzLnBhc3N3b3JkVG9rZW5TZWVuRmxhZykge1xyXG4gICAgICAgIHRoaXMudXJsLnBhc3N3b3JkICs9IGVuY29kZWRDb2RlUG9pbnRzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudXJsLnVzZXJuYW1lICs9IGVuY29kZWRDb2RlUG9pbnRzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmJ1ZmZlciA9IFwiXCI7XHJcbiAgfSBlbHNlIGlmIChpc05hTihjKSB8fCBjID09PSA0NyB8fCBjID09PSA2MyB8fCBjID09PSAzNSB8fFxyXG4gICAgICAgICAgICAgKGlzU3BlY2lhbCh0aGlzLnVybCkgJiYgYyA9PT0gOTIpKSB7XHJcbiAgICBpZiAodGhpcy5hdEZsYWcgJiYgdGhpcy5idWZmZXIgPT09IFwiXCIpIHtcclxuICAgICAgdGhpcy5wYXJzZUVycm9yID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuIGZhaWx1cmU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBvaW50ZXIgLT0gY291bnRTeW1ib2xzKHRoaXMuYnVmZmVyKSArIDE7XHJcbiAgICB0aGlzLmJ1ZmZlciA9IFwiXCI7XHJcbiAgICB0aGlzLnN0YXRlID0gXCJob3N0XCI7XHJcbiAgfSBlbHNlIHtcclxuICAgIHRoaXMuYnVmZmVyICs9IGNTdHI7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcblVSTFN0YXRlTWFjaGluZS5wcm90b3R5cGVbXCJwYXJzZSBob3N0bmFtZVwiXSA9XHJcblVSTFN0YXRlTWFjaGluZS5wcm90b3R5cGVbXCJwYXJzZSBob3N0XCJdID0gZnVuY3Rpb24gcGFyc2VIb3N0TmFtZShjLCBjU3RyKSB7XHJcbiAgaWYgKHRoaXMuc3RhdGVPdmVycmlkZSAmJiB0aGlzLnVybC5zY2hlbWUgPT09IFwiZmlsZVwiKSB7XHJcbiAgICAtLXRoaXMucG9pbnRlcjtcclxuICAgIHRoaXMuc3RhdGUgPSBcImZpbGUgaG9zdFwiO1xyXG4gIH0gZWxzZSBpZiAoYyA9PT0gNTggJiYgIXRoaXMuYXJyRmxhZykge1xyXG4gICAgaWYgKHRoaXMuYnVmZmVyID09PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMucGFyc2VFcnJvciA9IHRydWU7XHJcbiAgICAgIHJldHVybiBmYWlsdXJlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGhvc3QgPSBwYXJzZUhvc3QodGhpcy5idWZmZXIsIGlzU3BlY2lhbCh0aGlzLnVybCkpO1xyXG4gICAgaWYgKGhvc3QgPT09IGZhaWx1cmUpIHtcclxuICAgICAgcmV0dXJuIGZhaWx1cmU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cmwuaG9zdCA9IGhvc3Q7XHJcbiAgICB0aGlzLmJ1ZmZlciA9IFwiXCI7XHJcbiAgICB0aGlzLnN0YXRlID0gXCJwb3J0XCI7XHJcbiAgICBpZiAodGhpcy5zdGF0ZU92ZXJyaWRlID09PSBcImhvc3RuYW1lXCIpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH0gZWxzZSBpZiAoaXNOYU4oYykgfHwgYyA9PT0gNDcgfHwgYyA9PT0gNjMgfHwgYyA9PT0gMzUgfHxcclxuICAgICAgICAgICAgIChpc1NwZWNpYWwodGhpcy51cmwpICYmIGMgPT09IDkyKSkge1xyXG4gICAgLS10aGlzLnBvaW50ZXI7XHJcbiAgICBpZiAoaXNTcGVjaWFsKHRoaXMudXJsKSAmJiB0aGlzLmJ1ZmZlciA9PT0gXCJcIikge1xyXG4gICAgICB0aGlzLnBhcnNlRXJyb3IgPSB0cnVlO1xyXG4gICAgICByZXR1cm4gZmFpbHVyZTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZU92ZXJyaWRlICYmIHRoaXMuYnVmZmVyID09PSBcIlwiICYmXHJcbiAgICAgICAgICAgICAgIChpbmNsdWRlc0NyZWRlbnRpYWxzKHRoaXMudXJsKSB8fCB0aGlzLnVybC5wb3J0ICE9PSBudWxsKSkge1xyXG4gICAgICB0aGlzLnBhcnNlRXJyb3IgPSB0cnVlO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaG9zdCA9IHBhcnNlSG9zdCh0aGlzLmJ1ZmZlciwgaXNTcGVjaWFsKHRoaXMudXJsKSk7XHJcbiAgICBpZiAoaG9zdCA9PT0gZmFpbHVyZSkge1xyXG4gICAgICByZXR1cm4gZmFpbHVyZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVybC5ob3N0ID0gaG9zdDtcclxuICAgIHRoaXMuYnVmZmVyID0gXCJcIjtcclxuICAgIHRoaXMuc3RhdGUgPSBcInBhdGggc3RhcnRcIjtcclxuICAgIGlmICh0aGlzLnN0YXRlT3ZlcnJpZGUpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBpZiAoYyA9PT0gOTEpIHtcclxuICAgICAgdGhpcy5hcnJGbGFnID0gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAoYyA9PT0gOTMpIHtcclxuICAgICAgdGhpcy5hcnJGbGFnID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmJ1ZmZlciArPSBjU3RyO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRydWU7XHJcbn07XHJcblxyXG5VUkxTdGF0ZU1hY2hpbmUucHJvdG90eXBlW1wicGFyc2UgcG9ydFwiXSA9IGZ1bmN0aW9uIHBhcnNlUG9ydChjLCBjU3RyKSB7XHJcbiAgaWYgKGlzQVNDSUlEaWdpdChjKSkge1xyXG4gICAgdGhpcy5idWZmZXIgKz0gY1N0cjtcclxuICB9IGVsc2UgaWYgKGlzTmFOKGMpIHx8IGMgPT09IDQ3IHx8IGMgPT09IDYzIHx8IGMgPT09IDM1IHx8XHJcbiAgICAgICAgICAgICAoaXNTcGVjaWFsKHRoaXMudXJsKSAmJiBjID09PSA5MikgfHxcclxuICAgICAgICAgICAgIHRoaXMuc3RhdGVPdmVycmlkZSkge1xyXG4gICAgaWYgKHRoaXMuYnVmZmVyICE9PSBcIlwiKSB7XHJcbiAgICAgIGNvbnN0IHBvcnQgPSBwYXJzZUludCh0aGlzLmJ1ZmZlcik7XHJcbiAgICAgIGlmIChwb3J0ID4gTWF0aC5wb3coMiwgMTYpIC0gMSkge1xyXG4gICAgICAgIHRoaXMucGFyc2VFcnJvciA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIGZhaWx1cmU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cmwucG9ydCA9IHBvcnQgPT09IGRlZmF1bHRQb3J0KHRoaXMudXJsLnNjaGVtZSkgPyBudWxsIDogcG9ydDtcclxuICAgICAgdGhpcy5idWZmZXIgPSBcIlwiO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc3RhdGVPdmVycmlkZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXRlID0gXCJwYXRoIHN0YXJ0XCI7XHJcbiAgICAtLXRoaXMucG9pbnRlcjtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy5wYXJzZUVycm9yID0gdHJ1ZTtcclxuICAgIHJldHVybiBmYWlsdXJlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRydWU7XHJcbn07XHJcblxyXG5jb25zdCBmaWxlT3RoZXJ3aXNlQ29kZVBvaW50cyA9IG5ldyBTZXQoWzQ3LCA5MiwgNjMsIDM1XSk7XHJcblxyXG5VUkxTdGF0ZU1hY2hpbmUucHJvdG90eXBlW1wicGFyc2UgZmlsZVwiXSA9IGZ1bmN0aW9uIHBhcnNlRmlsZShjKSB7XHJcbiAgdGhpcy51cmwuc2NoZW1lID0gXCJmaWxlXCI7XHJcblxyXG4gIGlmIChjID09PSA0NyB8fCBjID09PSA5Mikge1xyXG4gICAgaWYgKGMgPT09IDkyKSB7XHJcbiAgICAgIHRoaXMucGFyc2VFcnJvciA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXRlID0gXCJmaWxlIHNsYXNoXCI7XHJcbiAgfSBlbHNlIGlmICh0aGlzLmJhc2UgIT09IG51bGwgJiYgdGhpcy5iYXNlLnNjaGVtZSA9PT0gXCJmaWxlXCIpIHtcclxuICAgIGlmIChpc05hTihjKSkge1xyXG4gICAgICB0aGlzLnVybC5ob3N0ID0gdGhpcy5iYXNlLmhvc3Q7XHJcbiAgICAgIHRoaXMudXJsLnBhdGggPSB0aGlzLmJhc2UucGF0aC5zbGljZSgpO1xyXG4gICAgICB0aGlzLnVybC5xdWVyeSA9IHRoaXMuYmFzZS5xdWVyeTtcclxuICAgIH0gZWxzZSBpZiAoYyA9PT0gNjMpIHtcclxuICAgICAgdGhpcy51cmwuaG9zdCA9IHRoaXMuYmFzZS5ob3N0O1xyXG4gICAgICB0aGlzLnVybC5wYXRoID0gdGhpcy5iYXNlLnBhdGguc2xpY2UoKTtcclxuICAgICAgdGhpcy51cmwucXVlcnkgPSBcIlwiO1xyXG4gICAgICB0aGlzLnN0YXRlID0gXCJxdWVyeVwiO1xyXG4gICAgfSBlbHNlIGlmIChjID09PSAzNSkge1xyXG4gICAgICB0aGlzLnVybC5ob3N0ID0gdGhpcy5iYXNlLmhvc3Q7XHJcbiAgICAgIHRoaXMudXJsLnBhdGggPSB0aGlzLmJhc2UucGF0aC5zbGljZSgpO1xyXG4gICAgICB0aGlzLnVybC5xdWVyeSA9IHRoaXMuYmFzZS5xdWVyeTtcclxuICAgICAgdGhpcy51cmwuZnJhZ21lbnQgPSBcIlwiO1xyXG4gICAgICB0aGlzLnN0YXRlID0gXCJmcmFnbWVudFwiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuaW5wdXQubGVuZ3RoIC0gdGhpcy5wb2ludGVyIC0gMSA9PT0gMCB8fCAvLyByZW1haW5pbmcgY29uc2lzdHMgb2YgMCBjb2RlIHBvaW50c1xyXG4gICAgICAgICAgIWlzV2luZG93c0RyaXZlTGV0dGVyQ29kZVBvaW50cyhjLCB0aGlzLmlucHV0W3RoaXMucG9pbnRlciArIDFdKSB8fFxyXG4gICAgICAgICAgKHRoaXMuaW5wdXQubGVuZ3RoIC0gdGhpcy5wb2ludGVyIC0gMSA+PSAyICYmIC8vIHJlbWFpbmluZyBoYXMgYXQgbGVhc3QgMiBjb2RlIHBvaW50c1xyXG4gICAgICAgICAgICFmaWxlT3RoZXJ3aXNlQ29kZVBvaW50cy5oYXModGhpcy5pbnB1dFt0aGlzLnBvaW50ZXIgKyAyXSkpKSB7XHJcbiAgICAgICAgdGhpcy51cmwuaG9zdCA9IHRoaXMuYmFzZS5ob3N0O1xyXG4gICAgICAgIHRoaXMudXJsLnBhdGggPSB0aGlzLmJhc2UucGF0aC5zbGljZSgpO1xyXG4gICAgICAgIHNob3J0ZW5QYXRoKHRoaXMudXJsKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnN0YXRlID0gXCJwYXRoXCI7XHJcbiAgICAgIC0tdGhpcy5wb2ludGVyO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICB0aGlzLnN0YXRlID0gXCJwYXRoXCI7XHJcbiAgICAtLXRoaXMucG9pbnRlcjtcclxuICB9XHJcblxyXG4gIHJldHVybiB0cnVlO1xyXG59O1xyXG5cclxuVVJMU3RhdGVNYWNoaW5lLnByb3RvdHlwZVtcInBhcnNlIGZpbGUgc2xhc2hcIl0gPSBmdW5jdGlvbiBwYXJzZUZpbGVTbGFzaChjKSB7XHJcbiAgaWYgKGMgPT09IDQ3IHx8IGMgPT09IDkyKSB7XHJcbiAgICBpZiAoYyA9PT0gOTIpIHtcclxuICAgICAgdGhpcy5wYXJzZUVycm9yID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuc3RhdGUgPSBcImZpbGUgaG9zdFwiO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBpZiAodGhpcy5iYXNlICE9PSBudWxsICYmIHRoaXMuYmFzZS5zY2hlbWUgPT09IFwiZmlsZVwiKSB7XHJcbiAgICAgIGlmIChpc05vcm1hbGl6ZWRXaW5kb3dzRHJpdmVMZXR0ZXJTdHJpbmcodGhpcy5iYXNlLnBhdGhbMF0pKSB7XHJcbiAgICAgICAgdGhpcy51cmwucGF0aC5wdXNoKHRoaXMuYmFzZS5wYXRoWzBdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnVybC5ob3N0ID0gdGhpcy5iYXNlLmhvc3Q7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc3RhdGUgPSBcInBhdGhcIjtcclxuICAgIC0tdGhpcy5wb2ludGVyO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRydWU7XHJcbn07XHJcblxyXG5VUkxTdGF0ZU1hY2hpbmUucHJvdG90eXBlW1wicGFyc2UgZmlsZSBob3N0XCJdID0gZnVuY3Rpb24gcGFyc2VGaWxlSG9zdChjLCBjU3RyKSB7XHJcbiAgaWYgKGlzTmFOKGMpIHx8IGMgPT09IDQ3IHx8IGMgPT09IDkyIHx8IGMgPT09IDYzIHx8IGMgPT09IDM1KSB7XHJcbiAgICAtLXRoaXMucG9pbnRlcjtcclxuICAgIGlmICghdGhpcy5zdGF0ZU92ZXJyaWRlICYmIGlzV2luZG93c0RyaXZlTGV0dGVyU3RyaW5nKHRoaXMuYnVmZmVyKSkge1xyXG4gICAgICB0aGlzLnBhcnNlRXJyb3IgPSB0cnVlO1xyXG4gICAgICB0aGlzLnN0YXRlID0gXCJwYXRoXCI7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYnVmZmVyID09PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMudXJsLmhvc3QgPSBcIlwiO1xyXG4gICAgICBpZiAodGhpcy5zdGF0ZU92ZXJyaWRlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3RhdGUgPSBcInBhdGggc3RhcnRcIjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBob3N0ID0gcGFyc2VIb3N0KHRoaXMuYnVmZmVyLCBpc1NwZWNpYWwodGhpcy51cmwpKTtcclxuICAgICAgaWYgKGhvc3QgPT09IGZhaWx1cmUpIHtcclxuICAgICAgICByZXR1cm4gZmFpbHVyZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaG9zdCA9PT0gXCJsb2NhbGhvc3RcIikge1xyXG4gICAgICAgIGhvc3QgPSBcIlwiO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudXJsLmhvc3QgPSBob3N0O1xyXG5cclxuICAgICAgaWYgKHRoaXMuc3RhdGVPdmVycmlkZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5idWZmZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLnN0YXRlID0gXCJwYXRoIHN0YXJ0XCI7XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIHRoaXMuYnVmZmVyICs9IGNTdHI7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcblVSTFN0YXRlTWFjaGluZS5wcm90b3R5cGVbXCJwYXJzZSBwYXRoIHN0YXJ0XCJdID0gZnVuY3Rpb24gcGFyc2VQYXRoU3RhcnQoYykge1xyXG4gIGlmIChpc1NwZWNpYWwodGhpcy51cmwpKSB7XHJcbiAgICBpZiAoYyA9PT0gOTIpIHtcclxuICAgICAgdGhpcy5wYXJzZUVycm9yID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuc3RhdGUgPSBcInBhdGhcIjtcclxuXHJcbiAgICBpZiAoYyAhPT0gNDcgJiYgYyAhPT0gOTIpIHtcclxuICAgICAgLS10aGlzLnBvaW50ZXI7XHJcbiAgICB9XHJcbiAgfSBlbHNlIGlmICghdGhpcy5zdGF0ZU92ZXJyaWRlICYmIGMgPT09IDYzKSB7XHJcbiAgICB0aGlzLnVybC5xdWVyeSA9IFwiXCI7XHJcbiAgICB0aGlzLnN0YXRlID0gXCJxdWVyeVwiO1xyXG4gIH0gZWxzZSBpZiAoIXRoaXMuc3RhdGVPdmVycmlkZSAmJiBjID09PSAzNSkge1xyXG4gICAgdGhpcy51cmwuZnJhZ21lbnQgPSBcIlwiO1xyXG4gICAgdGhpcy5zdGF0ZSA9IFwiZnJhZ21lbnRcIjtcclxuICB9IGVsc2UgaWYgKGMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5zdGF0ZSA9IFwicGF0aFwiO1xyXG4gICAgaWYgKGMgIT09IDQ3KSB7XHJcbiAgICAgIC0tdGhpcy5wb2ludGVyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRydWU7XHJcbn07XHJcblxyXG5VUkxTdGF0ZU1hY2hpbmUucHJvdG90eXBlW1wicGFyc2UgcGF0aFwiXSA9IGZ1bmN0aW9uIHBhcnNlUGF0aChjKSB7XHJcbiAgaWYgKGlzTmFOKGMpIHx8IGMgPT09IDQ3IHx8IChpc1NwZWNpYWwodGhpcy51cmwpICYmIGMgPT09IDkyKSB8fFxyXG4gICAgICAoIXRoaXMuc3RhdGVPdmVycmlkZSAmJiAoYyA9PT0gNjMgfHwgYyA9PT0gMzUpKSkge1xyXG4gICAgaWYgKGlzU3BlY2lhbCh0aGlzLnVybCkgJiYgYyA9PT0gOTIpIHtcclxuICAgICAgdGhpcy5wYXJzZUVycm9yID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXNEb3VibGVEb3QodGhpcy5idWZmZXIpKSB7XHJcbiAgICAgIHNob3J0ZW5QYXRoKHRoaXMudXJsKTtcclxuICAgICAgaWYgKGMgIT09IDQ3ICYmICEoaXNTcGVjaWFsKHRoaXMudXJsKSAmJiBjID09PSA5MikpIHtcclxuICAgICAgICB0aGlzLnVybC5wYXRoLnB1c2goXCJcIik7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoaXNTaW5nbGVEb3QodGhpcy5idWZmZXIpICYmIGMgIT09IDQ3ICYmXHJcbiAgICAgICAgICAgICAgICEoaXNTcGVjaWFsKHRoaXMudXJsKSAmJiBjID09PSA5MikpIHtcclxuICAgICAgdGhpcy51cmwucGF0aC5wdXNoKFwiXCIpO1xyXG4gICAgfSBlbHNlIGlmICghaXNTaW5nbGVEb3QodGhpcy5idWZmZXIpKSB7XHJcbiAgICAgIGlmICh0aGlzLnVybC5zY2hlbWUgPT09IFwiZmlsZVwiICYmIHRoaXMudXJsLnBhdGgubGVuZ3RoID09PSAwICYmIGlzV2luZG93c0RyaXZlTGV0dGVyU3RyaW5nKHRoaXMuYnVmZmVyKSkge1xyXG4gICAgICAgIGlmICh0aGlzLnVybC5ob3N0ICE9PSBcIlwiICYmIHRoaXMudXJsLmhvc3QgIT09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMucGFyc2VFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnVybC5ob3N0ID0gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5idWZmZXIgPSB0aGlzLmJ1ZmZlclswXSArIFwiOlwiO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudXJsLnBhdGgucHVzaCh0aGlzLmJ1ZmZlcik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmJ1ZmZlciA9IFwiXCI7XHJcbiAgICBpZiAodGhpcy51cmwuc2NoZW1lID09PSBcImZpbGVcIiAmJiAoYyA9PT0gdW5kZWZpbmVkIHx8IGMgPT09IDYzIHx8IGMgPT09IDM1KSkge1xyXG4gICAgICB3aGlsZSAodGhpcy51cmwucGF0aC5sZW5ndGggPiAxICYmIHRoaXMudXJsLnBhdGhbMF0gPT09IFwiXCIpIHtcclxuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudXJsLnBhdGguc2hpZnQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGMgPT09IDYzKSB7XHJcbiAgICAgIHRoaXMudXJsLnF1ZXJ5ID0gXCJcIjtcclxuICAgICAgdGhpcy5zdGF0ZSA9IFwicXVlcnlcIjtcclxuICAgIH1cclxuICAgIGlmIChjID09PSAzNSkge1xyXG4gICAgICB0aGlzLnVybC5mcmFnbWVudCA9IFwiXCI7XHJcbiAgICAgIHRoaXMuc3RhdGUgPSBcImZyYWdtZW50XCI7XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIFRPRE86IElmIGMgaXMgbm90IGEgVVJMIGNvZGUgcG9pbnQgYW5kIG5vdCBcIiVcIiwgcGFyc2UgZXJyb3IuXHJcblxyXG4gICAgaWYgKGMgPT09IDM3ICYmXHJcbiAgICAgICghaXNBU0NJSUhleCh0aGlzLmlucHV0W3RoaXMucG9pbnRlciArIDFdKSB8fFxyXG4gICAgICAgICFpc0FTQ0lJSGV4KHRoaXMuaW5wdXRbdGhpcy5wb2ludGVyICsgMl0pKSkge1xyXG4gICAgICB0aGlzLnBhcnNlRXJyb3IgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYnVmZmVyICs9IHBlcmNlbnRFbmNvZGVDaGFyKGMsIGlzUGF0aFBlcmNlbnRFbmNvZGUpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRydWU7XHJcbn07XHJcblxyXG5VUkxTdGF0ZU1hY2hpbmUucHJvdG90eXBlW1wicGFyc2UgY2Fubm90LWJlLWEtYmFzZS1VUkwgcGF0aFwiXSA9IGZ1bmN0aW9uIHBhcnNlQ2Fubm90QmVBQmFzZVVSTFBhdGgoYykge1xyXG4gIGlmIChjID09PSA2Mykge1xyXG4gICAgdGhpcy51cmwucXVlcnkgPSBcIlwiO1xyXG4gICAgdGhpcy5zdGF0ZSA9IFwicXVlcnlcIjtcclxuICB9IGVsc2UgaWYgKGMgPT09IDM1KSB7XHJcbiAgICB0aGlzLnVybC5mcmFnbWVudCA9IFwiXCI7XHJcbiAgICB0aGlzLnN0YXRlID0gXCJmcmFnbWVudFwiO1xyXG4gIH0gZWxzZSB7XHJcbiAgICAvLyBUT0RPOiBBZGQ6IG5vdCBhIFVSTCBjb2RlIHBvaW50XHJcbiAgICBpZiAoIWlzTmFOKGMpICYmIGMgIT09IDM3KSB7XHJcbiAgICAgIHRoaXMucGFyc2VFcnJvciA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGMgPT09IDM3ICYmXHJcbiAgICAgICAgKCFpc0FTQ0lJSGV4KHRoaXMuaW5wdXRbdGhpcy5wb2ludGVyICsgMV0pIHx8XHJcbiAgICAgICAgICFpc0FTQ0lJSGV4KHRoaXMuaW5wdXRbdGhpcy5wb2ludGVyICsgMl0pKSkge1xyXG4gICAgICB0aGlzLnBhcnNlRXJyb3IgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghaXNOYU4oYykpIHtcclxuICAgICAgdGhpcy51cmwucGF0aFswXSA9IHRoaXMudXJsLnBhdGhbMF0gKyBwZXJjZW50RW5jb2RlQ2hhcihjLCBpc0MwQ29udHJvbFBlcmNlbnRFbmNvZGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRydWU7XHJcbn07XHJcblxyXG5VUkxTdGF0ZU1hY2hpbmUucHJvdG90eXBlW1wicGFyc2UgcXVlcnlcIl0gPSBmdW5jdGlvbiBwYXJzZVF1ZXJ5KGMsIGNTdHIpIHtcclxuICBpZiAoaXNOYU4oYykgfHwgKCF0aGlzLnN0YXRlT3ZlcnJpZGUgJiYgYyA9PT0gMzUpKSB7XHJcbiAgICBpZiAoIWlzU3BlY2lhbCh0aGlzLnVybCkgfHwgdGhpcy51cmwuc2NoZW1lID09PSBcIndzXCIgfHwgdGhpcy51cmwuc2NoZW1lID09PSBcIndzc1wiKSB7XHJcbiAgICAgIHRoaXMuZW5jb2RpbmdPdmVycmlkZSA9IFwidXRmLThcIjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgQnVmZmVyKHRoaXMuYnVmZmVyKTsgLy8gVE9ETzogVXNlIGVuY29kaW5nIG92ZXJyaWRlIGluc3RlYWRcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnVmZmVyLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmIChidWZmZXJbaV0gPCAweDIxIHx8IGJ1ZmZlcltpXSA+IDB4N0UgfHwgYnVmZmVyW2ldID09PSAweDIyIHx8IGJ1ZmZlcltpXSA9PT0gMHgyMyB8fFxyXG4gICAgICAgICAgYnVmZmVyW2ldID09PSAweDNDIHx8IGJ1ZmZlcltpXSA9PT0gMHgzRSkge1xyXG4gICAgICAgIHRoaXMudXJsLnF1ZXJ5ICs9IHBlcmNlbnRFbmNvZGUoYnVmZmVyW2ldKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnVybC5xdWVyeSArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChidWZmZXJbaV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5idWZmZXIgPSBcIlwiO1xyXG4gICAgaWYgKGMgPT09IDM1KSB7XHJcbiAgICAgIHRoaXMudXJsLmZyYWdtZW50ID0gXCJcIjtcclxuICAgICAgdGhpcy5zdGF0ZSA9IFwiZnJhZ21lbnRcIjtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgLy8gVE9ETzogSWYgYyBpcyBub3QgYSBVUkwgY29kZSBwb2ludCBhbmQgbm90IFwiJVwiLCBwYXJzZSBlcnJvci5cclxuICAgIGlmIChjID09PSAzNyAmJlxyXG4gICAgICAoIWlzQVNDSUlIZXgodGhpcy5pbnB1dFt0aGlzLnBvaW50ZXIgKyAxXSkgfHxcclxuICAgICAgICAhaXNBU0NJSUhleCh0aGlzLmlucHV0W3RoaXMucG9pbnRlciArIDJdKSkpIHtcclxuICAgICAgdGhpcy5wYXJzZUVycm9yID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmJ1ZmZlciArPSBjU3RyO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRydWU7XHJcbn07XHJcblxyXG5VUkxTdGF0ZU1hY2hpbmUucHJvdG90eXBlW1wicGFyc2UgZnJhZ21lbnRcIl0gPSBmdW5jdGlvbiBwYXJzZUZyYWdtZW50KGMpIHtcclxuICBpZiAoaXNOYU4oYykpIHsgLy8gZG8gbm90aGluZ1xyXG4gIH0gZWxzZSBpZiAoYyA9PT0gMHgwKSB7XHJcbiAgICB0aGlzLnBhcnNlRXJyb3IgPSB0cnVlO1xyXG4gIH0gZWxzZSB7XHJcbiAgICAvLyBUT0RPOiBJZiBjIGlzIG5vdCBhIFVSTCBjb2RlIHBvaW50IGFuZCBub3QgXCIlXCIsIHBhcnNlIGVycm9yLlxyXG4gICAgaWYgKGMgPT09IDM3ICYmXHJcbiAgICAgICghaXNBU0NJSUhleCh0aGlzLmlucHV0W3RoaXMucG9pbnRlciArIDFdKSB8fFxyXG4gICAgICAgICFpc0FTQ0lJSGV4KHRoaXMuaW5wdXRbdGhpcy5wb2ludGVyICsgMl0pKSkge1xyXG4gICAgICB0aGlzLnBhcnNlRXJyb3IgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXJsLmZyYWdtZW50ICs9IHBlcmNlbnRFbmNvZGVDaGFyKGMsIGlzQzBDb250cm9sUGVyY2VudEVuY29kZSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcbmZ1bmN0aW9uIHNlcmlhbGl6ZVVSTCh1cmwsIGV4Y2x1ZGVGcmFnbWVudCkge1xyXG4gIGxldCBvdXRwdXQgPSB1cmwuc2NoZW1lICsgXCI6XCI7XHJcbiAgaWYgKHVybC5ob3N0ICE9PSBudWxsKSB7XHJcbiAgICBvdXRwdXQgKz0gXCIvL1wiO1xyXG5cclxuICAgIGlmICh1cmwudXNlcm5hbWUgIT09IFwiXCIgfHwgdXJsLnBhc3N3b3JkICE9PSBcIlwiKSB7XHJcbiAgICAgIG91dHB1dCArPSB1cmwudXNlcm5hbWU7XHJcbiAgICAgIGlmICh1cmwucGFzc3dvcmQgIT09IFwiXCIpIHtcclxuICAgICAgICBvdXRwdXQgKz0gXCI6XCIgKyB1cmwucGFzc3dvcmQ7XHJcbiAgICAgIH1cclxuICAgICAgb3V0cHV0ICs9IFwiQFwiO1xyXG4gICAgfVxyXG5cclxuICAgIG91dHB1dCArPSBzZXJpYWxpemVIb3N0KHVybC5ob3N0KTtcclxuXHJcbiAgICBpZiAodXJsLnBvcnQgIT09IG51bGwpIHtcclxuICAgICAgb3V0cHV0ICs9IFwiOlwiICsgdXJsLnBvcnQ7XHJcbiAgICB9XHJcbiAgfSBlbHNlIGlmICh1cmwuaG9zdCA9PT0gbnVsbCAmJiB1cmwuc2NoZW1lID09PSBcImZpbGVcIikge1xyXG4gICAgb3V0cHV0ICs9IFwiLy9cIjtcclxuICB9XHJcblxyXG4gIGlmICh1cmwuY2Fubm90QmVBQmFzZVVSTCkge1xyXG4gICAgb3V0cHV0ICs9IHVybC5wYXRoWzBdO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBmb3IgKGNvbnN0IHN0cmluZyBvZiB1cmwucGF0aCkge1xyXG4gICAgICBvdXRwdXQgKz0gXCIvXCIgKyBzdHJpbmc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpZiAodXJsLnF1ZXJ5ICE9PSBudWxsKSB7XHJcbiAgICBvdXRwdXQgKz0gXCI/XCIgKyB1cmwucXVlcnk7XHJcbiAgfVxyXG5cclxuICBpZiAoIWV4Y2x1ZGVGcmFnbWVudCAmJiB1cmwuZnJhZ21lbnQgIT09IG51bGwpIHtcclxuICAgIG91dHB1dCArPSBcIiNcIiArIHVybC5mcmFnbWVudDtcclxuICB9XHJcblxyXG4gIHJldHVybiBvdXRwdXQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNlcmlhbGl6ZU9yaWdpbih0dXBsZSkge1xyXG4gIGxldCByZXN1bHQgPSB0dXBsZS5zY2hlbWUgKyBcIjovL1wiO1xyXG4gIHJlc3VsdCArPSBzZXJpYWxpemVIb3N0KHR1cGxlLmhvc3QpO1xyXG5cclxuICBpZiAodHVwbGUucG9ydCAhPT0gbnVsbCkge1xyXG4gICAgcmVzdWx0ICs9IFwiOlwiICsgdHVwbGUucG9ydDtcclxuICB9XHJcblxyXG4gIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbm1vZHVsZS5leHBvcnRzLnNlcmlhbGl6ZVVSTCA9IHNlcmlhbGl6ZVVSTDtcclxuXHJcbm1vZHVsZS5leHBvcnRzLnNlcmlhbGl6ZVVSTE9yaWdpbiA9IGZ1bmN0aW9uICh1cmwpIHtcclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsLW9yaWdpblxyXG4gIHN3aXRjaCAodXJsLnNjaGVtZSkge1xyXG4gICAgY2FzZSBcImJsb2JcIjpcclxuICAgICAgdHJ5IHtcclxuICAgICAgICByZXR1cm4gbW9kdWxlLmV4cG9ydHMuc2VyaWFsaXplVVJMT3JpZ2luKG1vZHVsZS5leHBvcnRzLnBhcnNlVVJMKHVybC5wYXRoWzBdKSk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAvLyBzZXJpYWxpemluZyBhbiBvcGFxdWUgb3JpZ2luIHJldHVybnMgXCJudWxsXCJcclxuICAgICAgICByZXR1cm4gXCJudWxsXCI7XHJcbiAgICAgIH1cclxuICAgIGNhc2UgXCJmdHBcIjpcclxuICAgIGNhc2UgXCJnb3BoZXJcIjpcclxuICAgIGNhc2UgXCJodHRwXCI6XHJcbiAgICBjYXNlIFwiaHR0cHNcIjpcclxuICAgIGNhc2UgXCJ3c1wiOlxyXG4gICAgY2FzZSBcIndzc1wiOlxyXG4gICAgICByZXR1cm4gc2VyaWFsaXplT3JpZ2luKHtcclxuICAgICAgICBzY2hlbWU6IHVybC5zY2hlbWUsXHJcbiAgICAgICAgaG9zdDogdXJsLmhvc3QsXHJcbiAgICAgICAgcG9ydDogdXJsLnBvcnRcclxuICAgICAgfSk7XHJcbiAgICBjYXNlIFwiZmlsZVwiOlxyXG4gICAgICAvLyBzcGVjIHNheXMgXCJleGVyY2lzZSB0byB0aGUgcmVhZGVyXCIsIGNocm9tZSBzYXlzIFwiZmlsZTovL1wiXHJcbiAgICAgIHJldHVybiBcImZpbGU6Ly9cIjtcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIC8vIHNlcmlhbGl6aW5nIGFuIG9wYXF1ZSBvcmlnaW4gcmV0dXJucyBcIm51bGxcIlxyXG4gICAgICByZXR1cm4gXCJudWxsXCI7XHJcbiAgfVxyXG59O1xyXG5cclxubW9kdWxlLmV4cG9ydHMuYmFzaWNVUkxQYXJzZSA9IGZ1bmN0aW9uIChpbnB1dCwgb3B0aW9ucykge1xyXG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHtcclxuICAgIG9wdGlvbnMgPSB7fTtcclxuICB9XHJcblxyXG4gIGNvbnN0IHVzbSA9IG5ldyBVUkxTdGF0ZU1hY2hpbmUoaW5wdXQsIG9wdGlvbnMuYmFzZVVSTCwgb3B0aW9ucy5lbmNvZGluZ092ZXJyaWRlLCBvcHRpb25zLnVybCwgb3B0aW9ucy5zdGF0ZU92ZXJyaWRlKTtcclxuICBpZiAodXNtLmZhaWx1cmUpIHtcclxuICAgIHJldHVybiBcImZhaWx1cmVcIjtcclxuICB9XHJcblxyXG4gIHJldHVybiB1c20udXJsO1xyXG59O1xyXG5cclxubW9kdWxlLmV4cG9ydHMuc2V0VGhlVXNlcm5hbWUgPSBmdW5jdGlvbiAodXJsLCB1c2VybmFtZSkge1xyXG4gIHVybC51c2VybmFtZSA9IFwiXCI7XHJcbiAgY29uc3QgZGVjb2RlZCA9IHB1bnljb2RlLnVjczIuZGVjb2RlKHVzZXJuYW1lKTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGRlY29kZWQubGVuZ3RoOyArK2kpIHtcclxuICAgIHVybC51c2VybmFtZSArPSBwZXJjZW50RW5jb2RlQ2hhcihkZWNvZGVkW2ldLCBpc1VzZXJpbmZvUGVyY2VudEVuY29kZSk7XHJcbiAgfVxyXG59O1xyXG5cclxubW9kdWxlLmV4cG9ydHMuc2V0VGhlUGFzc3dvcmQgPSBmdW5jdGlvbiAodXJsLCBwYXNzd29yZCkge1xyXG4gIHVybC5wYXNzd29yZCA9IFwiXCI7XHJcbiAgY29uc3QgZGVjb2RlZCA9IHB1bnljb2RlLnVjczIuZGVjb2RlKHBhc3N3b3JkKTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGRlY29kZWQubGVuZ3RoOyArK2kpIHtcclxuICAgIHVybC5wYXNzd29yZCArPSBwZXJjZW50RW5jb2RlQ2hhcihkZWNvZGVkW2ldLCBpc1VzZXJpbmZvUGVyY2VudEVuY29kZSk7XHJcbiAgfVxyXG59O1xyXG5cclxubW9kdWxlLmV4cG9ydHMuc2VyaWFsaXplSG9zdCA9IHNlcmlhbGl6ZUhvc3Q7XHJcblxyXG5tb2R1bGUuZXhwb3J0cy5jYW5ub3RIYXZlQVVzZXJuYW1lUGFzc3dvcmRQb3J0ID0gY2Fubm90SGF2ZUFVc2VybmFtZVBhc3N3b3JkUG9ydDtcclxuXHJcbm1vZHVsZS5leHBvcnRzLnNlcmlhbGl6ZUludGVnZXIgPSBmdW5jdGlvbiAoaW50ZWdlcikge1xyXG4gIHJldHVybiBTdHJpbmcoaW50ZWdlcik7XHJcbn07XHJcblxyXG5tb2R1bGUuZXhwb3J0cy5wYXJzZVVSTCA9IGZ1bmN0aW9uIChpbnB1dCwgb3B0aW9ucykge1xyXG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHtcclxuICAgIG9wdGlvbnMgPSB7fTtcclxuICB9XHJcblxyXG4gIC8vIFdlIGRvbid0IGhhbmRsZSBibG9icywgc28gdGhpcyBqdXN0IGRlbGVnYXRlczpcclxuICByZXR1cm4gbW9kdWxlLmV4cG9ydHMuYmFzaWNVUkxQYXJzZShpbnB1dCwgeyBiYXNlVVJMOiBvcHRpb25zLmJhc2VVUkwsIGVuY29kaW5nT3ZlcnJpZGU6IG9wdGlvbnMuZW5jb2RpbmdPdmVycmlkZSB9KTtcclxufTtcclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzLm1peGluID0gZnVuY3Rpb24gbWl4aW4odGFyZ2V0LCBzb3VyY2UpIHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleXNbaV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXlzW2ldKSk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzLndyYXBwZXJTeW1ib2wgPSBTeW1ib2woXCJ3cmFwcGVyXCIpO1xubW9kdWxlLmV4cG9ydHMuaW1wbFN5bWJvbCA9IFN5bWJvbChcImltcGxcIik7XG5cbm1vZHVsZS5leHBvcnRzLndyYXBwZXJGb3JJbXBsID0gZnVuY3Rpb24gKGltcGwpIHtcbiAgcmV0dXJuIGltcGxbbW9kdWxlLmV4cG9ydHMud3JhcHBlclN5bWJvbF07XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5pbXBsRm9yV3JhcHBlciA9IGZ1bmN0aW9uICh3cmFwcGVyKSB7XG4gIHJldHVybiB3cmFwcGVyW21vZHVsZS5leHBvcnRzLmltcGxTeW1ib2xdO1xufTtcblxuIiwiXCJ1c2Ugc3RyaWN0XCJcblxudmFyIFBhdGhMZWFmRWxlbWVudCA9IHJlcXVpcmUoJy4vcGF0aCcpLlBhdGhMZWFmRWxlbWVudFxuXG5jb25zdCBIQVNIX1BSRUZJWF9OT0RFID0gMFxuY29uc3QgSEFTSF9QUkVGSVhfTEVBRiA9IDFcbmNvbnN0IEhBU0hfUFJFRklYX05PREVfQVJSQVkgPSA3XG5jb25zdCBIQVNIX1BSRUZJWF9OT0RFX0RJQ1QgPSA4XG5cbi8qKlxuICogXG4gKi9cbmZ1bmN0aW9uIEJpbmFyeVRyZWVFbGVtZW50KCkge1xuICB0aGlzLnBhdGhFbGVtID0gbnVsbFxufVxuQmluYXJ5VHJlZUVsZW1lbnQucHJvdG90eXBlLmlzUGF0aCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5wYXRoRWxlbSAhPSBudWxsXG59XG5CaW5hcnlUcmVlRWxlbWVudC5wcm90b3R5cGUuaXNQYXRoTGVhZiA9IGZ1bmN0aW9uKCkge1xuICBpZiAodGhpcy5wYXRoRWxlbSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgaWYgKHRoaXMucGF0aEVsZW0gaW5zdGFuY2VvZiBQYXRoTGVhZkVsZW1lbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5CaW5hcnlUcmVlRWxlbWVudC5wcm90b3R5cGUuc2V0UGF0aEVsZW1lbnQgPSBmdW5jdGlvbihwYXRoRWxlbSkge1xuICB0aGlzLnBhdGhFbGVtID0gcGF0aEVsZW1cbn1cbkJpbmFyeVRyZWVFbGVtZW50LnByb3RvdHlwZS5nZXRQcmVmaXhCeXRlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBIQVNIX1BSRUZJWF9OT0RFO1xufVxuXG4vKipcbiAqIFxuICogQHBhcmFtIHtCaW5hcnlUcmVlRWxlbWVudH0gbGVmdCBcbiAqIEBwYXJhbSB7QmluYXJ5VHJlZUVsZW1lbnR9IHJpZ2h0IFxuICovXG5mdW5jdGlvbiBOb2RlKGxlZnQsIHJpZ2h0KSB7XG4gIHRoaXMubGVmdCA9IGxlZnQ7XG4gIHRoaXMucmlnaHQgPSByaWdodDsgIFxufVxuXG5Ob2RlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQmluYXJ5VHJlZUVsZW1lbnQucHJvdG90eXBlKVxuTm9kZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBOb2RlXG5cbk5vZGUucHJvdG90eXBlLmdldFByZWZpeEJ5dGUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIEhBU0hfUFJFRklYX05PREU7XG59XG5cbi8qKlxuICogXG4gKiBAcGFyYW0ge0JpbmFyeVRyZWVFbGVtZW50fSBsZWZ0IFxuICogQHBhcmFtIHtCaW5hcnlUcmVlRWxlbWVudH0gcmlnaHQgXG4gKiBAcGFyYW0geyp9IGNvbnRlbnQgXG4gKiBAcGFyYW0ge1BhdGhTZXR9IHBhdGhFbGVtIFxuICovXG5mdW5jdGlvbiBTdWJUcmVlUm9vdE5vZGUobGVmdCwgcmlnaHQsIGNvbnRlbnQsIHBhdGhFbGVtKSB7XG4gIE5vZGUuY2FsbCh0aGlzLCBsZWZ0LCByaWdodClcbiAgdGhpcy5jb250ZW50ID0gY29udGVudFxuICBCaW5hcnlUcmVlRWxlbWVudC5wcm90b3R5cGUuc2V0UGF0aEVsZW1lbnQuY2FsbCh0aGlzLCBwYXRoRWxlbSlcbn1cblxuU3ViVHJlZVJvb3ROb2RlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTm9kZS5wcm90b3R5cGUpXG5TdWJUcmVlUm9vdE5vZGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3ViVHJlZVJvb3ROb2RlXG5cbi8qKlxuICogXG4gKiBAcGFyYW0geyp9IGNvbnRlbnQgXG4gKiBAcGFyYW0ge1BhdGhFbGVtZW50fSBwYXRoRWxlbSBcbiAqL1xuZnVuY3Rpb24gTGVhZihjb250ZW50LCBwYXRoRWxlbT1udWxsKSB7XG4gIHRoaXMuY29udGVudCA9IGNvbnRlbnRcbiAgaWYgKHBhdGhFbGVtICE9IG51bGwpIHtcbiAgICBpZiAocGF0aEVsZW0gaW5zdGFuY2VvZiBQYXRoTGVhZkVsZW1lbnQpIHtcbiAgICAgIEJpbmFyeVRyZWVFbGVtZW50LnByb3RvdHlwZS5zZXRQYXRoRWxlbWVudC5jYWxsKHRoaXMsIHBhdGhFbGVtKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgcGF0aCBhbmQgb2JqZWN0IHN0cnVjdHVyZSBkb2VzIG5vdCBtYXRjaCEgV2UgYXJlIGF0IGEgbGVhZiwgYnV0IHRoZSBwYXRoIGV4cGVjdHMgYSBzdWIgc3RydWN0dXJlLlwiKVxuICAgIH1cbiAgfVxufVxuXG5MZWFmLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQmluYXJ5VHJlZUVsZW1lbnQucHJvdG90eXBlKVxuTGVhZi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMZWFmXG5cbkxlYWYucHJvdG90eXBlLmdldFByZWZpeEJ5dGUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIEhBU0hfUFJFRklYX0xFQUZcbn1cblxuZnVuY3Rpb24gRW1wdHlMZWFmKCkge31cbkVtcHR5TGVhZi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJpbmFyeVRyZWVFbGVtZW50LnByb3RvdHlwZSlcbkVtcHR5TGVhZi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBFbXB0eUxlYWZcblxuLyoqXG4gKiBXcmFwcGVyIGNsYXNzIGZvciB0aGUgcm9vdCBvYmplY3QuXG4gKiBAcGFyYW0ge0JpbmFyeVRyZWVFbGVtZW50fSByb290XG4gKi9cbmZ1bmN0aW9uIEJpbmFyeVRyZWUocm9vdCkge1xuICB0aGlzLnJvb3QgPSByb290XG59XG5cbkJpbmFyeVRyZWUucHJvdG90eXBlLm1heExldmVsID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLm1heExldmVsSW50ZXJuYWwodGhpcy5yb290KVxufVxuXG5CaW5hcnlUcmVlLnByb3RvdHlwZS5tYXhMZXZlbEludGVybmFsID0gZnVuY3Rpb24obm9kZSkge1xuICBpZiAobm9kZSBpbnN0YW5jZW9mIEVtcHR5TGVhZikge1xuICAgIHJldHVybiAwXG4gIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIExlYWYpIHtcbiAgICByZXR1cm4gMVxuICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBOb2RlKSB7XG4gICAgcmV0dXJuIE1hdGgubWF4KHRoaXMubWF4TGV2ZWxJbnRlcm5hbChub2RlLmxlZnQpLCB0aGlzLm1heExldmVsSW50ZXJuYWwobm9kZS5yaWdodCkpICsgMVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcIldoYXQgaXMgdGhpcyB0eXBlPyBcIiArIHR5cGVvZiBub2RlKVxuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgdG9wIG9mIGEgc3ViIHRyZWUgZ2VuZXJhdGVkIGJ5IGEgW0FycmF5XVxuICogXG4gKiBAcGFyYW0geyp9IGxlZnQgXG4gKiBAcGFyYW0geyp9IHJpZ2h0IFxuICogQHBhcmFtIHsqfSBjb250ZW50XG4gKiBAcGFyYW0geyp9IHNpemUgXG4gKiBAcGFyYW0ge1BhdGhFbGVtZW50fSBwYXRoRWxlbSBcbiAqL1xuZnVuY3Rpb24gQXJyYXlIZWFkTm9kZShsZWZ0LCByaWdodCwgY29udGVudCwgc2l6ZSwgcGF0aEVsZW09bnVsbCkge1xuICBTdWJUcmVlUm9vdE5vZGUuY2FsbCh0aGlzLCBsZWZ0LCByaWdodCwgY29udGVudCwgcGF0aEVsZW0pXG4gIHRoaXMuc2l6ZSA9IHNpemVcbn1cblxuQXJyYXlIZWFkTm9kZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN1YlRyZWVSb290Tm9kZS5wcm90b3R5cGUpXG5BcnJheUhlYWROb2RlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEFycmF5SGVhZE5vZGVcbkFycmF5SGVhZE5vZGUucHJvdG90eXBlLmdldFByZWZpeEJ5dGUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIEhBU0hfUFJFRklYX05PREVfQVJSQVlcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSB0b3AgYSBzdWIgdHJlZSBnZW5lcmF0ZWQgYnkgYSBbRGljdGlvbmFyeV1cbiAqIEBwYXJhbSB7Kn0gbGVmdCBcbiAqIEBwYXJhbSB7Kn0gcmlnaHQgXG4gKiBAcGFyYW0geyp9IGNvbnRlbnQgXG4gKiBAcGFyYW0geyp9IHNpemUgXG4gKiBAcGFyYW0ge1BhdGhFbGVtZW50fSBwYXRoRWxlbSBcbiAqL1xuZnVuY3Rpb24gRGljdEhlYWROb2RlKGxlZnQsIHJpZ2h0LCBjb250ZW50LCBzaXplLCBwYXRoRWxlbT1udWxsKSB7XG4gIFN1YlRyZWVSb290Tm9kZS5jYWxsKHRoaXMsIGxlZnQsIHJpZ2h0LCBjb250ZW50LCBwYXRoRWxlbSlcbiAgdGhpcy5zaXplID0gc2l6ZVxufVxuXG5EaWN0SGVhZE5vZGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdWJUcmVlUm9vdE5vZGUucHJvdG90eXBlKVxuRGljdEhlYWROb2RlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IERpY3RIZWFkTm9kZVxuRGljdEhlYWROb2RlLnByb3RvdHlwZS5nZXRQcmVmaXhCeXRlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBIQVNIX1BSRUZJWF9OT0RFX0RJQ1Rcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7SEFTSF9QUkVGSVhfTk9ERSwgSEFTSF9QUkVGSVhfTEVBRiwgSEFTSF9QUkVGSVhfTk9ERV9BUlJBWSwgSEFTSF9QUkVGSVhfTk9ERV9ESUNULCBcbiAgTm9kZSwgTGVhZiwgRW1wdHlMZWFmLCBTdWJUcmVlUm9vdE5vZGUsIEJpbmFyeVRyZWVFbGVtZW50LCBCaW5hcnlUcmVlLCBBcnJheUhlYWROb2RlLCBEaWN0SGVhZE5vZGV9IiwiXCJ1c2Ugc3RyaWN0XCJcblxudmFyIHV0aWwgPSByZXF1aXJlKCcuLi9mb3JtYXR0ZXInKTtcblxudmFyIFBhdGhTZXQgPSByZXF1aXJlKCcuL3BhdGgnKS5QYXRoU2V0XG52YXIgUGF0aExlYWZFbGVtZW50ID0gcmVxdWlyZSgnLi9wYXRoJykuUGF0aExlYWZFbGVtZW50XG52YXIgRW1wdHlMZWFmID0gcmVxdWlyZSgnLi9iaW5hcnl0cmVlJykuRW1wdHlMZWFmXG52YXIgTGVhZiA9IHJlcXVpcmUoJy4vYmluYXJ5dHJlZScpLkxlYWZcbnZhciBOb2RlID0gcmVxdWlyZSgnLi9iaW5hcnl0cmVlJykuTm9kZVxudmFyIEJpbmFyeVRyZWUgPSByZXF1aXJlKCcuL2JpbmFyeXRyZWUnKS5CaW5hcnlUcmVlXG52YXIgQXJyYXlIZWFkTm9kZSA9IHJlcXVpcmUoJy4vYmluYXJ5dHJlZScpLkFycmF5SGVhZE5vZGVcbnZhciBEaWN0SGVhZE5vZGUgPSByZXF1aXJlKCcuL2JpbmFyeXRyZWUnKS5EaWN0SGVhZE5vZGVcblxuY29uc3QgTk9fUEFUSFMgPSBuZXcgUGF0aFNldChbXSlcblxuLyoqXG4gKiBUaGUgZmFjdG9yeSBkb2VzIHRoZSBjb252ZXJzaW9uIGJldHdlZW4gbGlzdCBvZiBlbGVtZW50cyBhbmQgdHJlZSBvZiBlbGVtZW50cy5cbiAqXG4gKiBOb3RlOiBUaGUgaWRlYSBpcyB0aGF0IHlvdSBzaG91bGQgc3ViIGNsYXNzIGZvciBlYWNoIHR5cGUgb2YgZWxlbWVudCB5b3Ugd2FudCB0byBidWlsZC5cbiAqL1xuZnVuY3Rpb24gQmluYXJ5VHJlZUZhY3RvcnkoKSB7fVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIHRoZSBpbmNvbWluZyBsZWFmIGludG8gYW4gW0JpbmFyeVRyZWVFbGVtZW50XVxuICAgKiBUaGUgaWRlYSB3aXRoIHRoaXMgZnVuY3Rpb24gaXMgdGhhdCBpdCBjYW4gYmUgcmVjdXJzaXZlIChpZiB0aGUgbGVhZiBpbiB0dXJuIGlzIGNvbXBsZXggb2JqZWN0IHdpdGggc3ViIG9iamVjdHMpLlxuICAgKlxuICAgKiBOb3RlOiBJZiB3ZSBkb24ndCBoYXZlIGEgcGF0aCBoZXJlIHdlIGNhbiB0cnkgdG8gZmluZCB0aGUgbGVhZiBpbiB0aGUgY2FjaGUuXG4gICAqIFxuICAgKiBAcGFyYW0gbGVhZiB0aGUgcmF3IGRhdGEgd2Ugc2hvdWxkIHdyYXAgaW4gYSBsZWFmXG4gICAqIEBwYXJhbSBwYXRocyBhIGNvbGxlY3Rpb24gb2YgcHJvb2YgcGF0aHMgdGhhdCBtaWdodCBwb2ludCB0byB0aGlzIGxlYWZcbiAgICogQHJldHVybiB0aGUgcmVzdWx0aW5nIFtCaW5hcnlUcmVlRWxlbWVudF0gdGhlIGxlYWYgZ290IGNvbnZlcnRlZCB0b1xuICAgKi9cbiAgQmluYXJ5VHJlZUZhY3RvcnkucHJvdG90eXBlLmhhbmRsZUxlYWYgPSBmdW5jdGlvbihsZWFmLCBwYXRocywgaXNSb290PWZhbHNlKSB7XG4gICAgaWYgKHBhdGhzLmxlbmd0aCA9PSAwICYmICFpc1Jvb3QpIHtcbiAgICAgIHJldHVybiB0aGlzLmlubmVySGFuZGxlTGVhZihsZWFmLCB0aGlzLmdldEVtcHR5UGF0aFNldCgpKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5pbm5lckhhbmRsZUxlYWYobGVhZiwgcGF0aHMpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFxuICAgKi9cbiAgQmluYXJ5VHJlZUZhY3RvcnkucHJvdG90eXBlLmdldEVtcHR5UGF0aFNldCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBOT19QQVRIU1xuICB9XG5cbiAgLyoqXG4gICAqIEF0IHRoaXMgcG9pbnQgd2Ugc2hvdWxkIGhhdmUgbG9va2VkIGluIGNhY2hlLlxuICAgKiBcbiAgICogQHBhcmFtIGxlYWYgd2Ugc2hvdWxkIHR1cm4gaW50byBhIHRyZWUgZWxlbWVudFxuICAgKiBAcGFyYW0ge1BhdGhTZXR9IHBhdGhzXG4gICAqIEByZXR1cm4gdGhlIHRyZWUgZWxlbWVudCB3ZSBjcmVhdGVkLlxuICAgKi9cbiAgQmluYXJ5VHJlZUZhY3RvcnkucHJvdG90eXBlLmlubmVySGFuZGxlTGVhZiA9IGZ1bmN0aW9uKGxlYWYsIHBhdGhzKSB7XG4gICAgaWYgKGxlYWYgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlUHJpbWl0aXZlTGVhZihsZWFmLCBwYXRocylcbiAgICB9XG4gICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihsZWFmKSkge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlUHJpbWl0aXZlTGVhZihsZWFmLCBwYXRocylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBsZWFmID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlUHJpbWl0aXZlTGVhZihsZWFmLCBwYXRocylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBsZWFmID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlUHJpbWl0aXZlTGVhZihsZWFmLCBwYXRocylcbiAgICB9XG4gICAgaWYgKGxlYWYuY29uc3RydWN0b3IgPT09IEFycmF5KSB7XG4gICAgICByZXR1cm4gdGhpcy5idWlsZEZyb21BcnJheShsZWFmLCBwYXRocylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBsZWFmID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRGcm9tRGljdGlvbmFyeShsZWFmLCBwYXRocylcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0aW5nIGRhdGEgdHlwZVwiKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBKdXN0IGxpa2UgW2hhbmRsZUxlYWZdIGJ1dCB3ZSBrbm93IHRoYXQgdGhpcyBsZWFmIHNob3VsZCBub3QgYmUgYSBjb21wbGV4IHR5cGUsIGJ1dCBzb21ldGhpbmcgd2UgY2FuXG4gICAqIGltbWVkaWF0ZWx5IHdyYXBcbiAgICogXG4gICAqIEBwYXJhbSBsZWFmIFxuICAgKiBAcGFyYW0ge1BhdGhTZXR9IHBhdGhzIFxuICAgKi9cbiAgQmluYXJ5VHJlZUZhY3RvcnkucHJvdG90eXBlLmhhbmRsZVByaW1pdGl2ZUxlYWYgPSBmdW5jdGlvbihsZWFmLCBwYXRocykge1xuICAgIHZhciBwYXRoRWxlbSA9IHBhdGhzLmdldFBhdGhMZWFmT3JFbHNlQW55Q3VycmVudFBhdGhFbGVtZW50KClcbiAgICBpZiAocGF0aEVsZW0gIT0gbnVsbCAmJiAhKHBhdGhFbGVtIGluc3RhbmNlb2YgUGF0aExlYWZFbGVtZW50KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXRoIGRvZXMgbm90IG1hdGNoIHRoZSB0cmVlIHN0cnVjdHVyZS4gV2UgYXJlIGF0IGEgbGVhZiBcIiArIGxlYWYgKyBcIiBidXQgZm91bmQgcGF0aCBlbGVtZW50IFwiICsgcGF0aEVsZW0pXG4gICAgfVxuICAgIHJldHVybiBuZXcgTGVhZihsZWFmLCBwYXRoRWxlbSlcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxscyBpdHNlbGYgdW50aWwgdGhlIHJldHVybiB2YWx1ZSBvbmx5IGhvbGRzIDEgZWxlbWVudFxuICAgKiBcbiAgICogTm90ZTogVGhpcyBtZXRob2QgY2FuIG9ubHkgY3JlYXRlIHN0YW5kYXJkIFtOb2RlXSB0aGF0IGZpbGxzIHVwIHRoZSBhcmVhIGJldHdlZW4gdGhlIFwidG9wXCIgYW5kIHRoZSBsZWF2ZXMuXG4gICAqICAgICAgICBUaGVzZSBcImluLWJldHdlZW5cIiBub2RlcyBjYW5ub3QgYmUgXCJwYXRoIGxlYWZcIiBvciBoYXZlIGFueSBpbnRlcmVzdGluZyBwcm9wZXJ0aWVzLlxuICAgKiBcbiAgICogQHBhcmFtIGxheWVyIFdoYXQgbGF5ZXIgd2UgYWltIGNhbGN1bGF0ZVxuICAgKiBAcGFyYW0gaW5MaXN0IFRoZSBhcmdzIG9mIG5vZGVzIHdlIHNob3VsZCBidWlsZCBmcm9tXG4gICAqIEByZXR1cm4gQWxsIFtCaW5hcnlUcmVlRWxlbWVudF0gbm9kZXMgb2YgdGhlIG5leHQgbGF5ZXJcbiAgICovXG4gIEJpbmFyeVRyZWVGYWN0b3J5LnByb3RvdHlwZS5idWlsZEhpZ2hlckxheWVyID0gZnVuY3Rpb24obGF5ZXIsIGluTGlzdCkge1xuICAgIGlmIChpbkxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCB3b3JrIG9uIGVtcHR5IGFycmF5cy4gTGF5ZXI6IFwiICsgbGF5ZXIpXG4gICAgfSBlbHNlIGlmIChpbkxpc3QubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBpbkxpc3RcbiAgICB9XG5cbiAgICB2YXIgcmV0dXJuQXJyYXkgPSBuZXcgQXJyYXkoKVxuICAgIHZhciBuck9mTm9kZXNUb0NyZWF0ZSA9IE1hdGguZmxvb3IoaW5MaXN0Lmxlbmd0aCAvIDIpXG4gICAgdmFyIGxlZnRWYWx1ZSA9IG51bGxcbiAgICB2YXIgaXNMZWZ0ID0gdHJ1ZVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5MaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoaXNMZWZ0KSB7XG4gICAgICAgIGxlZnRWYWx1ZSA9IGluTGlzdFtpXVxuICAgICAgICBpc0xlZnQgPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHRlbXBOb2RlID0gbmV3IE5vZGUobGVmdFZhbHVlLCBpbkxpc3RbaV0pXG4gICAgICAgIHJldHVybkFycmF5LnB1c2godGVtcE5vZGUpXG4gICAgICAgIG5yT2ZOb2Rlc1RvQ3JlYXRlLS1cbiAgICAgICAgaXNMZWZ0ID0gdHJ1ZVxuICAgICAgICBsZWZ0VmFsdWUgPSBudWxsXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFpc0xlZnQpIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgb2RkIG51bWJlciBvZiBub2RlcywgdGhlbiBtb3ZlIHRoZSBsYXN0IG5vZGUgdXAgb25lIGxldmVsXG4gICAgICAgIHJldHVybkFycmF5LnB1c2gobGVmdFZhbHVlKVxuICAgIH1cblxuICAgIC8vIEV4dHJhIGNoZWNrXG4gICAgaWYgKG5yT2ZOb2Rlc1RvQ3JlYXRlICE9IDApIHtcbiAgICAgIHV0aWwubG9nRGVidWcoXCJXaHkgZGlkbid0IHdlIGJ1aWxkIGV4YWN0bHkgdGhlIGNvcnJlY3QgYW1vdW50PyBMYXllcjogXCIgKyBsYXllciArIFwiICwgcmVzaWR1ZTogXCIgKyBuck9mTm9kZXNUb0NyZWF0ZSArXCIgLCBpbnB1dCBhcmdzIHNpemU6IFwiICsgaW5MaXN0Lmxlbmd0aCArIFwiLlwiKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmJ1aWxkSGlnaGVyTGF5ZXIoKGxheWVyICsgMSksIHJldHVybkFycmF5KVxuICB9XG5cbiAgQmluYXJ5VHJlZUZhY3RvcnkucHJvdG90eXBlLmJ1aWxkID0gZnVuY3Rpb24oZGF0YSkge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkV2l0aFBhdGgoZGF0YSwgTk9fUEFUSFMpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtQYXRoU2V0fSBwYXRoc1xuICAgKi9cbiAgQmluYXJ5VHJlZUZhY3RvcnkucHJvdG90eXBlLmJ1aWxkV2l0aFBhdGggPSBmdW5jdGlvbihkYXRhLCBwYXRocykge1xuICAgIHZhciByZXN1bHQgPSB0aGlzLmhhbmRsZUxlYWYoZGF0YSwgcGF0aHMsIHRydWUpXG5cbiAgICByZXR1cm4gbmV3IEJpbmFyeVRyZWUocmVzdWx0KVxuICB9XG4gIC8qKlxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheVxuICAgKiBAcGFyYW0ge1BhdGhTZXR9IHBhdGhzXG4gICAqL1xuICBCaW5hcnlUcmVlRmFjdG9yeS5wcm90b3R5cGUuYnVpbGRGcm9tQXJyYXkgPSBmdW5jdGlvbihhcnJheSwgcGF0aHMpIHtcbiAgICB2YXIgcGF0aEVsZW0gPSAgcGF0aHMuZ2V0UGF0aExlYWZPckVsc2VBbnlDdXJyZW50UGF0aEVsZW1lbnQoKVxuXG4gICAgLy8gMS4gQnVpbGQgbGVhZiBsYXllclxuICAgIGlmIChhcnJheS5sZW5ndGggPT0gMCkge1xuICAgICAgcmV0dXJuIG5ldyBBcnJheUhlYWROb2RlKG5ldyBFbXB0eUxlYWYoKSwgbmV3IEVtcHR5TGVhZigpLCBhcnJheSwgMCwgMCwgcGF0aEVsZW0pXG4gICAgfVxuXG4gICAgdmFyIGxlYWZBcnJheSA9IHRoaXMuYnVpbGRMZWFmRWxlbWVudHMoYXJyYXksIHBhdGhzKVxuXG4gICAgLy8gMi4gQnVpbGQgYWxsIGhpZ2hlciBsYXllcnNcbiAgICB2YXIgcmVzdWx0ID0gdGhpcy5idWlsZEhpZ2hlckxheWVyKDEsIGxlYWZBcnJheSlcblxuICAgIC8vIDMuIEZpeCBhbmQgcmV0dXJuIHRoZSByb290IG5vZGVcbiAgICB2YXIgb3JnUm9vdCA9IHJlc3VsdFswXVxuICAgIGlmIChvcmdSb290IGluc3RhbmNlb2YgTm9kZSkge1xuICAgICAgcmV0dXJuIG5ldyBBcnJheUhlYWROb2RlKG9yZ1Jvb3QubGVmdCwgb3JnUm9vdC5yaWdodCwgYXJyYXksIGFycmF5Lmxlbmd0aCwgcGF0aEVsZW0pXG4gICAgfVxuICAgIGlmIChvcmdSb290IGluc3RhbmNlb2YgTGVhZikge1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRGcm9tT25lTGVhZihhcnJheSwgb3JnUm9vdCwgcGF0aEVsZW0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNob3VsZCBub3QgZmluZCBlbGVtZW50IG9mIHRoaXMgdHlwZSBoZXJlXCIpXG4gICAgfVxufVxuXG4vKipcbiAqIFxuICovXG5CaW5hcnlUcmVlRmFjdG9yeS5wcm90b3R5cGUuYnVpbGRGcm9tT25lTGVhZiA9IGZ1bmN0aW9uKGFycmF5LCBvcmdSb290LCBwYXRoRWxlbSkge1xuICBpZiAoYXJyYXkubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSG93IGNvbWUgd2UgZ290IGEgbGVhZiByZXR1cm5lZCB3aGVuIHdlIGhhZCBcIiArIGFycmF5Lmxlbmd0aCArIFwiIGVsZW1lbnRzIGlzIHRoZSBhcmdzP1wiKVxuICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBBcnJheUhlYWROb2RlKG9yZ1Jvb3QsIG5ldyBFbXB0eUxlYWYoKSwgYXJyYXksIGFycmF5Lmxlbmd0aCwgcGF0aEVsZW0pXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge1BhdGhTZXR9IHBhdGhzXG4gKi9cbkJpbmFyeVRyZWVGYWN0b3J5LnByb3RvdHlwZS5idWlsZExlYWZFbGVtZW50cyA9IGZ1bmN0aW9uKGxlYWZMaXN0LCBwYXRocykge1xuICB2YXIgbGVhZkFycmF5ID0gbmV3IEFycmF5KClcbiAgdmFyIG9ubHlBcnJheVBhdGhzID0gcGF0aHMua2VlcE9ubHlBcnJheVBhdGhzKCkgLy8gRm9yIHBlcmZvcm1hbmNlLCBzaW5jZSB3ZSB3aWxsIGxvb3Agc29vblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlYWZMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHBhdGhzUmVsZXZhbnRGb3JUaGlzTGVhZiA9IG9ubHlBcnJheVBhdGhzLmdldFRhaWxJZkZpcnN0RWxlbWVudElzQXJyYXlPZlRoaXNJbmRleEZyb21MaXN0KGkpXG4gICAgdmFyIGxlYWYgPSBsZWFmTGlzdFtpXVxuICAgIHZhciBiaW5hcnlUcmVlRWxlbWVudCA9IHRoaXMuaGFuZGxlTGVhZihsZWFmLCBwYXRoc1JlbGV2YW50Rm9yVGhpc0xlYWYpXG4gICAgbGVhZkFycmF5LnB1c2goYmluYXJ5VHJlZUVsZW1lbnQpXG4gIH1cblxuICByZXR1cm4gbGVhZkFycmF5XG59XG5cbi8qKlxuICogQHBhcmFtIHtQYXRoU2V0fSBwYXRoc1xuICovXG5CaW5hcnlUcmVlRmFjdG9yeS5wcm90b3R5cGUuYnVpbGRGcm9tRGljdGlvbmFyeSA9IGZ1bmN0aW9uKGRpY3QsIHBhdGhzKSB7XG4gIHZhciBwYXRoRWxlbSA9IHBhdGhzLmdldFBhdGhMZWFmT3JFbHNlQW55Q3VycmVudFBhdGhFbGVtZW50KClcbiAgLy8gTmVlZHMgdG8gYmUgc29ydGVkLCBvciBlbHNlIHRoZSBvcmRlciBpcyB1bmRlZmluZWRcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhkaWN0KS5zb3J0KClcbiAgaWYgKGtleXMubGVuZ3RoID09IDApIHtcbiAgICAgIHJldHVybiBuZXcgRGljdEhlYWROb2RlKG5ldyBFbXB0eUxlYWYoKSwgbmV3IEVtcHR5TGVhZigpLCBkaWN0LCBrZXlzLmxlbmd0aCwgMCwgcGF0aEVsZW0pXG4gIH1cblxuICAvLyAxLiBCdWlsZCBmaXJzdCAobGVhZikgbGF5ZXJcbiAgdmFyIGxlYWZBcnJheSA9IHRoaXMuYnVpbGRMZWFmRWxlbWVudEZyb21EaWN0KGtleXMsIGRpY3QsIHBhdGhzKVxuXG4gIC8vIDIuIEJ1aWxkIGFsbCBoaWdoZXIgbGF5ZXJzXG4gIHZhciByZXN1bHQgPSB0aGlzLmJ1aWxkSGlnaGVyTGF5ZXIoMSwgbGVhZkFycmF5KVxuXG4gIC8vIDMuIEZpeCBhbmQgcmV0dXJuIHRoZSByb290IG5vZGVcbiAgdmFyIG9yZ1Jvb3QgPSByZXN1bHRbMF1cbiAgaWYgKG9yZ1Jvb3QgaW5zdGFuY2VvZiBOb2RlKSB7XG4gICAgcmV0dXJuIG5ldyBEaWN0SGVhZE5vZGUob3JnUm9vdC5sZWZ0LCBvcmdSb290LnJpZ2h0LCBkaWN0LCBrZXlzLmxlbmd0aCwgcGF0aEVsZW0pXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU2hvdWxkIG5vdCBmaW5kIGVsZW1lbnQgb2YgdGhpcyB0eXBlIGhlcmU6IFwiICsgdHlwZW9mIG9yZ1Jvb3QpXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge1BhdGhTZXR9IHBhdGhzXG4gKi9cbkJpbmFyeVRyZWVGYWN0b3J5LnByb3RvdHlwZS5idWlsZExlYWZFbGVtZW50RnJvbURpY3QgPSBmdW5jdGlvbihrZXlzLCBkaWN0LCBwYXRocykge1xuICB2YXIgbGVhZkFycmF5ID0gbmV3IEFycmF5KClcbiAgdmFyIG9ubHlEaWN0UGF0aHMgPSBwYXRocy5rZWVwT25seURpY3RQYXRocygpIC8vIEZvciBwZXJmb3JtYW5jZSwgc2luY2Ugd2Ugd2lsbCBsb29wIHNvb25cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAvLyBUaGUga2V5IGNhbm5vdCBub3QgYmUgcHJvdmVkLCBzbyBOT19QQVRIU1xuICAgIHZhciBrZXkgPSBrZXlzW2ldXG4gICAgdmFyIGtleUVsZW1lbnQgPSB0aGlzLmhhbmRsZUxlYWYoa2V5LCBOT19QQVRIUykgXG4gICAgbGVhZkFycmF5LnB1c2goa2V5RWxlbWVudClcblxuICAgIHZhciBjb250ZW50ID0gZGljdFtrZXldXG4gICAgdmFyIHBhdGhzUmVsZXZhbnRGb3JUaGlzTGVhZiA9IG9ubHlEaWN0UGF0aHMuZ2V0VGFpbElmRmlyc3RFbGVtZW50SXNEaWN0T2ZUaGlzS2V5RnJvbUxpc3Qoa2V5KVxuICAgIHZhciBjb250ZW50RWxlbWVudCA9IHRoaXMuaGFuZGxlTGVhZihjb250ZW50LCBwYXRoc1JlbGV2YW50Rm9yVGhpc0xlYWYpXG4gICAgbGVhZkFycmF5LnB1c2goY29udGVudEVsZW1lbnQpXG4gIH1cbiAgXG4gIHJldHVybiBsZWFmQXJyYXlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7QmluYXJ5VHJlZUZhY3Rvcnl9IiwidmFyIHNlcmlhbGl6YXRpb24gPSByZXF1aXJlKCcuLi9ndHgvc2VyaWFsaXphdGlvbicpXG52YXIgSEFTSF9QUkVGSVhfTEVBRiA9IHJlcXVpcmUoJy4vYmluYXJ5dHJlZScpLkhBU0hfUFJFRklYX0xFQUZcbnZhciBlbmNyeXB0aW9uID0gcmVxdWlyZSgnLi4vLi4vc3JjL2VuY3J5cHRpb24vZW5jcnlwdGlvbicpXG5cbmZ1bmN0aW9uIENyeXB0b1N5c3RlbSgpIHt9XG5DcnlwdG9TeXN0ZW0ucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uKGJ1ZmZlcikge1xuICByZXR1cm4gZW5jcnlwdGlvbi5oYXNoMjU2KGJ1ZmZlcilcbn1cblxuLyoqXG4gKiBcbiAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgXG4gKiBAcGFyYW0ge0NyeXB0b1N5c3RlbX0gY3J5cHRvU3lzdGVtIFxuICovXG5mdW5jdGlvbiBoYXNoaW5nRnVuKGJ1ZmZlciwgY3J5cHRvU3lzdGVtKSB7XG4gIGlmIChjcnlwdG9TeXN0ZW0gPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0aGUgQ3J5cHRvU3lzdGVtIHRvIGNhbGN1bGF0ZSB0aGUgaGFzaFwiKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBjcnlwdG9TeXN0ZW0uZGlnZXN0KGJ1ZmZlcilcbiAgfVxufVxuXG4vKipcbiAqIFxuICogQHBhcmFtIHtDcnlwdG9TeXN0ZW19IGNyeXB0b1N5c3RlbSBcbiAqL1xuZnVuY3Rpb24gTWVya2xlSGFzaENhbGN1bGF0b3IoY3J5cHRvU3lzdGVtKSB7XG4gIHRoaXMuY3J5cHRvU3lzdGVtID0gY3J5cHRvU3lzdGVtXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHByZWZpeFxuICogQHBhcmFtIHtCdWZmZXJ9IGhhc2hMZWZ0XG4gKiBAcGFyYW0ge0J1ZmZlcn0gaGFzaFJpZ2h0XG4gKi9cbk1lcmtsZUhhc2hDYWxjdWxhdG9yLnByb3RvdHlwZS5jYWxjdWxhdGVOb2RlSGFzaCA9IGZ1bmN0aW9uKHByZWZpeCwgaGFzaExlZnQsIGhhc2hSaWdodCkge1xuICByZXR1cm4gdGhpcy5jYWxjdWxhdGVOb2RlSGFzaEludGVybmFsKHByZWZpeCwgaGFzaExlZnQsIGhhc2hSaWdodCwgaGFzaGluZ0Z1bilcbn1cblxuLyoqXG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKi9cbk1lcmtsZUhhc2hDYWxjdWxhdG9yLnByb3RvdHlwZS5jYWxjdWxhdGVMZWFmSGFzaCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLmNhbGN1bGF0ZUhhc2hPZlZhbHVlSW50ZXJuYWwodmFsdWUsIHNlcmlhbGl6YXRpb24uZW5jb2RlVmFsdWUsIGhhc2hpbmdGdW4pXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHByZWZpeFxuICogQHBhcmFtIHtCdWZmZXJ9IGhhc2hMZWZ0XG4gKiBAcGFyYW0ge0J1ZmZlcn0gaGFzaFJpZ2h0XG4gKi9cbk1lcmtsZUhhc2hDYWxjdWxhdG9yLnByb3RvdHlwZS5jYWxjdWxhdGVOb2RlSGFzaEludGVybmFsID0gZnVuY3Rpb24ocHJlZml4LCBoYXNoTGVmdCwgaGFzaFJpZ2h0LCBoYXNoRnVuYykge1xuICB2YXIgYnVmID0gQnVmZmVyLmFsbG9jKDEpXG4gIGJ1Zi53cml0ZUludDgocHJlZml4KVxuICB2YXIgYnVmZmVyU3VtID0gQnVmZmVyLmNvbmNhdChbYnVmLCBoYXNoTGVmdCwgaGFzaFJpZ2h0XSlcbiAgcmV0dXJuIGhhc2hGdW5jKGJ1ZmZlclN1bSwgdGhpcy5jcnlwdG9TeXN0ZW0pXG59XG5cbk1lcmtsZUhhc2hDYWxjdWxhdG9yLnByb3RvdHlwZS5jYWxjdWxhdGVIYXNoT2ZWYWx1ZUludGVybmFsID0gZnVuY3Rpb24odmFsdWV0b0hhc2gsIHNlcmlhbGl6ZUZ1biwgaGFzaEZ1bmMpIHtcbiAgdmFyIGJ1ZiA9IEJ1ZmZlci5hbGxvYygxKVxuICBidWYud3JpdGVJbnQ4KEhBU0hfUFJFRklYX0xFQUYpXG4gIHZhciBidWZmZXJTdW0gPSBCdWZmZXIuY29uY2F0KFtidWYsIHNlcmlhbGl6ZUZ1bih2YWx1ZXRvSGFzaCldKVxuICByZXR1cm4gaGFzaEZ1bmMoYnVmZmVyU3VtLCB0aGlzLmNyeXB0b1N5c3RlbSlcbn1cblxuTWVya2xlSGFzaENhbGN1bGF0b3IucHJvdG90eXBlLmlzQ29udGFpbmVyUHJvb2ZWYWx1ZUxlYWYgPSBmdW5jdGlvbih2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGlmICh2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gQXJyYXkgfHwgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB0cnVlXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7TWVya2xlSGFzaENhbGN1bGF0b3IsIENyeXB0b1N5c3RlbX07IiwiXCJ1c2Ugc3RyaWN0XCJcblxudmFyIHV0aWwgPSByZXF1aXJlKCcuLi9mb3JtYXR0ZXInKTtcblxuZnVuY3Rpb24gUGF0aEVsZW1lbnQocHJldmlvdXMpIHtcbiAgdGhpcy5wcmV2aW91cyA9IHByZXZpb3VzXG59XG5QYXRoRWxlbWVudC5wcm90b3R5cGUuZ2V0U2VhcmNoS2V5ID0gZnVuY3Rpb24oKSB7fVxuXG5mdW5jdGlvbiBQYXRoTGVhZkVsZW1lbnQocHJldmlvdXMpIHtcbiAgUGF0aEVsZW1lbnQuY2FsbCh0aGlzLCBwcmV2aW91cylcbn1cblBhdGhMZWFmRWxlbWVudC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFBhdGhFbGVtZW50LnByb3RvdHlwZSlcblBhdGhMZWFmRWxlbWVudC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBQYXRoTGVhZkVsZW1lbnRcblBhdGhMZWFmRWxlbWVudC5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24ob3RoZXIpIHtcbiAgaWYgKHRoaXMgPT09IG90aGVyKSByZXR1cm4gdHJ1ZVxuICBpZiAodHlwZW9mIHRoaXMgIT09IHR5cGVvZiBvdGhlcikgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB0cnVlXG59XG5cblxuZnVuY3Rpb24gU2VhcmNoYWJsZVBhdGhFbGVtZW50KHByZXZpb3VzKSB7XG4gIFBhdGhFbGVtZW50LmNhbGwodGhpcywgcHJldmlvdXMpXG59XG5TZWFyY2hhYmxlUGF0aEVsZW1lbnQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShQYXRoRWxlbWVudC5wcm90b3R5cGUpXG5TZWFyY2hhYmxlUGF0aEVsZW1lbnQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU2VhcmNoYWJsZVBhdGhFbGVtZW50XG5TZWFyY2hhYmxlUGF0aEVsZW1lbnQucHJvdG90eXBlLmdldFNlYXJjaEtleSA9IGZ1bmN0aW9uKCkge31cblxuLyoqXG4gKiBcbiAqIEBwYXJhbSB7U2VhcmNoYWJsZVBhdGhFbGVtZW50fSBwcmV2aW91cyBcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBcbiAqL1xuZnVuY3Rpb24gQXJyYXlQYXRoRWxlbWVudChwcmV2aW91cywgaW5kZXgpIHtcbiAgU2VhcmNoYWJsZVBhdGhFbGVtZW50LmNhbGwodGhpcywgcHJldmlvdXMpXG4gIHRoaXMuaW5kZXggPSBpbmRleFxufVxuQXJyYXlQYXRoRWxlbWVudC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNlYXJjaGFibGVQYXRoRWxlbWVudC5wcm90b3R5cGUpXG5BcnJheVBhdGhFbGVtZW50LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEFycmF5UGF0aEVsZW1lbnRcblxuQXJyYXlQYXRoRWxlbWVudC5wcm90b3R5cGUuZ2V0U2VhcmNoS2V5ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmluZGV4XG59XG4vKipcbiAqIEBwYXJhbSB7QXJyYXlQYXRoRWxlbWVudH0gb3RoZXJcbiAqL1xuQXJyYXlQYXRoRWxlbWVudC5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24ob3RoZXIpIHtcbiAgaWYgKHRoaXMgPT09IG90aGVyKSByZXR1cm4gdHJ1ZVxuICBpZiAodHlwZW9mIHRoaXMgIT09IHR5cGVvZiBvdGhlcikgcmV0dXJuIGZhbHNlXG5cbiAgaWYgKHRoaXMuaW5kZXggIT0gb3RoZXIuaW5kZXgpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdHJ1ZVxufVxuXG5cbi8qKlxuICogXG4gKiBAcGFyYW0ge1NlYXJjaGFibGVQYXRoRWxlbWVudH0gcHJldmlvdXMgXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFxuICovXG5mdW5jdGlvbiBEaWN0UGF0aEVsZW1lbnQocHJldmlvdXMsIGtleSkge1xuICBTZWFyY2hhYmxlUGF0aEVsZW1lbnQuY2FsbCh0aGlzLCBwcmV2aW91cylcbiAgdGhpcy5rZXkgPSBrZXlcbn1cbkRpY3RQYXRoRWxlbWVudC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNlYXJjaGFibGVQYXRoRWxlbWVudC5wcm90b3R5cGUpXG5EaWN0UGF0aEVsZW1lbnQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRGljdFBhdGhFbGVtZW50XG5cbkRpY3RQYXRoRWxlbWVudC5wcm90b3R5cGUuZ2V0U2VhcmNoS2V5ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmtleVxufVxuXG4vKipcbiAqIEBwYXJhbSB7RGljdFBhdGhFbGVtZW50fSBvdGhlclxuICovXG5EaWN0UGF0aEVsZW1lbnQucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uKG90aGVyKSB7XG4gIGlmICh0aGlzID09PSBvdGhlcikgcmV0dXJuIHRydWVcbiAgaWYgKHR5cGVvZiB0aGlzICE9PSB0eXBlb2Ygb3RoZXIpIHJldHVybiBmYWxzZVxuXG4gIGlmICh0aGlzLmtleSAhPSBvdGhlci5rZXkpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiAqIFxuICogQHBhcmFtIHtBcnJheX0gcGF0aEVsZW1lbnRzXG4gKi9cbmZ1bmN0aW9uIFBhdGgocGF0aEVsZW1lbnRzKSB7XG4gIHRoaXMucGF0aEVsZW1lbnRzID0gcGF0aEVsZW1lbnRzXG59XG5cbi8qKlxuICogXG4gKi9cblBhdGgucHJvdG90eXBlLmdldEN1cnJlbnRQYXRoRWxlbWVudCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5wYXRoRWxlbWVudHNbMF1cbn1cblxuLyoqXG4gKiBcbiAqL1xuUGF0aC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5wYXRoRWxlbWVudHMubGVuZ3RoXG59XG4vKipcbiAqIFxuICovXG5QYXRoLnByb3RvdHlwZS50YWlsID0gZnVuY3Rpb24oKSB7XG4gIGlmICh0aGlzLnBhdGhFbGVtZW50cy5sZW5ndGggPT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkltcG9zc2libGUgdG8gdGFpbCB0aGlzIGFycmF5XCIpXG4gIH0gZWxzZSB7XG4gICAgdmFyIHRhaWwgPSB0aGlzLnBhdGhFbGVtZW50cy5zbGljZSgxKVxuICAgIHJldHVybiBuZXcgUGF0aCh0YWlsKVxuICB9XG59XG5cblBhdGgucHJvdG90eXBlLmRlYnVnU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzYiA9IFwiXCJcbiAgdGhpcy5wYXRoRWxlbWVudHMuZm9yRWFjaChlbGVtID0+IHtcbiAgICBpZiAoZWxlbSBpbnN0YW5jZW9mIFNlYXJjaGFibGVQYXRoRWxlbWVudCkge1xuICAgICAgc2IgPSBzYiArIFwiLT4gXCIgKyBlbGVtLmdldFNlYXJjaEtleSgpXG4gICAgfSBlbHNlIGlmIChlbGVtIGluc3RhbmNlb2YgUGF0aExlYWZFbGVtZW50KSB7XG4gICAgICBzYiA9IHNiICsgXCItPiBMZWFmXCJcbiAgICB9XG4gIH0pXG4gIHJldHVybiBzYlxufVxuLyoqXG4gKiBAcGFyYW0ge1BhdGh9IG90aGVyXG4gKi9cblBhdGgucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uKG90aGVyKSB7XG4gIGlmICh0aGlzID09PSBvdGhlcikgcmV0dXJuIHRydWVcbiAgaWYgKHR5cGVvZiB0aGlzICE9IHR5cGVvZiBvdGhlcikgcmV0dXJuIGZhbHNlXG5cbiAgcmV0dXJuIHRoaXMucGF0aEVsZW1lbnRzID09IG90aGVyLnBhdGhFbGVtZW50cyAgXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge1BhdGh9IHBhdGhcbiAqL1xudmFyIGdldFRhaWxJZkZpcnN0RWxlbWVudElzQXJyYXlPZlRoaXNJbmRleCA9IGZ1bmN0aW9uKGluZGV4LCBwYXRoKSB7XG4gIHJldHVybiBnZXRUYWlsKGluZGV4LCBwYXRoKVxufVxuXG4vKipcbiAqIFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBcbiAqIEBwYXJhbSB7UGF0aH0gcGF0aCBcbiAqL1xudmFyIGdldFRhaWxJZkZpcnN0RWxlbWVudElzRGljdE9mVGhpc0tleSA9IGZ1bmN0aW9uKGtleSwgcGF0aCkge1xuICByZXR1cm4gZ2V0VGFpbChrZXksIHBhdGgpXG59XG5cbi8qKlxuICogXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHNlYXJjaEtleSBcbiAqIEBwYXJhbSB7UGF0aH0gcGF0aCBcbiAqL1xudmFyIGdldFRhaWwgPSBmdW5jdGlvbihzZWFyY2hLZXksIHBhdGgpIHtcbiAgaWYgKHNlYXJjaEtleSA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkhhdmUgdG8gcHJvdmlkZSBhIHNlYXJjaCBrZXlcIilcbiAgfVxuXG4gIHRyeSB7XG4gICAgdmFyIGZpcnN0RWxlbWVudCA9IHBhdGgucGF0aEVsZW1lbnRzWzBdXG4gICAgaWYgKGZpcnN0RWxlbWVudCBpbnN0YW5jZW9mIFNlYXJjaGFibGVQYXRoRWxlbWVudCkge1xuICAgICAgaWYgKGZpcnN0RWxlbWVudC5nZXRTZWFyY2hLZXkoKSA9PSBzZWFyY2hLZXkpIHsgICBcbiAgICAgICAgcmV0dXJuIHBhdGgudGFpbCgpXG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB1dGlsLmxvZ0Vycm9yKFwiV2h5IGFyZSB3ZSBkcm9wcGluZyBmaXJzdCBlbGVtZW50IG9mIGFuIGVtcHR5IHBhdGg/IFwiICsgZXJyKVxuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuLyoqXG4gKiBcbiAqIEBwYXJhbSB7QXJyYXl9IHBhdGhzXG4gKi9cbmZ1bmN0aW9uIFBhdGhTZXQocGF0aHMpIHtcbiAgdGhpcy5wYXRocyA9IHBhdGhzXG59XG5cbi8qKlxuICogXG4gKi9cblBhdGhTZXQucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMucGF0aHMubGVuZ3RoID09IDBcbn1cblxuLyoqXG4gKiBcbiAqL1xuUGF0aFNldC5wcm90b3R5cGUuZ2V0UGF0aExlYWZPckVsc2VBbnlDdXJyZW50UGF0aEVsZW1lbnQgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGxlYWZFbGVtID0gbnVsbFxuICB2YXIgY3VyckVsZW0gPSBudWxsXG4gIHZhciBwcmV2ID0ge1xuICAgIFwicGF0aFwiOiBudWxsLFxuICAgIFwiZWxlbVwiOiBudWxsLFxuICB9XG4gIHRoaXMucGF0aHMuZm9yRWFjaChwYXRoID0+IHtcbiAgICBjdXJyRWxlbSA9IHBhdGguZ2V0Q3VycmVudFBhdGhFbGVtZW50KClcbiAgICBpZiAoY3VyckVsZW0gaW5zdGFuY2VvZiBQYXRoTGVhZkVsZW1lbnQpIHtcbiAgICAgIGxlYWZFbGVtID0gY3VyckVsZW1cbiAgICB9XG4gICAgcHJldiA9IHRoaXMuZXJyb3JDaGVja1VuZXF1YWxQYXJlbnQocGF0aCwgY3VyckVsZW0sIHByZXYucGF0aCwgcHJldi5lbGVtKVxuICB9KVxuXG4gIGlmIChsZWFmRWxlbSAhPSBudWxsKSB7XG4gICAgcmV0dXJuIGxlYWZFbGVtXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGN1cnJFbGVtIC8vIEl0IGRvZXNuJ3QgbWF0dGVyIHdoaWNoIG9uZSB3ZSByZXR1cm4gKE5leHQgc3RlcCB3ZSB3aWxsIGdldCB0aGUgXCJwcmV2aW91c1wiIGZyb20gdGhpcyBvbmUpXG4gIH1cbn1cblxuLyoqXG4gKiBZZWFoLCB0aGlzIG1pZ2h0IGJlIGEgY29tcGxldGVseSB1bi1uZWVkZWQgY2hlY2sgKGJ1dCBpdCBNSUdIVCBzYXZlIHVzIGxhdGVyIG9uIGlmIHdlIGZvcmdldCB0aGlzIHJ1bGUpLlxuICogV2hhdCB3ZSBhcmUgbG9va2luZyBmb3IgaGVyZSBpcyBhbiBpbXBvc3NpYmxlIHN0YXRlIHdoZXJlIHR3byBwYXRocyBpbiB0aGUgc2FtZSBzZXQgZG9uJ3QgaGF2ZSB0aGUgc2FtZSBwYXJlbnQuXG4gKiAoU2luY2Ugd2UgdXN1YWxseSBvbmx5IGhhdmUgb25lIHBhdGggaW4gYSBwYXRoIHNldCwgdGhpcyBjaGVjayBzaG91bGQgYmUgY2hlYXApXG4gKiBcbiAqIEBwYXJhbSB7UGF0aH0gY3VyclBhdGhcbiAqIEBwYXJhbSB7UGF0aEVsZW1lbnR9IGN1cnJFbGVtXG4gKiBAcGFyYW0ge1BhdGh9IHByZXZQYXRoXG4gKiBAcGFyYW0ge1BhdGhFbGVtZW50fSBwcmV2RWxlbVxuICovXG5QYXRoU2V0LnByb3RvdHlwZS5lcnJvckNoZWNrVW5lcXVhbFBhcmVudCA9IGZ1bmN0aW9uKGN1cnJQYXRoLCBjdXJyRWxlbSwgcHJldlBhdGgsIHByZXZFbGVtKSB7XG4gIGlmIChwcmV2RWxlbSAhPSBudWxsKSB7XG4gICAgLy8gd2VpcmQ6IGphdmFzY3JpcHQgY2Fubm90IGNvbXBhcmUgbnVsbCA9PSBudWxsIHRoZW4gd2UgaGF2ZSB0byBjb21wYXJlIGVhY2ggd2l0aCBudWxsIHNlcGFyYXRlbHkgOihcbiAgICBpZiAoY3VyckVsZW0ucHJldmlvdXMgPT0gbnVsbCAmJiBwcmV2RWxlbS5wcmV2aW91cyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBcInBhdGhcIjogY3VyclBhdGgsXG4gICAgICAgIFwiZWxlbVwiOiBjdXJyRWxlbVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoKGN1cnJFbGVtLnByZXZpb3VzID09IG51bGwgJiYgcHJldkVsZW0ucHJldmlvdXMgIT0gbnVsbCkgfHwgKGN1cnJFbGVtLnByZXZpb3VzICE9IG51bGwgJiYgcHJldkVsZW0ucHJldmlvdXMgPT0gbnVsbCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNvbWV0aGluZyBpcyB3cm9uZywgdGhlc2UgcGF0aHMgZG8gbm90IGhhdmUgdGhlIHNhbWUgcGFyZW50LiAoXCIgKyBjdXJyUGF0aCArIFwiKSAoXCIgKyBwcmV2UGF0aCArIFwiKVwiKVxuICAgIH0gZWxzZSBpZiAoIWN1cnJFbGVtLnByZXZpb3VzLmVxdWFscyhwcmV2RWxlbS5wcmV2aW91cykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNvbWV0aGluZyBpcyB3cm9uZywgdGhlc2UgcGF0aHMgZG8gbm90IGhhdmUgdGhlIHNhbWUgcGFyZW50LiAoXCIgKyBjdXJyUGF0aCArIFwiKSAoXCIgKyBwcmV2UGF0aCArIFwiKVwiKVxuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIFwicGF0aFwiOiBjdXJyUGF0aCxcbiAgICBcImVsZW1cIjogY3VyckVsZW1cbiAgfVxufVxuXG4vKipcbiAqIFxuICovXG5QYXRoU2V0LnByb3RvdHlwZS5rZWVwT25seUFycmF5UGF0aHMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGZpbHRlcmVkUGF0aHMgPSB0aGlzLnBhdGhzLmZpbHRlcihwYXRoID0+IHtcbiAgICByZXR1cm4gcGF0aC5wYXRoRWxlbWVudHNbMF0gaW5zdGFuY2VvZiBBcnJheVBhdGhFbGVtZW50XG4gIH0pXG4gIHJldHVybiBuZXcgUGF0aFNldChmaWx0ZXJlZFBhdGhzKVxufVxuXG4vKipcbiAqIFxuICovXG5QYXRoU2V0LnByb3RvdHlwZS5rZWVwT25seURpY3RQYXRocyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgZmlsdGVyZWRQYXRocyA9IHRoaXMucGF0aHMuZmlsdGVyKHBhdGggPT4ge1xuICAgIHJldHVybiBwYXRoLnBhdGhFbGVtZW50c1swXSBpbnN0YW5jZW9mIERpY3RQYXRoRWxlbWVudFxuICB9KVxuICByZXR1cm4gbmV3IFBhdGhTZXQoZmlsdGVyZWRQYXRocylcbn1cblxuLyoqXG4gKiBcbiAqL1xuUGF0aFNldC5wcm90b3R5cGUuZ2V0VGFpbElmRmlyc3RFbGVtZW50SXNBcnJheU9mVGhpc0luZGV4RnJvbUxpc3QgPSBmdW5jdGlvbihpbmRleCkge1xuICByZXR1cm4gdGhpcy5nZXRUYWlsRnJvbUxpc3QoaW5kZXgsIGdldFRhaWxJZkZpcnN0RWxlbWVudElzQXJyYXlPZlRoaXNJbmRleClcbn1cblxuLyoqXG4gKiBcbiAqL1xuUGF0aFNldC5wcm90b3R5cGUuZ2V0VGFpbElmRmlyc3RFbGVtZW50SXNEaWN0T2ZUaGlzS2V5RnJvbUxpc3QgPSBmdW5jdGlvbihrZXkpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0VGFpbEZyb21MaXN0KGtleSwgZ2V0VGFpbElmRmlyc3RFbGVtZW50SXNEaWN0T2ZUaGlzS2V5KVxufVxuXG4vKipcbiAqIFxuICovXG5QYXRoU2V0LnByb3RvdHlwZS5nZXRUYWlsRnJvbUxpc3QgPSBmdW5jdGlvbihzZWFyY2hLZXksIGZpbHRlckZ1bmMpIHtcbiAgdmFyIHJldFBhdGhzID0gbmV3IEFycmF5KClcbiAgdGhpcy5wYXRocy5mb3JFYWNoKHBhdGggPT4ge1xuICAgIHZhciBuZXdQYXRoID0gZmlsdGVyRnVuYyhzZWFyY2hLZXksIHBhdGgpXG4gICAgaWYgKG5ld1BhdGggIT0gbnVsbCkge1xuICAgICAgcmV0UGF0aHMucHVzaChuZXdQYXRoKVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIG5ldyBQYXRoU2V0KHJldFBhdGhzKVxufVxuXG4vKipcbiAqIFxuICogQHBhcmFtIHtBcnJheX0gYXJyIFxuICovXG52YXIgYnVpbGRQYXRoRnJvbUFycmF5ID0gZnVuY3Rpb24oYXJyKSB7XG4gIHZhciBwYXRoRWxlbWVudHMgPSBuZXcgQXJyYXkoKVxuICB2YXIgbGFzdFBhdGhFbGVtID0gbnVsbFxuXG4gIGFyci5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgIHZhciBuZXdFbGVtID0gbnVsbFxuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicpIHtcbiAgICAgIG5ld0VsZW0gPSBuZXcgQXJyYXlQYXRoRWxlbWVudChsYXN0UGF0aEVsZW0sIGl0ZW0pXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG5ld0VsZW0gPSBuZXcgRGljdFBhdGhFbGVtZW50KGxhc3RQYXRoRWxlbSwgaXRlbSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQSBwYXRoIHN0cnVjdHVyZSBtdXN0IG9ubHkgY29uc2lzdCBvZiBJbnRzIGFuZCBTdHJpbmdzLCBub3QgXCIgKyBpdGVtKVxuICAgIH1cbiAgICBwYXRoRWxlbWVudHMucHVzaChuZXdFbGVtKVxuICAgIGxhc3RQYXRoRWxlbSA9IG5ld0VsZW1cbiAgfSlcbiAgdmFyIGxhc3RPbmUgPSBsYXN0UGF0aEVsZW1cbiAgcGF0aEVsZW1lbnRzLnB1c2gobmV3IFBhdGhMZWFmRWxlbWVudChsYXN0T25lKSlcbiAgcmV0dXJuIG5ldyBQYXRoKHBhdGhFbGVtZW50cylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7UGF0aCwgUGF0aEVsZW1lbnQsIFBhdGhMZWFmRWxlbWVudCwgQXJyYXlQYXRoRWxlbWVudCwgU2VhcmNoYWJsZVBhdGhFbGVtZW50LCBEaWN0UGF0aEVsZW1lbnQsIFBhdGhTZXQsIFxuICBnZXRUYWlsSWZGaXJzdEVsZW1lbnRJc0FycmF5T2ZUaGlzSW5kZXgsIGJ1aWxkUGF0aEZyb21BcnJheX0iLCJcInVzZSBzdHJpY3RcIlxuXG4vKipcbiAqIFxuICogQHBhcmFtIHtCdWZmZXJ9IG1lcmtsZUhhc2ggXG4gKi9cbmZ1bmN0aW9uIE1lcmtsZUhhc2hTdW1tYXJ5KG1lcmtsZUhhc2gpIHtcbiAgdGhpcy5tZXJrbGVIYXNoID0gbWVya2xlSGFzaFxufVxuXG4vKipcbiAqIEBwYXJhbSB7TWVya2xlSGFzaFN1bW1hcnl9IG90aGVyXG4gKi9cbk1lcmtsZUhhc2hTdW1tYXJ5LnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbihvdGhlcikge1xuICBpZiAodGhpcyA9PT0gb3RoZXIpIHJldHVybiB0cnVlXG4gIGlmICh0eXBlb2YgdGhpcyAhPSB0eXBlb2Ygb3RoZXIpIHJldHVybiBmYWxzZVxuXG4gIGlmICh0aGlzLm1lcmtsZUhhc2guY29tcGFyZShvdGhlci5tZXJrbGVIYXNoKSA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cblxubW9kdWxlLmV4cG9ydHMgPSB7TWVya2xlSGFzaFN1bW1hcnl9IiwidmFyIEJpbmFyeVRyZWVGYWN0b3J5ID0gcmVxdWlyZSgnLi4vYmluYXJ5dHJlZWZhY3RvcnknKS5CaW5hcnlUcmVlRmFjdG9yeVxudmFyIE1lcmtsZVByb29mVHJlZUZhY3RvcnkgPSByZXF1aXJlKCcuL21lcmtsZXByb29mdHJlZWZhY3RvcnknKS5NZXJrbGVQcm9vZlRyZWVGYWN0b3J5XG52YXIgTWVya2xlSGFzaENhbGN1bGF0b3IgPSByZXF1aXJlKCcuLi9tZXJrbGVoYXNoY2FsY3VsYXRvcicpLk1lcmtsZUhhc2hDYWxjdWxhdG9yXG52YXIgTWVya2xlUHJvb2ZUcmVlID0gIHJlcXVpcmUoJy4vbWVya2xlcHJvb2Z0cmVlJykuTWVya2xlUHJvb2ZUcmVlXG52YXIgTWVya2xlUHJvb2ZFbGVtZW50ID0gcmVxdWlyZSgnLi9tZXJrbGVwcm9vZnRyZWUnKS5NZXJrbGVQcm9vZkVsZW1lbnRcbnZhciBQcm9vZkhhc2hlZExlYWYgPSByZXF1aXJlKCcuL21lcmtsZXByb29mdHJlZScpLlByb29mSGFzaGVkTGVhZlxudmFyIFByb29mVmFsdWVMZWFmID0gcmVxdWlyZSgnLi9tZXJrbGVwcm9vZnRyZWUnKS5Qcm9vZlZhbHVlTGVhZlxudmFyIFByb29mTm9kZSA9IHJlcXVpcmUoJy4vbWVya2xlcHJvb2Z0cmVlJykuUHJvb2ZOb2RlXG52YXIgTWVya2xlSGFzaFN1bW1hcnkgPSByZXF1aXJlKCcuL21lcmtsZWhhc2hjYXJyaWVyJykuTWVya2xlSGFzaFN1bW1hcnlcblxuLyoqXG4gKiBcbiAqIEBwYXJhbSB7QmluYXJ5VHJlZUZhY3Rvcnl9IHRyZWVGYWN0b3J5IFxuICogQHBhcmFtIHtNZXJrbGVQcm9vZlRyZWVGYWN0b3J5fSBwcm9vZkZhY3RvcnkgXG4gKi9cbmZ1bmN0aW9uIE1lcmtsZUhhc2hTdW1tYXJ5RmFjdG9yeSh0cmVlRmFjdG9yeSwgcHJvb2ZGYWN0b3J5KSB7XG4gIHRoaXMudHJlZUZhY3RvcnkgPSB0cmVlRmFjdG9yeVxuICB0aGlzLnByb29mRmFjdG9yeSA9IHByb29mRmFjdG9yeVxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHBhcmFtIHtNZXJrbGVIYXNoQ2FsY3VsYXRvcn0gY2FsY3VsYXRvclxuICovXG5NZXJrbGVIYXNoU3VtbWFyeUZhY3RvcnkucHJvdG90eXBlLmNhbGN1bGF0ZU1lcmtsZVJvb3QgPSBmdW5jdGlvbih2YWx1ZSwgY2FsY3VsYXRvcikge1xuICB2YXIgYmluYXJ5VHJlZSA9IHRoaXMudHJlZUZhY3RvcnkuYnVpbGQodmFsdWUpXG4gIHZhciBwcm9vZlRyZWUgPSB0aGlzLnByb29mRmFjdG9yeS5idWlsZEZyb21CaW5hcnlUcmVlKGJpbmFyeVRyZWUsIGNhbGN1bGF0b3IpXG5cbiAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlTWVya2xlUm9vdE9mVHJlZShwcm9vZlRyZWUsIGNhbGN1bGF0b3IpXG59XG5cbi8qKlxuICogQHBhcmFtIHtNZXJrbGVQcm9vZlRyZWV9IHZhbHVlXG4gKiBAcGFyYW0ge01lcmtsZUhhc2hDYWxjdWxhdG9yfSBjYWxjdWxhdG9yXG4gKi9cbk1lcmtsZUhhc2hTdW1tYXJ5RmFjdG9yeS5wcm90b3R5cGUuY2FsY3VsYXRlTWVya2xlVHJlZVJvb3QgPSBmdW5jdGlvbih0cmVlLCBjYWxjdWxhdG9yKSB7XG4gIHJldHVybiB0aGlzLmNhbGN1bGF0ZU1lcmtsZVJvb3RPZlRyZWUodHJlZSwgY2FsY3VsYXRvcilcbn1cblxuLyoqXG4gKiBAcGFyYW0ge01lcmtsZVByb29mVHJlZX0gcHJvb2ZUcmVlXG4gKiBAcGFyYW0ge01lcmtsZUhhc2hDYWxjdWxhdG9yfSBjYWxjdWxhdG9yXG4gKi9cbk1lcmtsZUhhc2hTdW1tYXJ5RmFjdG9yeS5wcm90b3R5cGUuY2FsY3VsYXRlTWVya2xlUm9vdE9mVHJlZSA9IGZ1bmN0aW9uKHByb29mVHJlZSwgY2FsY3VsYXRvcikge1xuICB2YXIgY2FsY3VsYXRlZFN1bW1hcnkgPSB0aGlzLmNhbGN1bGF0ZU1lcmtsZVJvb3RJbnRlcm5hbChwcm9vZlRyZWUucm9vdCwgY2FsY3VsYXRvcilcbiAgcmV0dXJuIG5ldyBNZXJrbGVIYXNoU3VtbWFyeShjYWxjdWxhdGVkU3VtbWFyeSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge01lcmtsZVByb29mRWxlbWVudH0gY3VycmVudEVsZW1lbnRcbiAqIEBwYXJhbSB7TWVya2xlSGFzaENhbGN1bGF0b3J9IGNhbGN1bGF0b3JcbiAqL1xuTWVya2xlSGFzaFN1bW1hcnlGYWN0b3J5LnByb3RvdHlwZS5jYWxjdWxhdGVNZXJrbGVSb290SW50ZXJuYWwgPSBmdW5jdGlvbihjdXJyZW50RWxlbWVudCwgY2FsY3VsYXRvcikge1xuICBpZiAoY3VycmVudEVsZW1lbnQgaW5zdGFuY2VvZiBQcm9vZkhhc2hlZExlYWYpIHtcbiAgICByZXR1cm4gY3VycmVudEVsZW1lbnQubWVya2xlSGFzaFxuICB9IGVsc2UgaWYgKGN1cnJlbnRFbGVtZW50IGluc3RhbmNlb2YgUHJvb2ZWYWx1ZUxlYWYpIHtcbiAgICB2YXIgdmFsdWUgPSBjdXJyZW50RWxlbWVudC5jb250ZW50XG4gICAgaWYgKGNhbGN1bGF0b3IuaXNDb250YWluZXJQcm9vZlZhbHVlTGVhZih2YWx1ZSkpIHtcbiAgICAgIC8vIFdlIGhhdmUgYSBjb250YWluZXIgdmFsdWUgdG8gcHJvdmUsIHNvIG5lZWQgdG8gY29udmVydCB0aGUgdmFsdWUgdG8gYSBiaW5hcnkgdHJlZSwgYW5kIFRIRU4gaGFzaCBpdFxuICAgICAgdmFyIG1lcmtsZVByb29mVHJlZSA9IHRoaXMuYnVpbGRQcm9vZlRyZWUodmFsdWUsIGNhbGN1bGF0b3IpXG4gICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVNZXJrbGVSb290SW50ZXJuYWwobWVya2xlUHJvb2ZUcmVlLnJvb3QsIGNhbGN1bGF0b3IpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoaXMgaXMgYSBwcmltaXRpdmUgdmFsdWUsIGp1c3QgaGFzaCBpdFxuICAgICAgcmV0dXJuIGNhbGN1bGF0b3IuY2FsY3VsYXRlTGVhZkhhc2godmFsdWUpXG4gICAgfVxuICB9IGVsc2UgaWYgKGN1cnJlbnRFbGVtZW50IGluc3RhbmNlb2YgUHJvb2ZOb2RlKSB7XG4gICAgdmFyIGxlZnQgPSB0aGlzLmNhbGN1bGF0ZU1lcmtsZVJvb3RJbnRlcm5hbChjdXJyZW50RWxlbWVudC5sZWZ0LCBjYWxjdWxhdG9yKVxuICAgIHZhciByaWdodCA9IHRoaXMuY2FsY3VsYXRlTWVya2xlUm9vdEludGVybmFsKGN1cnJlbnRFbGVtZW50LnJpZ2h0LCBjYWxjdWxhdG9yKVxuICAgIHJldHVybiBjYWxjdWxhdG9yLmNhbGN1bGF0ZU5vZGVIYXNoKGN1cnJlbnRFbGVtZW50LnByZWZpeCwgbGVmdCwgcmlnaHQpXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU2hvdWxkIGhhdmUgaGFuZGxlZCB0aGlzIHR5cGU/IFwiICsgdHlwZW9mIGN1cnJlbnRFbGVtZW50KVxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcGFyYW0ge01lcmtsZUhhc2hDYWxjdWxhdG9yfSBjYWxjdWxhdG9yXG4gKi9cbk1lcmtsZUhhc2hTdW1tYXJ5RmFjdG9yeS5wcm90b3R5cGUuYnVpbGRQcm9vZlRyZWUgPSBmdW5jdGlvbih2YWx1ZSwgY2FsY3VsYXRvcikge1xuICB2YXIgcm9vdCA9IHRoaXMudHJlZUZhY3RvcnkuYnVpbGQodmFsdWUpXG4gIHJldHVybiB0aGlzLnByb29mRmFjdG9yeS5idWlsZEZyb21CaW5hcnlUcmVlKHJvb3QsIGNhbGN1bGF0b3IpXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge01lcmtsZUhhc2hTdW1tYXJ5RmFjdG9yeX0iLCJcInVzZSBzdHJpY3RcIlxuXG52YXIgTWVya2xlSGFzaENhbGN1bGF0b3IgPSByZXF1aXJlKCcuLi9tZXJrbGVoYXNoY2FsY3VsYXRvcicpLk1lcmtsZUhhc2hDYWxjdWxhdG9yXG52YXIgTWVya2xlSGFzaFN1bW1hcnlGYWN0b3J5ID0gcmVxdWlyZSgnLi9tZXJrbGVoYXNoc3VtbWFyeWZhY3RvcnknKS5NZXJrbGVIYXNoU3VtbWFyeUZhY3RvcnlcbnZhciBCaW5hcnlUcmVlRmFjdG9yeSA9IHJlcXVpcmUoJy4uL2JpbmFyeXRyZWVmYWN0b3J5JykuQmluYXJ5VHJlZUZhY3RvcnlcbnZhciBNZXJrbGVQcm9vZlRyZWVGYWN0b3J5ID0gcmVxdWlyZSgnLi9tZXJrbGVwcm9vZnRyZWVmYWN0b3J5JykuTWVya2xlUHJvb2ZUcmVlRmFjdG9yeVxudmFyIHRyZWVGYWN0b3J5ID0gbmV3IEJpbmFyeVRyZWVGYWN0b3J5KClcbnZhciBwcm9vZkZhY3RvcnkgPSBuZXcgTWVya2xlUHJvb2ZUcmVlRmFjdG9yeSgpXG52YXIgUGF0aFNldCA9IHJlcXVpcmUoJy4uL3BhdGgnKS5QYXRoU2V0XG52YXIgTWVya2xlUHJvb2ZUcmVlID0gcmVxdWlyZSgnLi9tZXJrbGVwcm9vZnRyZWUnKS5NZXJrbGVQcm9vZlRyZWVcblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBtZXJrbGUgcm9vdCBoYXNoIG9mIHRoZSBzdHJ1Y3R1cmUuXG4gKiBcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHBhcmFtIHtNZXJrbGVIYXNoQ2FsY3VsYXRvcn0gY2FsY3VsYXRvciBkZXNjcmliZXMgdGhlIG1ldGhvZCB3ZSB1c2UgZm9yIGhhc2hpbmcgYW5kIHNlcmlhbGl6YXRpb25cbiAqIEByZXR1cm4gdGhlIG1lcmtsZSByb290IGhhc2ggKDMyIGJ5dGVzKSBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmUuXG4gKi9cbmZ1bmN0aW9uIG1lcmtsZUhhc2godmFsdWUsIGNhbGN1bGF0b3IpIHtcbiAgcmV0dXJuIG1lcmtsZUhhc2hTdW1tYXJ5KHZhbHVlLCBjYWxjdWxhdG9yKS5tZXJrbGVIYXNoXG59XG5cbi8qKlxuICogXG4gKiBAcGFyYW0ge01lcmtsZVByb29mVHJlZX0gdHJlZSBcbiAqIEBwYXJhbSB7TWVya2xlSGFzaENhbGN1bGF0b3J9IGNhbGN1bGF0b3IgXG4gKi9cbmZ1bmN0aW9uIG1lcmtsZVRyZWVIYXNoKHRyZWUsIGNhbGN1bGF0b3IpIHtcbiAgcmV0dXJuIG1lcmtsZVByb29mSGFzaFN1bW1hcnkodHJlZSwgY2FsY3VsYXRvcikubWVya2xlSGFzaFxufVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIG1lcmtsZSByb290IGhhc2ggb2YgdGhlIHN0cnVjdHVyZVxuICpcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHBhcmFtIHtNZXJrbGVIYXNoQ2FsY3VsYXRvcn0gY2FsY3VsYXRvciBkZXNjcmliZXMgdGhlIG1ldGhvZCB3ZSB1c2UgZm9yIGhhc2hpbmcgYW5kIHNlcmlhbGl6YXRpb25cbiAqIEByZXR1cm4gdGhlIG1lcmtsZSByb290IGhhc2ggc3VtbWFyeVxuICovXG5mdW5jdGlvbiBtZXJrbGVIYXNoU3VtbWFyeSh2YWx1ZSwgY2FsY3VsYXRvcikge1xuICB2YXIgc3VtbWFyeUZhY3RvcnkgPSBuZXcgTWVya2xlSGFzaFN1bW1hcnlGYWN0b3J5KHRyZWVGYWN0b3J5LCBwcm9vZkZhY3RvcnkpXG4gIHJldHVybiBzdW1tYXJ5RmFjdG9yeS5jYWxjdWxhdGVNZXJrbGVSb290KHZhbHVlLCBjYWxjdWxhdG9yKVxufVxuXG4vKipcbiAqIFxuICogQHBhcmFtIHtNZXJrbGVQcm9vZlRyZWV9IHRyZWUgXG4gKiBAcGFyYW0ge01lcmtsZUhhc2hDYWxjdWxhdG9yfSBjYWxjdWxhdG9yIFxuICovXG5mdW5jdGlvbiBtZXJrbGVQcm9vZkhhc2hTdW1tYXJ5KHRyZWUsIGNhbGN1bGF0b3IpIHtcbiAgdmFyIHN1bW1hcnlGYWN0b3J5ID0gbmV3IE1lcmtsZUhhc2hTdW1tYXJ5RmFjdG9yeSh0cmVlRmFjdG9yeSwgcHJvb2ZGYWN0b3J5KVxuICByZXR1cm4gc3VtbWFyeUZhY3RvcnkuY2FsY3VsYXRlTWVya2xlVHJlZVJvb3QodHJlZSwgY2FsY3VsYXRvcikgIFxufVxuXG4vKipcbiAqIFxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcGFyYW0ge1BhdGhTZXR9IHBhdGhTZXQgXG4gKiBAcGFyYW0ge01lcmtsZUhhc2hDYWxjdWxhdG9yfSBjYWxjdWxhdG9yIFxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZVByb29mKHZhbHVlLCBwYXRoU2V0LCBjYWxjdWxhdG9yKSB7XG4gIHZhciBiaW5hcnlUcmVlID0gdHJlZUZhY3RvcnkuYnVpbGRXaXRoUGF0aCh2YWx1ZSwgcGF0aFNldClcbiAgcmV0dXJuIHByb29mRmFjdG9yeS5idWlsZEZyb21CaW5hcnlUcmVlKGJpbmFyeVRyZWUsIGNhbGN1bGF0b3IpXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge21lcmtsZUhhc2gsIG1lcmtsZVRyZWVIYXNoLCBtZXJrbGVIYXNoU3VtbWFyeSwgZ2VuZXJhdGVQcm9vZn0iLCJcbnZhciBTZWFyY2hhYmxlUGF0aEVsZW1lbnQgPSByZXF1aXJlKCcuLi9wYXRoJykuU2VhcmNoYWJsZVBhdGhFbGVtZW50XG52YXIgSEFTSF9QUkVGSVhfTk9ERSA9IHJlcXVpcmUoJy4uL2JpbmFyeXRyZWUnKS5IQVNIX1BSRUZJWF9OT0RFXG52YXIgSEFTSF9QUkVGSVhfTk9ERV9BUlJBWSA9IHJlcXVpcmUoJy4uL2JpbmFyeXRyZWUnKS5IQVNIX1BSRUZJWF9OT0RFX0FSUkFZXG52YXIgSEFTSF9QUkVGSVhfTk9ERV9ESUNUID0gcmVxdWlyZSgnLi4vYmluYXJ5dHJlZScpLkhBU0hfUFJFRklYX05PREVfRElDVFxuLyoqXG4gKiBcbiAqL1xuZnVuY3Rpb24gTWVya2xlUHJvb2ZFbGVtZW50KCkge31cblxuLyoqXG4gKiBcbiAqIEBwYXJhbSB7QnVmZmVyfSBwcmVmaXggXG4gKiBAcGFyYW0ge01lcmtsZVByb29mRWxlbWVudH0gbGVmdCBcbiAqIEBwYXJhbSB7TWVya2xlUHJvb2ZFbGVtZW50fSByaWdodCBcbiAqL1xuZnVuY3Rpb24gUHJvb2ZOb2RlKHByZWZpeCwgbGVmdCwgcmlnaHQpIHtcbiAgdGhpcy5wcmVmaXggPSBwcmVmaXhcbiAgdGhpcy5sZWZ0ID0gbGVmdFxuICB0aGlzLnJpZ2h0ID0gcmlnaHRcbn1cblxuUHJvb2ZOb2RlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTWVya2xlUHJvb2ZFbGVtZW50LnByb3RvdHlwZSlcblByb29mTm9kZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBQcm9vZk5vZGVcblxuLyoqXG4gKiBcbiAqIEBwYXJhbSB7TWVya2xlUHJvb2ZFbGVtZW50fSBsZWZ0IFxuICogQHBhcmFtIHtNZXJrbGVQcm9vZkVsZW1lbnR9IHJpZ2h0IFxuICovXG5mdW5jdGlvbiBQcm9vZk5vZGVTaW1wbGUobGVmdCwgcmlnaHQpIHtcbiAgUHJvb2ZOb2RlLmNhbGwodGhpcywgSEFTSF9QUkVGSVhfTk9ERSwgbGVmdCwgcmlnaHQpXG59XG5cblByb29mTm9kZVNpbXBsZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFByb29mTm9kZS5wcm90b3R5cGUpXG5Qcm9vZk5vZGVTaW1wbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUHJvb2ZOb2RlU2ltcGxlXG5cbi8qKlxuICogXG4gKiBAcGFyYW0geyp9IGNvbnRlbnQgXG4gKiBAcGFyYW0ge1NlYXJjaGFibGVQYXRoRWxlbWVudH0gcGF0aEVsZW0gXG4gKi9cbmZ1bmN0aW9uIFByb29mVmFsdWVMZWFmKGNvbnRlbnQsIHBhdGhFbGVtKSB7XG4gIHRoaXMuY29udGVudCA9IGNvbnRlbnRcbiAgdGhpcy5wYXRoRWxlbSA9IHBhdGhFbGVtXG59XG5Qcm9vZlZhbHVlTGVhZi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE1lcmtsZVByb29mRWxlbWVudC5wcm90b3R5cGUpXG5Qcm9vZlZhbHVlTGVhZi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBQcm9vZlZhbHVlTGVhZlxuXG4vKipcbiAqIFxuICogQHBhcmFtIHtCdWZmZXJ9IG1lcmtsZUhhc2ggXG4gKi9cbmZ1bmN0aW9uIFByb29mSGFzaGVkTGVhZihtZXJrbGVIYXNoKSB7XG4gIHRoaXMubWVya2xlSGFzaCA9IG1lcmtsZUhhc2hcbn1cblByb29mSGFzaGVkTGVhZi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE1lcmtsZVByb29mRWxlbWVudC5wcm90b3R5cGUpXG5Qcm9vZkhhc2hlZExlYWYucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUHJvb2ZIYXNoZWRMZWFmXG5cbi8qKlxuICogQHBhcmFtIHtQcm9vZkhhc2hlZExlYWZ9IG90aGVyXG4gKi9cblByb29mSGFzaGVkTGVhZi5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24ob3RoZXIpIHtcbiAgaWYgKG90aGVyIGluc3RhbmNlb2YgUHJvb2ZIYXNoZWRMZWFmKSB7XG4gICAgcmV0dXJuIHRoaXMubWVya2xlSGFzaC5lcXVhbHMob3RoZXIubWVya2xlSGFzaClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG4vKipcbiAqIFxuICogQHBhcmFtIHtNZXJrbGVQcm9vZkVsZW1lbnR9IGxlZnQgXG4gKiBAcGFyYW0ge01lcmtsZVByb29mRWxlbWVudH0gcmlnaHQgXG4gKiBAcGFyYW0ge1NlYXJjaGFibGVQYXRoRWxlbWVudH0gcGF0aEVsZW0gXG4gKi9cbmZ1bmN0aW9uIFByb29mTm9kZUFycmF5SGVhZChsZWZ0LCByaWdodCwgcGF0aEVsZW09bnVsbCkge1xuICBQcm9vZk5vZGUuY2FsbCh0aGlzLCBIQVNIX1BSRUZJWF9OT0RFX0FSUkFZLCBsZWZ0LCByaWdodClcbiAgdGhpcy5wYXRoRWxlbSA9IHBhdGhFbGVtXG59XG5Qcm9vZk5vZGVBcnJheUhlYWQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShQcm9vZk5vZGUucHJvdG90eXBlKVxuUHJvb2ZOb2RlQXJyYXlIZWFkLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFByb29mTm9kZUFycmF5SGVhZFxuXG4vKipcbiAqIFxuICogQHBhcmFtIHtNZXJrbGVQcm9vZkVsZW1lbnR9IGxlZnQgXG4gKiBAcGFyYW0ge01lcmtsZVByb29mRWxlbWVudH0gcmlnaHQgXG4gKiBAcGFyYW0ge1NlYXJjaGFibGVQYXRoRWxlbWVudH0gcGF0aEVsZW0gXG4gKi9cbmZ1bmN0aW9uIFByb29mTm9kZURpY3RIZWFkKGxlZnQsIHJpZ2h0LCBwYXRoRWxlbT1udWxsKSB7XG4gIFByb29mTm9kZS5jYWxsKHRoaXMsIEhBU0hfUFJFRklYX05PREVfRElDVCwgbGVmdCwgcmlnaHQpXG4gIHRoaXMucGF0aEVsZW0gPSBwYXRoRWxlbVxufVxuUHJvb2ZOb2RlRGljdEhlYWQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShQcm9vZk5vZGUucHJvdG90eXBlKVxuUHJvb2ZOb2RlRGljdEhlYWQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUHJvb2ZOb2RlRGljdEhlYWRcblxuLyoqXG4gKiBcbiAqIEBwYXJhbSB7TWVya2xlUHJvb2ZFbGVtZW50fSByb290IFxuICovXG5mdW5jdGlvbiBNZXJrbGVQcm9vZlRyZWUocm9vdCkge1xuICB0aGlzLnJvb3QgPSByb290XG59XG5cbk1lcmtsZVByb29mVHJlZS5wcm90b3R5cGUubWF4TGV2ZWwgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMubWF4TGV2ZWxJbnRlcm5hbCh0aGlzLnJvb3QpXG59XG5cbi8qKlxuICogQHBhcmFtIHtNZXJrbGVQcm9vZkVsZW1lbnR9IG5vZGVcbiAqL1xuTWVya2xlUHJvb2ZUcmVlLnByb3RvdHlwZS5tYXhMZXZlbEludGVybmFsID0gZnVuY3Rpb24obm9kZSkge1xuICBpZiAobm9kZSBpbnN0YW5jZW9mIFByb29mVmFsdWVMZWFmKSB7XG4gICAgcmV0dXJuIDFcbiAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgUHJvb2ZIYXNoZWRMZWFmKSB7XG4gICAgcmV0dXJuIDFcbiAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgUHJvb2ZOb2RlKSB7XG4gICAgcmV0dXJuIE1hdGgubWF4KHRoaXMubWF4TGV2ZWxJbnRlcm5hbChub2RlLmxlZnQpLCB0aGlzLm1heExldmVsSW50ZXJuYWwobm9kZS5yaWdodCkpICsgMVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSBub2RlIHR5cGU6IFwiICsgdHlwZW9mIG5vZGUpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7UHJvb2ZOb2RlLCBQcm9vZk5vZGVTaW1wbGUsIFByb29mSGFzaGVkTGVhZiwgUHJvb2ZWYWx1ZUxlYWYsIFxuICBQcm9vZk5vZGVBcnJheUhlYWQsIFByb29mTm9kZURpY3RIZWFkLCBNZXJrbGVQcm9vZkVsZW1lbnQsIE1lcmtsZVByb29mVHJlZX0iLCJ2YXIgQmluYXJ5VHJlZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9iaW5hcnl0cmVlJykuQmluYXJ5VHJlZUVsZW1lbnRcbnZhciBOb2RlID0gcmVxdWlyZSgnLi4vYmluYXJ5dHJlZScpLk5vZGVcbnZhciBMZWFmID0gcmVxdWlyZSgnLi4vYmluYXJ5dHJlZScpLkxlYWZcbnZhciBFbXB0eUxlYWYgPSByZXF1aXJlKCcuLi9iaW5hcnl0cmVlJykuRW1wdHlMZWFmXG52YXIgQmluYXJ5VHJlZSA9IHJlcXVpcmUoJy4uL2JpbmFyeXRyZWUnKS5CaW5hcnlUcmVlXG52YXIgUHJvb2ZIYXNoZWRMZWFmID0gcmVxdWlyZSgnLi9tZXJrbGVwcm9vZnRyZWUnKS5Qcm9vZkhhc2hlZExlYWZcbnZhciBQcm9vZlZhbHVlTGVhZiA9IHJlcXVpcmUoJy4vbWVya2xlcHJvb2Z0cmVlJykuUHJvb2ZWYWx1ZUxlYWZcbnZhciBNZXJrbGVQcm9vZkVsZW1lbnQgPSByZXF1aXJlKCcuL21lcmtsZXByb29mdHJlZScpLk1lcmtsZVByb29mRWxlbWVudFxudmFyIE1lcmtsZVByb29mVHJlZSA9ICByZXF1aXJlKCcuL21lcmtsZXByb29mdHJlZScpLk1lcmtsZVByb29mVHJlZVxudmFyIFByb29mTm9kZUFycmF5SGVhZCA9IHJlcXVpcmUoJy4vbWVya2xlcHJvb2Z0cmVlJykuUHJvb2ZOb2RlQXJyYXlIZWFkXG52YXIgUHJvb2ZOb2RlRGljdEhlYWQgPSByZXF1aXJlKCcuL21lcmtsZXByb29mdHJlZScpLlByb29mTm9kZURpY3RIZWFkXG52YXIgUGF0aExlYWZFbGVtZW50ID0gcmVxdWlyZSgnLi4vcGF0aCcpLlBhdGhMZWFmRWxlbWVudFxudmFyIFN1YlRyZWVSb290Tm9kZSA9IHJlcXVpcmUoJy4uL2JpbmFyeXRyZWUnKS5TdWJUcmVlUm9vdE5vZGVcbnZhciBBcnJheUhlYWROb2RlID0gcmVxdWlyZSgnLi4vYmluYXJ5dHJlZScpLkFycmF5SGVhZE5vZGVcbnZhciBEaWN0SGVhZE5vZGUgPSByZXF1aXJlKCcuLi9iaW5hcnl0cmVlJykuRGljdEhlYWROb2RlXG52YXIgUHJvb2ZOb2RlU2ltcGxlID0gcmVxdWlyZSgnLi9tZXJrbGVwcm9vZnRyZWUnKS5Qcm9vZk5vZGVTaW1wbGVcblxuY29uc3QgRU1QVFlfSEFTSCA9IG5ldyBCdWZmZXIuYWxsb2MoMzIpXG4vKipcbiAqIFxuICovXG5mdW5jdGlvbiBNZXJrbGVQcm9vZlRyZWVGYWN0b3J5KCkge31cblxuLyoqXG4gKiBAcGFyYW0ge0JpbmFyeVRyZWV9IG9yZ2luYWxUcmVlXG4gKi9cbk1lcmtsZVByb29mVHJlZUZhY3RvcnkucHJvdG90eXBlLmJ1aWxkRnJvbUJpbmFyeVRyZWUgPSBmdW5jdGlvbihvcmdpbmFsVHJlZSwgY2FsY3VsYXRvcikge1xuICB2YXIgcm9vdEVsZW0gPSB0aGlzLmJ1aWxkRnJvbUJpbmFyeVRyZWVJbnRlcm5hbChvcmdpbmFsVHJlZS5yb290LCBjYWxjdWxhdG9yKVxuICByZXR1cm4gbmV3IE1lcmtsZVByb29mVHJlZShyb290RWxlbSlcbn1cbi8qKlxuICogQHBhcmFtIHtCaW5hcnlUcmVlRWxlbWVudH0gZWxlbVxuICogQHBhcmFtIHsqfSBjYWxjdWxhdG9yXG4gKi9cbk1lcmtsZVByb29mVHJlZUZhY3RvcnkucHJvdG90eXBlLmJ1aWxkRnJvbUJpbmFyeVRyZWVJbnRlcm5hbCA9IGZ1bmN0aW9uKGVsZW0sIGNhbGN1bGF0b3IpIHtcbiAgaWYgKGVsZW0gaW5zdGFuY2VvZiBFbXB0eUxlYWYpIHtcbiAgICByZXR1cm4gbmV3IFByb29mSGFzaGVkTGVhZihFTVBUWV9IQVNIKVxuICB9IGVsc2UgaWYgKGVsZW0gaW5zdGFuY2VvZiBMZWFmKSB7XG4gICAgdmFyIHBhdGhFbGVtID0gZWxlbS5wYXRoRWxlbVxuICAgIGlmIChwYXRoRWxlbSAhPSBudWxsKSB7XG4gICAgICBpZiAocGF0aEVsZW0gaW5zdGFuY2VvZiBQYXRoTGVhZkVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9vZlZhbHVlTGVhZihlbGVtLmNvbnRlbnQsIHBhdGhFbGVtLnByZXZpb3VzKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIHBhdGggYW5kIHN0cnVjdHVyZSBkb24ndCBtYXRjaC4gV2UgYXJlIGF0IGEgbGVhZiwgYnV0IHBhdGggZWxlbSBpcyBub3QgYSBsZWFmOiBcIiArIHBhdGhFbGVtKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBtYWtlIGEgaGFzaFxuICAgICAgdmFyIGhhc2ggPSBjYWxjdWxhdG9yLmNhbGN1bGF0ZUxlYWZIYXNoKGVsZW0uY29udGVudClcbiAgICAgIHJldHVybiBuZXcgUHJvb2ZIYXNoZWRMZWFmKGhhc2gpXG4gICAgfVxuICB9IGVsc2UgaWYgKGVsZW0gaW5zdGFuY2VvZiBTdWJUcmVlUm9vdE5vZGUpIHtcbiAgICB2YXIgcGF0aEVsZW0gPSBlbGVtLnBhdGhFbGVtXG4gICAgaWYgKHBhdGhFbGVtICE9IG51bGwpIHtcbiAgICAgIGlmIChwYXRoRWxlbSBpbnN0YW5jZW9mIFBhdGhMZWFmRWxlbWVudCkge1xuICAgICAgICAvLyBEb24ndCBjb252ZXJ0IGl0XG4gICAgICAgIHJldHVybiBuZXcgUHJvb2ZWYWx1ZUxlYWYoZWxlbS5jb250ZW50LCBwYXRoRWxlbS5wcmV2aW91cylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnROb2RlKGVsZW0sIGNhbGN1bGF0b3IpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnROb2RlKGVsZW0sIGNhbGN1bGF0b3IpXG4gICAgfSAgICBcbiAgfSBlbHNlIGlmIChlbGVtIGluc3RhbmNlb2YgTm9kZSkge1xuICAgIHJldHVybiB0aGlzLmNvbnZlcnROb2RlKGVsZW0sIGNhbGN1bGF0b3IpXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGhhbmRsZSBcIiArIGVsZW0pXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge05vZGV9IG5vZGVcbiAqL1xuTWVya2xlUHJvb2ZUcmVlRmFjdG9yeS5wcm90b3R5cGUuY29udmVydE5vZGUgPSBmdW5jdGlvbihub2RlLCBjYWxjdWxhdG9yKSB7XG4gIHZhciBsZWZ0ID0gdGhpcy5idWlsZEZyb21CaW5hcnlUcmVlSW50ZXJuYWwobm9kZS5sZWZ0LCBjYWxjdWxhdG9yKVxuICB2YXIgcmlnaHQgPSB0aGlzLmJ1aWxkRnJvbUJpbmFyeVRyZWVJbnRlcm5hbChub2RlLnJpZ2h0LCBjYWxjdWxhdG9yKVxuICBpZiAobGVmdCBpbnN0YW5jZW9mIFByb29mSGFzaGVkTGVhZiAmJiByaWdodCBpbnN0YW5jZW9mIFByb29mSGFzaGVkTGVhZikge1xuICAgIHZhciBhZGRlZEhhc2ggPSBjYWxjdWxhdG9yLmNhbGN1bGF0ZU5vZGVIYXNoKG5vZGUuZ2V0UHJlZml4Qnl0ZSgpLCBsZWZ0Lm1lcmtsZUhhc2gsIHJpZ2h0Lm1lcmtsZUhhc2gpXG4gICAgcmV0dXJuIG5ldyBQcm9vZkhhc2hlZExlYWYoYWRkZWRIYXNoKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkTm9kZU9mQ29ycmVjdFR5cGUobm9kZSwgbGVmdCwgcmlnaHQpXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge0FycmF5SGVhZE5vZGV9IG5vZGVcbiAqL1xuTWVya2xlUHJvb2ZUcmVlRmFjdG9yeS5wcm90b3R5cGUuZXh0cmFjdFNlYXJjaGFibGVQYXRoRWxlbWVudCA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgdmFyIHBhdGhFbGVtID0gbm9kZS5wYXRoRWxlbVxuICBpZiAocGF0aEVsZW0gIT0gbnVsbCkge1xuICAgIHJldHVybiBwYXRoRWxlbS5wcmV2aW91c1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge05vZGV9IG5vZGVcbiAqIEBwYXJhbSB7TWVya2xlUHJvb2ZFbGVtZW50fSBsZWZ0XG4gKiBAcGFyYW0ge01lcmtsZVByb29mRWxlbWVudH0gcmlnaHRcbiAqL1xuTWVya2xlUHJvb2ZUcmVlRmFjdG9yeS5wcm90b3R5cGUuYnVpbGROb2RlT2ZDb3JyZWN0VHlwZSA9IGZ1bmN0aW9uKG5vZGUsIGxlZnQsIHJpZ2h0KSB7XG4gIGlmIChub2RlIGluc3RhbmNlb2YgQXJyYXlIZWFkTm9kZSkge1xuICAgIHJldHVybiBuZXcgUHJvb2ZOb2RlQXJyYXlIZWFkKGxlZnQsIHJpZ2h0LCB0aGlzLmV4dHJhY3RTZWFyY2hhYmxlUGF0aEVsZW1lbnQobm9kZSkpXG4gIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIERpY3RIZWFkTm9kZSkge1xuICAgIHJldHVybiBuZXcgUHJvb2ZOb2RlRGljdEhlYWQobGVmdCwgcmlnaHQsIHRoaXMuZXh0cmFjdFNlYXJjaGFibGVQYXRoRWxlbWVudChub2RlKSlcbiAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgTm9kZSkge1xuICAgIHJldHVybiBuZXcgUHJvb2ZOb2RlU2ltcGxlKGxlZnQsIHJpZ2h0KVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlNob3VsZCBoYXZlIHRha2VuIGNhcmUgb2YgdGhpcyBub2RlIHR5cGU6IFwiICsgbm9kZSlcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtNZXJrbGVQcm9vZlRyZWVGYWN0b3J5fSIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImJ1ZmZlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjcnlwdG9cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaHR0cFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJodHRwc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwYXRoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInB1bnljb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInN0cmVhbVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1cmxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidXRpbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ2bVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ6bGliXCIpOyIsImltcG9ydCBTdHJlYW0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0IFVybCBmcm9tICd1cmwnO1xuaW1wb3J0IHdoYXR3Z1VybCBmcm9tICd3aGF0d2ctdXJsJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQgemxpYiBmcm9tICd6bGliJztcblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL3RtcHZhci9qc2RvbS9ibG9iL2FhODViMmFiZjA3NzY2ZmY3YmY1YzFmNmRhYWZiMzcyNmYyZjJkYjUvbGliL2pzZG9tL2xpdmluZy9ibG9iLmpzXG5cbi8vIGZpeCBmb3IgXCJSZWFkYWJsZVwiIGlzbid0IGEgbmFtZWQgZXhwb3J0IGlzc3VlXG5jb25zdCBSZWFkYWJsZSA9IFN0cmVhbS5SZWFkYWJsZTtcblxuY29uc3QgQlVGRkVSID0gU3ltYm9sKCdidWZmZXInKTtcbmNvbnN0IFRZUEUgPSBTeW1ib2woJ3R5cGUnKTtcblxuY2xhc3MgQmxvYiB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXNbVFlQRV0gPSAnJztcblxuXHRcdGNvbnN0IGJsb2JQYXJ0cyA9IGFyZ3VtZW50c1swXTtcblx0XHRjb25zdCBvcHRpb25zID0gYXJndW1lbnRzWzFdO1xuXG5cdFx0Y29uc3QgYnVmZmVycyA9IFtdO1xuXHRcdGxldCBzaXplID0gMDtcblxuXHRcdGlmIChibG9iUGFydHMpIHtcblx0XHRcdGNvbnN0IGEgPSBibG9iUGFydHM7XG5cdFx0XHRjb25zdCBsZW5ndGggPSBOdW1iZXIoYS5sZW5ndGgpO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuXHRcdFx0XHRjb25zdCBlbGVtZW50ID0gYVtpXTtcblx0XHRcdFx0bGV0IGJ1ZmZlcjtcblx0XHRcdFx0aWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBCdWZmZXIpIHtcblx0XHRcdFx0XHRidWZmZXIgPSBlbGVtZW50O1xuXHRcdFx0XHR9IGVsc2UgaWYgKEFycmF5QnVmZmVyLmlzVmlldyhlbGVtZW50KSkge1xuXHRcdFx0XHRcdGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGVsZW1lbnQuYnVmZmVyLCBlbGVtZW50LmJ5dGVPZmZzZXQsIGVsZW1lbnQuYnl0ZUxlbmd0aCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG5cdFx0XHRcdFx0YnVmZmVyID0gQnVmZmVyLmZyb20oZWxlbWVudCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEJsb2IpIHtcblx0XHRcdFx0XHRidWZmZXIgPSBlbGVtZW50W0JVRkZFUl07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YnVmZmVyID0gQnVmZmVyLmZyb20odHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnID8gZWxlbWVudCA6IFN0cmluZyhlbGVtZW50KSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0c2l6ZSArPSBidWZmZXIubGVuZ3RoO1xuXHRcdFx0XHRidWZmZXJzLnB1c2goYnVmZmVyKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzW0JVRkZFUl0gPSBCdWZmZXIuY29uY2F0KGJ1ZmZlcnMpO1xuXG5cdFx0bGV0IHR5cGUgPSBvcHRpb25zICYmIG9wdGlvbnMudHlwZSAhPT0gdW5kZWZpbmVkICYmIFN0cmluZyhvcHRpb25zLnR5cGUpLnRvTG93ZXJDYXNlKCk7XG5cdFx0aWYgKHR5cGUgJiYgIS9bXlxcdTAwMjAtXFx1MDA3RV0vLnRlc3QodHlwZSkpIHtcblx0XHRcdHRoaXNbVFlQRV0gPSB0eXBlO1xuXHRcdH1cblx0fVxuXHRnZXQgc2l6ZSgpIHtcblx0XHRyZXR1cm4gdGhpc1tCVUZGRVJdLmxlbmd0aDtcblx0fVxuXHRnZXQgdHlwZSgpIHtcblx0XHRyZXR1cm4gdGhpc1tUWVBFXTtcblx0fVxuXHR0ZXh0KCkge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpc1tCVUZGRVJdLnRvU3RyaW5nKCkpO1xuXHR9XG5cdGFycmF5QnVmZmVyKCkge1xuXHRcdGNvbnN0IGJ1ZiA9IHRoaXNbQlVGRkVSXTtcblx0XHRjb25zdCBhYiA9IGJ1Zi5idWZmZXIuc2xpY2UoYnVmLmJ5dGVPZmZzZXQsIGJ1Zi5ieXRlT2Zmc2V0ICsgYnVmLmJ5dGVMZW5ndGgpO1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoYWIpO1xuXHR9XG5cdHN0cmVhbSgpIHtcblx0XHRjb25zdCByZWFkYWJsZSA9IG5ldyBSZWFkYWJsZSgpO1xuXHRcdHJlYWRhYmxlLl9yZWFkID0gZnVuY3Rpb24gKCkge307XG5cdFx0cmVhZGFibGUucHVzaCh0aGlzW0JVRkZFUl0pO1xuXHRcdHJlYWRhYmxlLnB1c2gobnVsbCk7XG5cdFx0cmV0dXJuIHJlYWRhYmxlO1xuXHR9XG5cdHRvU3RyaW5nKCkge1xuXHRcdHJldHVybiAnW29iamVjdCBCbG9iXSc7XG5cdH1cblx0c2xpY2UoKSB7XG5cdFx0Y29uc3Qgc2l6ZSA9IHRoaXMuc2l6ZTtcblxuXHRcdGNvbnN0IHN0YXJ0ID0gYXJndW1lbnRzWzBdO1xuXHRcdGNvbnN0IGVuZCA9IGFyZ3VtZW50c1sxXTtcblx0XHRsZXQgcmVsYXRpdmVTdGFydCwgcmVsYXRpdmVFbmQ7XG5cdFx0aWYgKHN0YXJ0ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJlbGF0aXZlU3RhcnQgPSAwO1xuXHRcdH0gZWxzZSBpZiAoc3RhcnQgPCAwKSB7XG5cdFx0XHRyZWxhdGl2ZVN0YXJ0ID0gTWF0aC5tYXgoc2l6ZSArIHN0YXJ0LCAwKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVsYXRpdmVTdGFydCA9IE1hdGgubWluKHN0YXJ0LCBzaXplKTtcblx0XHR9XG5cdFx0aWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZWxhdGl2ZUVuZCA9IHNpemU7XG5cdFx0fSBlbHNlIGlmIChlbmQgPCAwKSB7XG5cdFx0XHRyZWxhdGl2ZUVuZCA9IE1hdGgubWF4KHNpemUgKyBlbmQsIDApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZWxhdGl2ZUVuZCA9IE1hdGgubWluKGVuZCwgc2l6ZSk7XG5cdFx0fVxuXHRcdGNvbnN0IHNwYW4gPSBNYXRoLm1heChyZWxhdGl2ZUVuZCAtIHJlbGF0aXZlU3RhcnQsIDApO1xuXG5cdFx0Y29uc3QgYnVmZmVyID0gdGhpc1tCVUZGRVJdO1xuXHRcdGNvbnN0IHNsaWNlZEJ1ZmZlciA9IGJ1ZmZlci5zbGljZShyZWxhdGl2ZVN0YXJ0LCByZWxhdGl2ZVN0YXJ0ICsgc3Bhbik7XG5cdFx0Y29uc3QgYmxvYiA9IG5ldyBCbG9iKFtdLCB7IHR5cGU6IGFyZ3VtZW50c1syXSB9KTtcblx0XHRibG9iW0JVRkZFUl0gPSBzbGljZWRCdWZmZXI7XG5cdFx0cmV0dXJuIGJsb2I7XG5cdH1cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQmxvYi5wcm90b3R5cGUsIHtcblx0c2l6ZTogeyBlbnVtZXJhYmxlOiB0cnVlIH0sXG5cdHR5cGU6IHsgZW51bWVyYWJsZTogdHJ1ZSB9LFxuXHRzbGljZTogeyBlbnVtZXJhYmxlOiB0cnVlIH1cbn0pO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoQmxvYi5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZywge1xuXHR2YWx1ZTogJ0Jsb2InLFxuXHR3cml0YWJsZTogZmFsc2UsXG5cdGVudW1lcmFibGU6IGZhbHNlLFxuXHRjb25maWd1cmFibGU6IHRydWVcbn0pO1xuXG4vKipcbiAqIGZldGNoLWVycm9yLmpzXG4gKlxuICogRmV0Y2hFcnJvciBpbnRlcmZhY2UgZm9yIG9wZXJhdGlvbmFsIGVycm9yc1xuICovXG5cbi8qKlxuICogQ3JlYXRlIEZldGNoRXJyb3IgaW5zdGFuY2VcbiAqXG4gKiBAcGFyYW0gICBTdHJpbmcgICAgICBtZXNzYWdlICAgICAgRXJyb3IgbWVzc2FnZSBmb3IgaHVtYW5cbiAqIEBwYXJhbSAgIFN0cmluZyAgICAgIHR5cGUgICAgICAgICBFcnJvciB0eXBlIGZvciBtYWNoaW5lXG4gKiBAcGFyYW0gICBTdHJpbmcgICAgICBzeXN0ZW1FcnJvciAgRm9yIE5vZGUuanMgc3lzdGVtIGVycm9yXG4gKiBAcmV0dXJuICBGZXRjaEVycm9yXG4gKi9cbmZ1bmN0aW9uIEZldGNoRXJyb3IobWVzc2FnZSwgdHlwZSwgc3lzdGVtRXJyb3IpIHtcbiAgRXJyb3IuY2FsbCh0aGlzLCBtZXNzYWdlKTtcblxuICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICB0aGlzLnR5cGUgPSB0eXBlO1xuXG4gIC8vIHdoZW4gZXJyLnR5cGUgaXMgYHN5c3RlbWAsIGVyci5jb2RlIGNvbnRhaW5zIHN5c3RlbSBlcnJvciBjb2RlXG4gIGlmIChzeXN0ZW1FcnJvcikge1xuICAgIHRoaXMuY29kZSA9IHRoaXMuZXJybm8gPSBzeXN0ZW1FcnJvci5jb2RlO1xuICB9XG5cbiAgLy8gaGlkZSBjdXN0b20gZXJyb3IgaW1wbGVtZW50YXRpb24gZGV0YWlscyBmcm9tIGVuZC11c2Vyc1xuICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbn1cblxuRmV0Y2hFcnJvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7XG5GZXRjaEVycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEZldGNoRXJyb3I7XG5GZXRjaEVycm9yLnByb3RvdHlwZS5uYW1lID0gJ0ZldGNoRXJyb3InO1xuXG5sZXQgY29udmVydDtcbnRyeSB7XG5cdGNvbnZlcnQgPSByZXF1aXJlKCdlbmNvZGluZycpLmNvbnZlcnQ7XG59IGNhdGNoIChlKSB7fVxuXG5jb25zdCBJTlRFUk5BTFMgPSBTeW1ib2woJ0JvZHkgaW50ZXJuYWxzJyk7XG5cbi8vIGZpeCBhbiBpc3N1ZSB3aGVyZSBcIlBhc3NUaHJvdWdoXCIgaXNuJ3QgYSBuYW1lZCBleHBvcnQgZm9yIG5vZGUgPDEwXG5jb25zdCBQYXNzVGhyb3VnaCA9IFN0cmVhbS5QYXNzVGhyb3VnaDtcblxuLyoqXG4gKiBCb2R5IG1peGluXG4gKlxuICogUmVmOiBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jYm9keVxuICpcbiAqIEBwYXJhbSAgIFN0cmVhbSAgYm9keSAgUmVhZGFibGUgc3RyZWFtXG4gKiBAcGFyYW0gICBPYmplY3QgIG9wdHMgIFJlc3BvbnNlIG9wdGlvbnNcbiAqIEByZXR1cm4gIFZvaWRcbiAqL1xuZnVuY3Rpb24gQm9keShib2R5KSB7XG5cdHZhciBfdGhpcyA9IHRoaXM7XG5cblx0dmFyIF9yZWYgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9LFxuXHQgICAgX3JlZiRzaXplID0gX3JlZi5zaXplO1xuXG5cdGxldCBzaXplID0gX3JlZiRzaXplID09PSB1bmRlZmluZWQgPyAwIDogX3JlZiRzaXplO1xuXHR2YXIgX3JlZiR0aW1lb3V0ID0gX3JlZi50aW1lb3V0O1xuXHRsZXQgdGltZW91dCA9IF9yZWYkdGltZW91dCA9PT0gdW5kZWZpbmVkID8gMCA6IF9yZWYkdGltZW91dDtcblxuXHRpZiAoYm9keSA9PSBudWxsKSB7XG5cdFx0Ly8gYm9keSBpcyB1bmRlZmluZWQgb3IgbnVsbFxuXHRcdGJvZHkgPSBudWxsO1xuXHR9IGVsc2UgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKGJvZHkpKSB7XG5cdFx0Ly8gYm9keSBpcyBhIFVSTFNlYXJjaFBhcmFtc1xuXHRcdGJvZHkgPSBCdWZmZXIuZnJvbShib2R5LnRvU3RyaW5nKCkpO1xuXHR9IGVsc2UgaWYgKGlzQmxvYihib2R5KSkgOyBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIoYm9keSkpIDsgZWxzZSBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGJvZHkpID09PSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nKSB7XG5cdFx0Ly8gYm9keSBpcyBBcnJheUJ1ZmZlclxuXHRcdGJvZHkgPSBCdWZmZXIuZnJvbShib2R5KTtcblx0fSBlbHNlIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcoYm9keSkpIHtcblx0XHQvLyBib2R5IGlzIEFycmF5QnVmZmVyVmlld1xuXHRcdGJvZHkgPSBCdWZmZXIuZnJvbShib2R5LmJ1ZmZlciwgYm9keS5ieXRlT2Zmc2V0LCBib2R5LmJ5dGVMZW5ndGgpO1xuXHR9IGVsc2UgaWYgKGJvZHkgaW5zdGFuY2VvZiBTdHJlYW0pIDsgZWxzZSB7XG5cdFx0Ly8gbm9uZSBvZiB0aGUgYWJvdmVcblx0XHQvLyBjb2VyY2UgdG8gc3RyaW5nIHRoZW4gYnVmZmVyXG5cdFx0Ym9keSA9IEJ1ZmZlci5mcm9tKFN0cmluZyhib2R5KSk7XG5cdH1cblx0dGhpc1tJTlRFUk5BTFNdID0ge1xuXHRcdGJvZHksXG5cdFx0ZGlzdHVyYmVkOiBmYWxzZSxcblx0XHRlcnJvcjogbnVsbFxuXHR9O1xuXHR0aGlzLnNpemUgPSBzaXplO1xuXHR0aGlzLnRpbWVvdXQgPSB0aW1lb3V0O1xuXG5cdGlmIChib2R5IGluc3RhbmNlb2YgU3RyZWFtKSB7XG5cdFx0Ym9keS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG5cdFx0XHRjb25zdCBlcnJvciA9IGVyci5uYW1lID09PSAnQWJvcnRFcnJvcicgPyBlcnIgOiBuZXcgRmV0Y2hFcnJvcihgSW52YWxpZCByZXNwb25zZSBib2R5IHdoaWxlIHRyeWluZyB0byBmZXRjaCAke190aGlzLnVybH06ICR7ZXJyLm1lc3NhZ2V9YCwgJ3N5c3RlbScsIGVycik7XG5cdFx0XHRfdGhpc1tJTlRFUk5BTFNdLmVycm9yID0gZXJyb3I7XG5cdFx0fSk7XG5cdH1cbn1cblxuQm9keS5wcm90b3R5cGUgPSB7XG5cdGdldCBib2R5KCkge1xuXHRcdHJldHVybiB0aGlzW0lOVEVSTkFMU10uYm9keTtcblx0fSxcblxuXHRnZXQgYm9keVVzZWQoKSB7XG5cdFx0cmV0dXJuIHRoaXNbSU5URVJOQUxTXS5kaXN0dXJiZWQ7XG5cdH0sXG5cblx0LyoqXG4gICogRGVjb2RlIHJlc3BvbnNlIGFzIEFycmF5QnVmZmVyXG4gICpcbiAgKiBAcmV0dXJuICBQcm9taXNlXG4gICovXG5cdGFycmF5QnVmZmVyKCkge1xuXHRcdHJldHVybiBjb25zdW1lQm9keS5jYWxsKHRoaXMpLnRoZW4oZnVuY3Rpb24gKGJ1Zikge1xuXHRcdFx0cmV0dXJuIGJ1Zi5idWZmZXIuc2xpY2UoYnVmLmJ5dGVPZmZzZXQsIGJ1Zi5ieXRlT2Zmc2V0ICsgYnVmLmJ5dGVMZW5ndGgpO1xuXHRcdH0pO1xuXHR9LFxuXG5cdC8qKlxuICAqIFJldHVybiByYXcgcmVzcG9uc2UgYXMgQmxvYlxuICAqXG4gICogQHJldHVybiBQcm9taXNlXG4gICovXG5cdGJsb2IoKSB7XG5cdFx0bGV0IGN0ID0gdGhpcy5oZWFkZXJzICYmIHRoaXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpIHx8ICcnO1xuXHRcdHJldHVybiBjb25zdW1lQm9keS5jYWxsKHRoaXMpLnRoZW4oZnVuY3Rpb24gKGJ1Zikge1xuXHRcdFx0cmV0dXJuIE9iamVjdC5hc3NpZ24oXG5cdFx0XHQvLyBQcmV2ZW50IGNvcHlpbmdcblx0XHRcdG5ldyBCbG9iKFtdLCB7XG5cdFx0XHRcdHR5cGU6IGN0LnRvTG93ZXJDYXNlKClcblx0XHRcdH0pLCB7XG5cdFx0XHRcdFtCVUZGRVJdOiBidWZcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9LFxuXG5cdC8qKlxuICAqIERlY29kZSByZXNwb25zZSBhcyBqc29uXG4gICpcbiAgKiBAcmV0dXJuICBQcm9taXNlXG4gICovXG5cdGpzb24oKSB7XG5cdFx0dmFyIF90aGlzMiA9IHRoaXM7XG5cblx0XHRyZXR1cm4gY29uc3VtZUJvZHkuY2FsbCh0aGlzKS50aGVuKGZ1bmN0aW9uIChidWZmZXIpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHJldHVybiBKU09OLnBhcnNlKGJ1ZmZlci50b1N0cmluZygpKTtcblx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRyZXR1cm4gQm9keS5Qcm9taXNlLnJlamVjdChuZXcgRmV0Y2hFcnJvcihgaW52YWxpZCBqc29uIHJlc3BvbnNlIGJvZHkgYXQgJHtfdGhpczIudXJsfSByZWFzb246ICR7ZXJyLm1lc3NhZ2V9YCwgJ2ludmFsaWQtanNvbicpKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHQvKipcbiAgKiBEZWNvZGUgcmVzcG9uc2UgYXMgdGV4dFxuICAqXG4gICogQHJldHVybiAgUHJvbWlzZVxuICAqL1xuXHR0ZXh0KCkge1xuXHRcdHJldHVybiBjb25zdW1lQm9keS5jYWxsKHRoaXMpLnRoZW4oZnVuY3Rpb24gKGJ1ZmZlcikge1xuXHRcdFx0cmV0dXJuIGJ1ZmZlci50b1N0cmluZygpO1xuXHRcdH0pO1xuXHR9LFxuXG5cdC8qKlxuICAqIERlY29kZSByZXNwb25zZSBhcyBidWZmZXIgKG5vbi1zcGVjIGFwaSlcbiAgKlxuICAqIEByZXR1cm4gIFByb21pc2VcbiAgKi9cblx0YnVmZmVyKCkge1xuXHRcdHJldHVybiBjb25zdW1lQm9keS5jYWxsKHRoaXMpO1xuXHR9LFxuXG5cdC8qKlxuICAqIERlY29kZSByZXNwb25zZSBhcyB0ZXh0LCB3aGlsZSBhdXRvbWF0aWNhbGx5IGRldGVjdGluZyB0aGUgZW5jb2RpbmcgYW5kXG4gICogdHJ5aW5nIHRvIGRlY29kZSB0byBVVEYtOCAobm9uLXNwZWMgYXBpKVxuICAqXG4gICogQHJldHVybiAgUHJvbWlzZVxuICAqL1xuXHR0ZXh0Q29udmVydGVkKCkge1xuXHRcdHZhciBfdGhpczMgPSB0aGlzO1xuXG5cdFx0cmV0dXJuIGNvbnN1bWVCb2R5LmNhbGwodGhpcykudGhlbihmdW5jdGlvbiAoYnVmZmVyKSB7XG5cdFx0XHRyZXR1cm4gY29udmVydEJvZHkoYnVmZmVyLCBfdGhpczMuaGVhZGVycyk7XG5cdFx0fSk7XG5cdH1cbn07XG5cbi8vIEluIGJyb3dzZXJzLCBhbGwgcHJvcGVydGllcyBhcmUgZW51bWVyYWJsZS5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEJvZHkucHJvdG90eXBlLCB7XG5cdGJvZHk6IHsgZW51bWVyYWJsZTogdHJ1ZSB9LFxuXHRib2R5VXNlZDogeyBlbnVtZXJhYmxlOiB0cnVlIH0sXG5cdGFycmF5QnVmZmVyOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0YmxvYjogeyBlbnVtZXJhYmxlOiB0cnVlIH0sXG5cdGpzb246IHsgZW51bWVyYWJsZTogdHJ1ZSB9LFxuXHR0ZXh0OiB7IGVudW1lcmFibGU6IHRydWUgfVxufSk7XG5cbkJvZHkubWl4SW4gPSBmdW5jdGlvbiAocHJvdG8pIHtcblx0Zm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEJvZHkucHJvdG90eXBlKSkge1xuXHRcdC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlOiBmdXR1cmUgcHJvb2Zcblx0XHRpZiAoIShuYW1lIGluIHByb3RvKSkge1xuXHRcdFx0Y29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQm9keS5wcm90b3R5cGUsIG5hbWUpO1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCBuYW1lLCBkZXNjKTtcblx0XHR9XG5cdH1cbn07XG5cbi8qKlxuICogQ29uc3VtZSBhbmQgY29udmVydCBhbiBlbnRpcmUgQm9keSB0byBhIEJ1ZmZlci5cbiAqXG4gKiBSZWY6IGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktY29uc3VtZS1ib2R5XG4gKlxuICogQHJldHVybiAgUHJvbWlzZVxuICovXG5mdW5jdGlvbiBjb25zdW1lQm9keSgpIHtcblx0dmFyIF90aGlzNCA9IHRoaXM7XG5cblx0aWYgKHRoaXNbSU5URVJOQUxTXS5kaXN0dXJiZWQpIHtcblx0XHRyZXR1cm4gQm9keS5Qcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKGBib2R5IHVzZWQgYWxyZWFkeSBmb3I6ICR7dGhpcy51cmx9YCkpO1xuXHR9XG5cblx0dGhpc1tJTlRFUk5BTFNdLmRpc3R1cmJlZCA9IHRydWU7XG5cblx0aWYgKHRoaXNbSU5URVJOQUxTXS5lcnJvcikge1xuXHRcdHJldHVybiBCb2R5LlByb21pc2UucmVqZWN0KHRoaXNbSU5URVJOQUxTXS5lcnJvcik7XG5cdH1cblxuXHRsZXQgYm9keSA9IHRoaXMuYm9keTtcblxuXHQvLyBib2R5IGlzIG51bGxcblx0aWYgKGJvZHkgPT09IG51bGwpIHtcblx0XHRyZXR1cm4gQm9keS5Qcm9taXNlLnJlc29sdmUoQnVmZmVyLmFsbG9jKDApKTtcblx0fVxuXG5cdC8vIGJvZHkgaXMgYmxvYlxuXHRpZiAoaXNCbG9iKGJvZHkpKSB7XG5cdFx0Ym9keSA9IGJvZHkuc3RyZWFtKCk7XG5cdH1cblxuXHQvLyBib2R5IGlzIGJ1ZmZlclxuXHRpZiAoQnVmZmVyLmlzQnVmZmVyKGJvZHkpKSB7XG5cdFx0cmV0dXJuIEJvZHkuUHJvbWlzZS5yZXNvbHZlKGJvZHkpO1xuXHR9XG5cblx0Ly8gaXN0YW5idWwgaWdub3JlIGlmOiBzaG91bGQgbmV2ZXIgaGFwcGVuXG5cdGlmICghKGJvZHkgaW5zdGFuY2VvZiBTdHJlYW0pKSB7XG5cdFx0cmV0dXJuIEJvZHkuUHJvbWlzZS5yZXNvbHZlKEJ1ZmZlci5hbGxvYygwKSk7XG5cdH1cblxuXHQvLyBib2R5IGlzIHN0cmVhbVxuXHQvLyBnZXQgcmVhZHkgdG8gYWN0dWFsbHkgY29uc3VtZSB0aGUgYm9keVxuXHRsZXQgYWNjdW0gPSBbXTtcblx0bGV0IGFjY3VtQnl0ZXMgPSAwO1xuXHRsZXQgYWJvcnQgPSBmYWxzZTtcblxuXHRyZXR1cm4gbmV3IEJvZHkuUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdFx0bGV0IHJlc1RpbWVvdXQ7XG5cblx0XHQvLyBhbGxvdyB0aW1lb3V0IG9uIHNsb3cgcmVzcG9uc2UgYm9keVxuXHRcdGlmIChfdGhpczQudGltZW91dCkge1xuXHRcdFx0cmVzVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRhYm9ydCA9IHRydWU7XG5cdFx0XHRcdHJlamVjdChuZXcgRmV0Y2hFcnJvcihgUmVzcG9uc2UgdGltZW91dCB3aGlsZSB0cnlpbmcgdG8gZmV0Y2ggJHtfdGhpczQudXJsfSAob3ZlciAke190aGlzNC50aW1lb3V0fW1zKWAsICdib2R5LXRpbWVvdXQnKSk7XG5cdFx0XHR9LCBfdGhpczQudGltZW91dCk7XG5cdFx0fVxuXG5cdFx0Ly8gaGFuZGxlIHN0cmVhbSBlcnJvcnNcblx0XHRib2R5Lm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpIHtcblx0XHRcdGlmIChlcnIubmFtZSA9PT0gJ0Fib3J0RXJyb3InKSB7XG5cdFx0XHRcdC8vIGlmIHRoZSByZXF1ZXN0IHdhcyBhYm9ydGVkLCByZWplY3Qgd2l0aCB0aGlzIEVycm9yXG5cdFx0XHRcdGFib3J0ID0gdHJ1ZTtcblx0XHRcdFx0cmVqZWN0KGVycik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBvdGhlciBlcnJvcnMsIHN1Y2ggYXMgaW5jb3JyZWN0IGNvbnRlbnQtZW5jb2Rpbmdcblx0XHRcdFx0cmVqZWN0KG5ldyBGZXRjaEVycm9yKGBJbnZhbGlkIHJlc3BvbnNlIGJvZHkgd2hpbGUgdHJ5aW5nIHRvIGZldGNoICR7X3RoaXM0LnVybH06ICR7ZXJyLm1lc3NhZ2V9YCwgJ3N5c3RlbScsIGVycikpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Ym9keS5vbignZGF0YScsIGZ1bmN0aW9uIChjaHVuaykge1xuXHRcdFx0aWYgKGFib3J0IHx8IGNodW5rID09PSBudWxsKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKF90aGlzNC5zaXplICYmIGFjY3VtQnl0ZXMgKyBjaHVuay5sZW5ndGggPiBfdGhpczQuc2l6ZSkge1xuXHRcdFx0XHRhYm9ydCA9IHRydWU7XG5cdFx0XHRcdHJlamVjdChuZXcgRmV0Y2hFcnJvcihgY29udGVudCBzaXplIGF0ICR7X3RoaXM0LnVybH0gb3ZlciBsaW1pdDogJHtfdGhpczQuc2l6ZX1gLCAnbWF4LXNpemUnKSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0YWNjdW1CeXRlcyArPSBjaHVuay5sZW5ndGg7XG5cdFx0XHRhY2N1bS5wdXNoKGNodW5rKTtcblx0XHR9KTtcblxuXHRcdGJvZHkub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcblx0XHRcdGlmIChhYm9ydCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNsZWFyVGltZW91dChyZXNUaW1lb3V0KTtcblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cmVzb2x2ZShCdWZmZXIuY29uY2F0KGFjY3VtLCBhY2N1bUJ5dGVzKSk7XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0Ly8gaGFuZGxlIHN0cmVhbXMgdGhhdCBoYXZlIGFjY3VtdWxhdGVkIHRvbyBtdWNoIGRhdGEgKGlzc3VlICM0MTQpXG5cdFx0XHRcdHJlamVjdChuZXcgRmV0Y2hFcnJvcihgQ291bGQgbm90IGNyZWF0ZSBCdWZmZXIgZnJvbSByZXNwb25zZSBib2R5IGZvciAke190aGlzNC51cmx9OiAke2Vyci5tZXNzYWdlfWAsICdzeXN0ZW0nLCBlcnIpKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSk7XG59XG5cbi8qKlxuICogRGV0ZWN0IGJ1ZmZlciBlbmNvZGluZyBhbmQgY29udmVydCB0byB0YXJnZXQgZW5jb2RpbmdcbiAqIHJlZjogaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9XRC1odG1sNS0yMDExMDExMy9wYXJzaW5nLmh0bWwjZGV0ZXJtaW5pbmctdGhlLWNoYXJhY3Rlci1lbmNvZGluZ1xuICpcbiAqIEBwYXJhbSAgIEJ1ZmZlciAgYnVmZmVyICAgIEluY29taW5nIGJ1ZmZlclxuICogQHBhcmFtICAgU3RyaW5nICBlbmNvZGluZyAgVGFyZ2V0IGVuY29kaW5nXG4gKiBAcmV0dXJuICBTdHJpbmdcbiAqL1xuZnVuY3Rpb24gY29udmVydEJvZHkoYnVmZmVyLCBoZWFkZXJzKSB7XG5cdGlmICh0eXBlb2YgY29udmVydCAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdHRocm93IG5ldyBFcnJvcignVGhlIHBhY2thZ2UgYGVuY29kaW5nYCBtdXN0IGJlIGluc3RhbGxlZCB0byB1c2UgdGhlIHRleHRDb252ZXJ0ZWQoKSBmdW5jdGlvbicpO1xuXHR9XG5cblx0Y29uc3QgY3QgPSBoZWFkZXJzLmdldCgnY29udGVudC10eXBlJyk7XG5cdGxldCBjaGFyc2V0ID0gJ3V0Zi04Jztcblx0bGV0IHJlcywgc3RyO1xuXG5cdC8vIGhlYWRlclxuXHRpZiAoY3QpIHtcblx0XHRyZXMgPSAvY2hhcnNldD0oW147XSopL2kuZXhlYyhjdCk7XG5cdH1cblxuXHQvLyBubyBjaGFyc2V0IGluIGNvbnRlbnQgdHlwZSwgcGVlayBhdCByZXNwb25zZSBib2R5IGZvciBhdCBtb3N0IDEwMjQgYnl0ZXNcblx0c3RyID0gYnVmZmVyLnNsaWNlKDAsIDEwMjQpLnRvU3RyaW5nKCk7XG5cblx0Ly8gaHRtbDVcblx0aWYgKCFyZXMgJiYgc3RyKSB7XG5cdFx0cmVzID0gLzxtZXRhLis/Y2hhcnNldD0oWydcIl0pKC4rPylcXDEvaS5leGVjKHN0cik7XG5cdH1cblxuXHQvLyBodG1sNFxuXHRpZiAoIXJlcyAmJiBzdHIpIHtcblx0XHRyZXMgPSAvPG1ldGFbXFxzXSs/aHR0cC1lcXVpdj0oWydcIl0pY29udGVudC10eXBlXFwxW1xcc10rP2NvbnRlbnQ9KFsnXCJdKSguKz8pXFwyL2kuZXhlYyhzdHIpO1xuXHRcdGlmICghcmVzKSB7XG5cdFx0XHRyZXMgPSAvPG1ldGFbXFxzXSs/Y29udGVudD0oWydcIl0pKC4rPylcXDFbXFxzXSs/aHR0cC1lcXVpdj0oWydcIl0pY29udGVudC10eXBlXFwzL2kuZXhlYyhzdHIpO1xuXHRcdFx0aWYgKHJlcykge1xuXHRcdFx0XHRyZXMucG9wKCk7IC8vIGRyb3AgbGFzdCBxdW90ZVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChyZXMpIHtcblx0XHRcdHJlcyA9IC9jaGFyc2V0PSguKikvaS5leGVjKHJlcy5wb3AoKSk7XG5cdFx0fVxuXHR9XG5cblx0Ly8geG1sXG5cdGlmICghcmVzICYmIHN0cikge1xuXHRcdHJlcyA9IC88XFw/eG1sLis/ZW5jb2Rpbmc9KFsnXCJdKSguKz8pXFwxL2kuZXhlYyhzdHIpO1xuXHR9XG5cblx0Ly8gZm91bmQgY2hhcnNldFxuXHRpZiAocmVzKSB7XG5cdFx0Y2hhcnNldCA9IHJlcy5wb3AoKTtcblxuXHRcdC8vIHByZXZlbnQgZGVjb2RlIGlzc3VlcyB3aGVuIHNpdGVzIHVzZSBpbmNvcnJlY3QgZW5jb2Rpbmdcblx0XHQvLyByZWY6IGh0dHBzOi8vaHNpdm9uZW4uZmkvZW5jb2RpbmctbWVudS9cblx0XHRpZiAoY2hhcnNldCA9PT0gJ2diMjMxMicgfHwgY2hhcnNldCA9PT0gJ2diaycpIHtcblx0XHRcdGNoYXJzZXQgPSAnZ2IxODAzMCc7XG5cdFx0fVxuXHR9XG5cblx0Ly8gdHVybiByYXcgYnVmZmVycyBpbnRvIGEgc2luZ2xlIHV0Zi04IGJ1ZmZlclxuXHRyZXR1cm4gY29udmVydChidWZmZXIsICdVVEYtOCcsIGNoYXJzZXQpLnRvU3RyaW5nKCk7XG59XG5cbi8qKlxuICogRGV0ZWN0IGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdFxuICogcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYml0aW5uL25vZGUtZmV0Y2gvaXNzdWVzLzI5NiNpc3N1ZWNvbW1lbnQtMzA3NTk4MTQzXG4gKlxuICogQHBhcmFtICAgT2JqZWN0ICBvYmogICAgIE9iamVjdCB0byBkZXRlY3QgYnkgdHlwZSBvciBicmFuZFxuICogQHJldHVybiAgU3RyaW5nXG4gKi9cbmZ1bmN0aW9uIGlzVVJMU2VhcmNoUGFyYW1zKG9iaikge1xuXHQvLyBEdWNrLXR5cGluZyBhcyBhIG5lY2Vzc2FyeSBjb25kaXRpb24uXG5cdGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqLmFwcGVuZCAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Ygb2JqLmRlbGV0ZSAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Ygb2JqLmdldCAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Ygb2JqLmdldEFsbCAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Ygb2JqLmhhcyAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Ygb2JqLnNldCAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8vIEJyYW5kLWNoZWNraW5nIGFuZCBtb3JlIGR1Y2stdHlwaW5nIGFzIG9wdGlvbmFsIGNvbmRpdGlvbi5cblx0cmV0dXJuIG9iai5jb25zdHJ1Y3Rvci5uYW1lID09PSAnVVJMU2VhcmNoUGFyYW1zJyB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgVVJMU2VhcmNoUGFyYW1zXScgfHwgdHlwZW9mIG9iai5zb3J0ID09PSAnZnVuY3Rpb24nO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGBvYmpgIGlzIGEgVzNDIGBCbG9iYCBvYmplY3QgKHdoaWNoIGBGaWxlYCBpbmhlcml0cyBmcm9tKVxuICogQHBhcmFtICB7Kn0gb2JqXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc0Jsb2Iob2JqKSB7XG5cdHJldHVybiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb2JqLmFycmF5QnVmZmVyID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBvYmoudHlwZSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIG9iai5zdHJlYW0gPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5jb25zdHJ1Y3RvciA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygb2JqLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdzdHJpbmcnICYmIC9eKEJsb2J8RmlsZSkkLy50ZXN0KG9iai5jb25zdHJ1Y3Rvci5uYW1lKSAmJiAvXihCbG9ifEZpbGUpJC8udGVzdChvYmpbU3ltYm9sLnRvU3RyaW5nVGFnXSk7XG59XG5cbi8qKlxuICogQ2xvbmUgYm9keSBnaXZlbiBSZXMvUmVxIGluc3RhbmNlXG4gKlxuICogQHBhcmFtICAgTWl4ZWQgIGluc3RhbmNlICBSZXNwb25zZSBvciBSZXF1ZXN0IGluc3RhbmNlXG4gKiBAcmV0dXJuICBNaXhlZFxuICovXG5mdW5jdGlvbiBjbG9uZShpbnN0YW5jZSkge1xuXHRsZXQgcDEsIHAyO1xuXHRsZXQgYm9keSA9IGluc3RhbmNlLmJvZHk7XG5cblx0Ly8gZG9uJ3QgYWxsb3cgY2xvbmluZyBhIHVzZWQgYm9keVxuXHRpZiAoaW5zdGFuY2UuYm9keVVzZWQpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBjbG9uZSBib2R5IGFmdGVyIGl0IGlzIHVzZWQnKTtcblx0fVxuXG5cdC8vIGNoZWNrIHRoYXQgYm9keSBpcyBhIHN0cmVhbSBhbmQgbm90IGZvcm0tZGF0YSBvYmplY3Rcblx0Ly8gbm90ZTogd2UgY2FuJ3QgY2xvbmUgdGhlIGZvcm0tZGF0YSBvYmplY3Qgd2l0aG91dCBoYXZpbmcgaXQgYXMgYSBkZXBlbmRlbmN5XG5cdGlmIChib2R5IGluc3RhbmNlb2YgU3RyZWFtICYmIHR5cGVvZiBib2R5LmdldEJvdW5kYXJ5ICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0Ly8gdGVlIGluc3RhbmNlIGJvZHlcblx0XHRwMSA9IG5ldyBQYXNzVGhyb3VnaCgpO1xuXHRcdHAyID0gbmV3IFBhc3NUaHJvdWdoKCk7XG5cdFx0Ym9keS5waXBlKHAxKTtcblx0XHRib2R5LnBpcGUocDIpO1xuXHRcdC8vIHNldCBpbnN0YW5jZSBib2R5IHRvIHRlZWQgYm9keSBhbmQgcmV0dXJuIHRoZSBvdGhlciB0ZWVkIGJvZHlcblx0XHRpbnN0YW5jZVtJTlRFUk5BTFNdLmJvZHkgPSBwMTtcblx0XHRib2R5ID0gcDI7XG5cdH1cblxuXHRyZXR1cm4gYm9keTtcbn1cblxuLyoqXG4gKiBQZXJmb3JtcyB0aGUgb3BlcmF0aW9uIFwiZXh0cmFjdCBhIGBDb250ZW50LVR5cGVgIHZhbHVlIGZyb20gfG9iamVjdHxcIiBhc1xuICogc3BlY2lmaWVkIGluIHRoZSBzcGVjaWZpY2F0aW9uOlxuICogaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtYm9keWluaXQtZXh0cmFjdFxuICpcbiAqIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IGluc3RhbmNlLmJvZHkgaXMgcHJlc2VudC5cbiAqXG4gKiBAcGFyYW0gICBNaXhlZCAgaW5zdGFuY2UgIEFueSBvcHRpb25zLmJvZHkgaW5wdXRcbiAqL1xuZnVuY3Rpb24gZXh0cmFjdENvbnRlbnRUeXBlKGJvZHkpIHtcblx0aWYgKGJvZHkgPT09IG51bGwpIHtcblx0XHQvLyBib2R5IGlzIG51bGxcblx0XHRyZXR1cm4gbnVsbDtcblx0fSBlbHNlIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcblx0XHQvLyBib2R5IGlzIHN0cmluZ1xuXHRcdHJldHVybiAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04Jztcblx0fSBlbHNlIGlmIChpc1VSTFNlYXJjaFBhcmFtcyhib2R5KSkge1xuXHRcdC8vIGJvZHkgaXMgYSBVUkxTZWFyY2hQYXJhbXNcblx0XHRyZXR1cm4gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04Jztcblx0fSBlbHNlIGlmIChpc0Jsb2IoYm9keSkpIHtcblx0XHQvLyBib2R5IGlzIGJsb2Jcblx0XHRyZXR1cm4gYm9keS50eXBlIHx8IG51bGw7XG5cdH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKGJvZHkpKSB7XG5cdFx0Ly8gYm9keSBpcyBidWZmZXJcblx0XHRyZXR1cm4gbnVsbDtcblx0fSBlbHNlIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYm9keSkgPT09ICdbb2JqZWN0IEFycmF5QnVmZmVyXScpIHtcblx0XHQvLyBib2R5IGlzIEFycmF5QnVmZmVyXG5cdFx0cmV0dXJuIG51bGw7XG5cdH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KGJvZHkpKSB7XG5cdFx0Ly8gYm9keSBpcyBBcnJheUJ1ZmZlclZpZXdcblx0XHRyZXR1cm4gbnVsbDtcblx0fSBlbHNlIGlmICh0eXBlb2YgYm9keS5nZXRCb3VuZGFyeSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdC8vIGRldGVjdCBmb3JtIGRhdGEgaW5wdXQgZnJvbSBmb3JtLWRhdGEgbW9kdWxlXG5cdFx0cmV0dXJuIGBtdWx0aXBhcnQvZm9ybS1kYXRhO2JvdW5kYXJ5PSR7Ym9keS5nZXRCb3VuZGFyeSgpfWA7XG5cdH0gZWxzZSBpZiAoYm9keSBpbnN0YW5jZW9mIFN0cmVhbSkge1xuXHRcdC8vIGJvZHkgaXMgc3RyZWFtXG5cdFx0Ly8gY2FuJ3QgcmVhbGx5IGRvIG11Y2ggYWJvdXQgdGhpc1xuXHRcdHJldHVybiBudWxsO1xuXHR9IGVsc2Uge1xuXHRcdC8vIEJvZHkgY29uc3RydWN0b3IgZGVmYXVsdHMgb3RoZXIgdGhpbmdzIHRvIHN0cmluZ1xuXHRcdHJldHVybiAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04Jztcblx0fVxufVxuXG4vKipcbiAqIFRoZSBGZXRjaCBTdGFuZGFyZCB0cmVhdHMgdGhpcyBhcyBpZiBcInRvdGFsIGJ5dGVzXCIgaXMgYSBwcm9wZXJ0eSBvbiB0aGUgYm9keS5cbiAqIEZvciB1cywgd2UgaGF2ZSB0byBleHBsaWNpdGx5IGdldCBpdCB3aXRoIGEgZnVuY3Rpb24uXG4gKlxuICogcmVmOiBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1ib2R5LXRvdGFsLWJ5dGVzXG4gKlxuICogQHBhcmFtICAgQm9keSAgICBpbnN0YW5jZSAgIEluc3RhbmNlIG9mIEJvZHlcbiAqIEByZXR1cm4gIE51bWJlcj8gICAgICAgICAgICBOdW1iZXIgb2YgYnl0ZXMsIG9yIG51bGwgaWYgbm90IHBvc3NpYmxlXG4gKi9cbmZ1bmN0aW9uIGdldFRvdGFsQnl0ZXMoaW5zdGFuY2UpIHtcblx0Y29uc3QgYm9keSA9IGluc3RhbmNlLmJvZHk7XG5cblxuXHRpZiAoYm9keSA9PT0gbnVsbCkge1xuXHRcdC8vIGJvZHkgaXMgbnVsbFxuXHRcdHJldHVybiAwO1xuXHR9IGVsc2UgaWYgKGlzQmxvYihib2R5KSkge1xuXHRcdHJldHVybiBib2R5LnNpemU7XG5cdH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKGJvZHkpKSB7XG5cdFx0Ly8gYm9keSBpcyBidWZmZXJcblx0XHRyZXR1cm4gYm9keS5sZW5ndGg7XG5cdH0gZWxzZSBpZiAoYm9keSAmJiB0eXBlb2YgYm9keS5nZXRMZW5ndGhTeW5jID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0Ly8gZGV0ZWN0IGZvcm0gZGF0YSBpbnB1dCBmcm9tIGZvcm0tZGF0YSBtb2R1bGVcblx0XHRpZiAoYm9keS5fbGVuZ3RoUmV0cmlldmVycyAmJiBib2R5Ll9sZW5ndGhSZXRyaWV2ZXJzLmxlbmd0aCA9PSAwIHx8IC8vIDEueFxuXHRcdGJvZHkuaGFzS25vd25MZW5ndGggJiYgYm9keS5oYXNLbm93bkxlbmd0aCgpKSB7XG5cdFx0XHQvLyAyLnhcblx0XHRcdHJldHVybiBib2R5LmdldExlbmd0aFN5bmMoKTtcblx0XHR9XG5cdFx0cmV0dXJuIG51bGw7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gYm9keSBpcyBzdHJlYW1cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxufVxuXG4vKipcbiAqIFdyaXRlIGEgQm9keSB0byBhIE5vZGUuanMgV3JpdGFibGVTdHJlYW0gKGUuZy4gaHR0cC5SZXF1ZXN0KSBvYmplY3QuXG4gKlxuICogQHBhcmFtICAgQm9keSAgICBpbnN0YW5jZSAgIEluc3RhbmNlIG9mIEJvZHlcbiAqIEByZXR1cm4gIFZvaWRcbiAqL1xuZnVuY3Rpb24gd3JpdGVUb1N0cmVhbShkZXN0LCBpbnN0YW5jZSkge1xuXHRjb25zdCBib2R5ID0gaW5zdGFuY2UuYm9keTtcblxuXG5cdGlmIChib2R5ID09PSBudWxsKSB7XG5cdFx0Ly8gYm9keSBpcyBudWxsXG5cdFx0ZGVzdC5lbmQoKTtcblx0fSBlbHNlIGlmIChpc0Jsb2IoYm9keSkpIHtcblx0XHRib2R5LnN0cmVhbSgpLnBpcGUoZGVzdCk7XG5cdH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKGJvZHkpKSB7XG5cdFx0Ly8gYm9keSBpcyBidWZmZXJcblx0XHRkZXN0LndyaXRlKGJvZHkpO1xuXHRcdGRlc3QuZW5kKCk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gYm9keSBpcyBzdHJlYW1cblx0XHRib2R5LnBpcGUoZGVzdCk7XG5cdH1cbn1cblxuLy8gZXhwb3NlIFByb21pc2VcbkJvZHkuUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuXG4vKipcbiAqIGhlYWRlcnMuanNcbiAqXG4gKiBIZWFkZXJzIGNsYXNzIG9mZmVycyBjb252ZW5pZW50IGhlbHBlcnNcbiAqL1xuXG5jb25zdCBpbnZhbGlkVG9rZW5SZWdleCA9IC9bXlxcXl9gYS16QS1aXFwtMC05ISMkJSYnKisufH5dLztcbmNvbnN0IGludmFsaWRIZWFkZXJDaGFyUmVnZXggPSAvW15cXHRcXHgyMC1cXHg3ZVxceDgwLVxceGZmXS87XG5cbmZ1bmN0aW9uIHZhbGlkYXRlTmFtZShuYW1lKSB7XG5cdG5hbWUgPSBgJHtuYW1lfWA7XG5cdGlmIChpbnZhbGlkVG9rZW5SZWdleC50ZXN0KG5hbWUpIHx8IG5hbWUgPT09ICcnKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgJHtuYW1lfSBpcyBub3QgYSBsZWdhbCBIVFRQIGhlYWRlciBuYW1lYCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVWYWx1ZSh2YWx1ZSkge1xuXHR2YWx1ZSA9IGAke3ZhbHVlfWA7XG5cdGlmIChpbnZhbGlkSGVhZGVyQ2hhclJlZ2V4LnRlc3QodmFsdWUpKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgJHt2YWx1ZX0gaXMgbm90IGEgbGVnYWwgSFRUUCBoZWFkZXIgdmFsdWVgKTtcblx0fVxufVxuXG4vKipcbiAqIEZpbmQgdGhlIGtleSBpbiB0aGUgbWFwIG9iamVjdCBnaXZlbiBhIGhlYWRlciBuYW1lLlxuICpcbiAqIFJldHVybnMgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZC5cbiAqXG4gKiBAcGFyYW0gICBTdHJpbmcgIG5hbWUgIEhlYWRlciBuYW1lXG4gKiBAcmV0dXJuICBTdHJpbmd8VW5kZWZpbmVkXG4gKi9cbmZ1bmN0aW9uIGZpbmQobWFwLCBuYW1lKSB7XG5cdG5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cdGZvciAoY29uc3Qga2V5IGluIG1hcCkge1xuXHRcdGlmIChrZXkudG9Mb3dlckNhc2UoKSA9PT0gbmFtZSkge1xuXHRcdFx0cmV0dXJuIGtleTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuY29uc3QgTUFQID0gU3ltYm9sKCdtYXAnKTtcbmNsYXNzIEhlYWRlcnMge1xuXHQvKipcbiAgKiBIZWFkZXJzIGNsYXNzXG4gICpcbiAgKiBAcGFyYW0gICBPYmplY3QgIGhlYWRlcnMgIFJlc3BvbnNlIGhlYWRlcnNcbiAgKiBAcmV0dXJuICBWb2lkXG4gICovXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGxldCBpbml0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQ7XG5cblx0XHR0aGlzW01BUF0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG5cdFx0aWYgKGluaXQgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG5cdFx0XHRjb25zdCByYXdIZWFkZXJzID0gaW5pdC5yYXcoKTtcblx0XHRcdGNvbnN0IGhlYWRlck5hbWVzID0gT2JqZWN0LmtleXMocmF3SGVhZGVycyk7XG5cblx0XHRcdGZvciAoY29uc3QgaGVhZGVyTmFtZSBvZiBoZWFkZXJOYW1lcykge1xuXHRcdFx0XHRmb3IgKGNvbnN0IHZhbHVlIG9mIHJhd0hlYWRlcnNbaGVhZGVyTmFtZV0pIHtcblx0XHRcdFx0XHR0aGlzLmFwcGVuZChoZWFkZXJOYW1lLCB2YWx1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIFdlIGRvbid0IHdvcnJ5IGFib3V0IGNvbnZlcnRpbmcgcHJvcCB0byBCeXRlU3RyaW5nIGhlcmUgYXMgYXBwZW5kKClcblx0XHQvLyB3aWxsIGhhbmRsZSBpdC5cblx0XHRpZiAoaW5pdCA9PSBudWxsKSA7IGVsc2UgaWYgKHR5cGVvZiBpbml0ID09PSAnb2JqZWN0Jykge1xuXHRcdFx0Y29uc3QgbWV0aG9kID0gaW5pdFtTeW1ib2wuaXRlcmF0b3JdO1xuXHRcdFx0aWYgKG1ldGhvZCAhPSBudWxsKSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgbWV0aG9kICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignSGVhZGVyIHBhaXJzIG11c3QgYmUgaXRlcmFibGUnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIHNlcXVlbmNlPHNlcXVlbmNlPEJ5dGVTdHJpbmc+PlxuXHRcdFx0XHQvLyBOb3RlOiBwZXIgc3BlYyB3ZSBoYXZlIHRvIGZpcnN0IGV4aGF1c3QgdGhlIGxpc3RzIHRoZW4gcHJvY2VzcyB0aGVtXG5cdFx0XHRcdGNvbnN0IHBhaXJzID0gW107XG5cdFx0XHRcdGZvciAoY29uc3QgcGFpciBvZiBpbml0KSB7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBwYWlyICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgcGFpcltTeW1ib2wuaXRlcmF0b3JdICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFYWNoIGhlYWRlciBwYWlyIG11c3QgYmUgaXRlcmFibGUnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cGFpcnMucHVzaChBcnJheS5mcm9tKHBhaXIpKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xuXHRcdFx0XHRcdGlmIChwYWlyLmxlbmd0aCAhPT0gMikge1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRWFjaCBoZWFkZXIgcGFpciBtdXN0IGJlIGEgbmFtZS92YWx1ZSB0dXBsZScpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmFwcGVuZChwYWlyWzBdLCBwYWlyWzFdKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gcmVjb3JkPEJ5dGVTdHJpbmcsIEJ5dGVTdHJpbmc+XG5cdFx0XHRcdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGluaXQpKSB7XG5cdFx0XHRcdFx0Y29uc3QgdmFsdWUgPSBpbml0W2tleV07XG5cdFx0XHRcdFx0dGhpcy5hcHBlbmQoa2V5LCB2YWx1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignUHJvdmlkZWQgaW5pdGlhbGl6ZXIgbXVzdCBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cdH1cblxuXHQvKipcbiAgKiBSZXR1cm4gY29tYmluZWQgaGVhZGVyIHZhbHVlIGdpdmVuIG5hbWVcbiAgKlxuICAqIEBwYXJhbSAgIFN0cmluZyAgbmFtZSAgSGVhZGVyIG5hbWVcbiAgKiBAcmV0dXJuICBNaXhlZFxuICAqL1xuXHRnZXQobmFtZSkge1xuXHRcdG5hbWUgPSBgJHtuYW1lfWA7XG5cdFx0dmFsaWRhdGVOYW1lKG5hbWUpO1xuXHRcdGNvbnN0IGtleSA9IGZpbmQodGhpc1tNQVBdLCBuYW1lKTtcblx0XHRpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzW01BUF1ba2V5XS5qb2luKCcsICcpO1xuXHR9XG5cblx0LyoqXG4gICogSXRlcmF0ZSBvdmVyIGFsbCBoZWFkZXJzXG4gICpcbiAgKiBAcGFyYW0gICBGdW5jdGlvbiAgY2FsbGJhY2sgIEV4ZWN1dGVkIGZvciBlYWNoIGl0ZW0gd2l0aCBwYXJhbWV0ZXJzICh2YWx1ZSwgbmFtZSwgdGhpc0FyZylcbiAgKiBAcGFyYW0gICBCb29sZWFuICAgdGhpc0FyZyAgIGB0aGlzYCBjb250ZXh0IGZvciBjYWxsYmFjayBmdW5jdGlvblxuICAqIEByZXR1cm4gIFZvaWRcbiAgKi9cblx0Zm9yRWFjaChjYWxsYmFjaykge1xuXHRcdGxldCB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG5cblx0XHRsZXQgcGFpcnMgPSBnZXRIZWFkZXJzKHRoaXMpO1xuXHRcdGxldCBpID0gMDtcblx0XHR3aGlsZSAoaSA8IHBhaXJzLmxlbmd0aCkge1xuXHRcdFx0dmFyIF9wYWlycyRpID0gcGFpcnNbaV07XG5cdFx0XHRjb25zdCBuYW1lID0gX3BhaXJzJGlbMF0sXG5cdFx0XHQgICAgICB2YWx1ZSA9IF9wYWlycyRpWzFdO1xuXG5cdFx0XHRjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHZhbHVlLCBuYW1lLCB0aGlzKTtcblx0XHRcdHBhaXJzID0gZ2V0SGVhZGVycyh0aGlzKTtcblx0XHRcdGkrKztcblx0XHR9XG5cdH1cblxuXHQvKipcbiAgKiBPdmVyd3JpdGUgaGVhZGVyIHZhbHVlcyBnaXZlbiBuYW1lXG4gICpcbiAgKiBAcGFyYW0gICBTdHJpbmcgIG5hbWUgICBIZWFkZXIgbmFtZVxuICAqIEBwYXJhbSAgIFN0cmluZyAgdmFsdWUgIEhlYWRlciB2YWx1ZVxuICAqIEByZXR1cm4gIFZvaWRcbiAgKi9cblx0c2V0KG5hbWUsIHZhbHVlKSB7XG5cdFx0bmFtZSA9IGAke25hbWV9YDtcblx0XHR2YWx1ZSA9IGAke3ZhbHVlfWA7XG5cdFx0dmFsaWRhdGVOYW1lKG5hbWUpO1xuXHRcdHZhbGlkYXRlVmFsdWUodmFsdWUpO1xuXHRcdGNvbnN0IGtleSA9IGZpbmQodGhpc1tNQVBdLCBuYW1lKTtcblx0XHR0aGlzW01BUF1ba2V5ICE9PSB1bmRlZmluZWQgPyBrZXkgOiBuYW1lXSA9IFt2YWx1ZV07XG5cdH1cblxuXHQvKipcbiAgKiBBcHBlbmQgYSB2YWx1ZSBvbnRvIGV4aXN0aW5nIGhlYWRlclxuICAqXG4gICogQHBhcmFtICAgU3RyaW5nICBuYW1lICAgSGVhZGVyIG5hbWVcbiAgKiBAcGFyYW0gICBTdHJpbmcgIHZhbHVlICBIZWFkZXIgdmFsdWVcbiAgKiBAcmV0dXJuICBWb2lkXG4gICovXG5cdGFwcGVuZChuYW1lLCB2YWx1ZSkge1xuXHRcdG5hbWUgPSBgJHtuYW1lfWA7XG5cdFx0dmFsdWUgPSBgJHt2YWx1ZX1gO1xuXHRcdHZhbGlkYXRlTmFtZShuYW1lKTtcblx0XHR2YWxpZGF0ZVZhbHVlKHZhbHVlKTtcblx0XHRjb25zdCBrZXkgPSBmaW5kKHRoaXNbTUFQXSwgbmFtZSk7XG5cdFx0aWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzW01BUF1ba2V5XS5wdXNoKHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpc1tNQVBdW25hbWVdID0gW3ZhbHVlXTtcblx0XHR9XG5cdH1cblxuXHQvKipcbiAgKiBDaGVjayBmb3IgaGVhZGVyIG5hbWUgZXhpc3RlbmNlXG4gICpcbiAgKiBAcGFyYW0gICBTdHJpbmcgICBuYW1lICBIZWFkZXIgbmFtZVxuICAqIEByZXR1cm4gIEJvb2xlYW5cbiAgKi9cblx0aGFzKG5hbWUpIHtcblx0XHRuYW1lID0gYCR7bmFtZX1gO1xuXHRcdHZhbGlkYXRlTmFtZShuYW1lKTtcblx0XHRyZXR1cm4gZmluZCh0aGlzW01BUF0sIG5hbWUpICE9PSB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKipcbiAgKiBEZWxldGUgYWxsIGhlYWRlciB2YWx1ZXMgZ2l2ZW4gbmFtZVxuICAqXG4gICogQHBhcmFtICAgU3RyaW5nICBuYW1lICBIZWFkZXIgbmFtZVxuICAqIEByZXR1cm4gIFZvaWRcbiAgKi9cblx0ZGVsZXRlKG5hbWUpIHtcblx0XHRuYW1lID0gYCR7bmFtZX1gO1xuXHRcdHZhbGlkYXRlTmFtZShuYW1lKTtcblx0XHRjb25zdCBrZXkgPSBmaW5kKHRoaXNbTUFQXSwgbmFtZSk7XG5cdFx0aWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRkZWxldGUgdGhpc1tNQVBdW2tleV07XG5cdFx0fVxuXHR9XG5cblx0LyoqXG4gICogUmV0dXJuIHJhdyBoZWFkZXJzIChub24tc3BlYyBhcGkpXG4gICpcbiAgKiBAcmV0dXJuICBPYmplY3RcbiAgKi9cblx0cmF3KCkge1xuXHRcdHJldHVybiB0aGlzW01BUF07XG5cdH1cblxuXHQvKipcbiAgKiBHZXQgYW4gaXRlcmF0b3Igb24ga2V5cy5cbiAgKlxuICAqIEByZXR1cm4gIEl0ZXJhdG9yXG4gICovXG5cdGtleXMoKSB7XG5cdFx0cmV0dXJuIGNyZWF0ZUhlYWRlcnNJdGVyYXRvcih0aGlzLCAna2V5Jyk7XG5cdH1cblxuXHQvKipcbiAgKiBHZXQgYW4gaXRlcmF0b3Igb24gdmFsdWVzLlxuICAqXG4gICogQHJldHVybiAgSXRlcmF0b3JcbiAgKi9cblx0dmFsdWVzKCkge1xuXHRcdHJldHVybiBjcmVhdGVIZWFkZXJzSXRlcmF0b3IodGhpcywgJ3ZhbHVlJyk7XG5cdH1cblxuXHQvKipcbiAgKiBHZXQgYW4gaXRlcmF0b3Igb24gZW50cmllcy5cbiAgKlxuICAqIFRoaXMgaXMgdGhlIGRlZmF1bHQgaXRlcmF0b3Igb2YgdGhlIEhlYWRlcnMgb2JqZWN0LlxuICAqXG4gICogQHJldHVybiAgSXRlcmF0b3JcbiAgKi9cblx0W1N5bWJvbC5pdGVyYXRvcl0oKSB7XG5cdFx0cmV0dXJuIGNyZWF0ZUhlYWRlcnNJdGVyYXRvcih0aGlzLCAna2V5K3ZhbHVlJyk7XG5cdH1cbn1cbkhlYWRlcnMucHJvdG90eXBlLmVudHJpZXMgPSBIZWFkZXJzLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoSGVhZGVycy5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZywge1xuXHR2YWx1ZTogJ0hlYWRlcnMnLFxuXHR3cml0YWJsZTogZmFsc2UsXG5cdGVudW1lcmFibGU6IGZhbHNlLFxuXHRjb25maWd1cmFibGU6IHRydWVcbn0pO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhIZWFkZXJzLnByb3RvdHlwZSwge1xuXHRnZXQ6IHsgZW51bWVyYWJsZTogdHJ1ZSB9LFxuXHRmb3JFYWNoOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0c2V0OiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0YXBwZW5kOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0aGFzOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0ZGVsZXRlOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0a2V5czogeyBlbnVtZXJhYmxlOiB0cnVlIH0sXG5cdHZhbHVlczogeyBlbnVtZXJhYmxlOiB0cnVlIH0sXG5cdGVudHJpZXM6IHsgZW51bWVyYWJsZTogdHJ1ZSB9XG59KTtcblxuZnVuY3Rpb24gZ2V0SGVhZGVycyhoZWFkZXJzKSB7XG5cdGxldCBraW5kID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAna2V5K3ZhbHVlJztcblxuXHRjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaGVhZGVyc1tNQVBdKS5zb3J0KCk7XG5cdHJldHVybiBrZXlzLm1hcChraW5kID09PSAna2V5JyA/IGZ1bmN0aW9uIChrKSB7XG5cdFx0cmV0dXJuIGsudG9Mb3dlckNhc2UoKTtcblx0fSA6IGtpbmQgPT09ICd2YWx1ZScgPyBmdW5jdGlvbiAoaykge1xuXHRcdHJldHVybiBoZWFkZXJzW01BUF1ba10uam9pbignLCAnKTtcblx0fSA6IGZ1bmN0aW9uIChrKSB7XG5cdFx0cmV0dXJuIFtrLnRvTG93ZXJDYXNlKCksIGhlYWRlcnNbTUFQXVtrXS5qb2luKCcsICcpXTtcblx0fSk7XG59XG5cbmNvbnN0IElOVEVSTkFMID0gU3ltYm9sKCdpbnRlcm5hbCcpO1xuXG5mdW5jdGlvbiBjcmVhdGVIZWFkZXJzSXRlcmF0b3IodGFyZ2V0LCBraW5kKSB7XG5cdGNvbnN0IGl0ZXJhdG9yID0gT2JqZWN0LmNyZWF0ZShIZWFkZXJzSXRlcmF0b3JQcm90b3R5cGUpO1xuXHRpdGVyYXRvcltJTlRFUk5BTF0gPSB7XG5cdFx0dGFyZ2V0LFxuXHRcdGtpbmQsXG5cdFx0aW5kZXg6IDBcblx0fTtcblx0cmV0dXJuIGl0ZXJhdG9yO1xufVxuXG5jb25zdCBIZWFkZXJzSXRlcmF0b3JQcm90b3R5cGUgPSBPYmplY3Quc2V0UHJvdG90eXBlT2Yoe1xuXHRuZXh0KCkge1xuXHRcdC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuXHRcdGlmICghdGhpcyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykgIT09IEhlYWRlcnNJdGVyYXRvclByb3RvdHlwZSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignVmFsdWUgb2YgYHRoaXNgIGlzIG5vdCBhIEhlYWRlcnNJdGVyYXRvcicpO1xuXHRcdH1cblxuXHRcdHZhciBfSU5URVJOQUwgPSB0aGlzW0lOVEVSTkFMXTtcblx0XHRjb25zdCB0YXJnZXQgPSBfSU5URVJOQUwudGFyZ2V0LFxuXHRcdCAgICAgIGtpbmQgPSBfSU5URVJOQUwua2luZCxcblx0XHQgICAgICBpbmRleCA9IF9JTlRFUk5BTC5pbmRleDtcblxuXHRcdGNvbnN0IHZhbHVlcyA9IGdldEhlYWRlcnModGFyZ2V0LCBraW5kKTtcblx0XHRjb25zdCBsZW4gPSB2YWx1ZXMubGVuZ3RoO1xuXHRcdGlmIChpbmRleCA+PSBsZW4pIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHZhbHVlOiB1bmRlZmluZWQsXG5cdFx0XHRcdGRvbmU6IHRydWVcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0dGhpc1tJTlRFUk5BTF0uaW5kZXggPSBpbmRleCArIDE7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0dmFsdWU6IHZhbHVlc1tpbmRleF0sXG5cdFx0XHRkb25lOiBmYWxzZVxuXHRcdH07XG5cdH1cbn0sIE9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoW11bU3ltYm9sLml0ZXJhdG9yXSgpKSkpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoSGVhZGVyc0l0ZXJhdG9yUHJvdG90eXBlLCBTeW1ib2wudG9TdHJpbmdUYWcsIHtcblx0dmFsdWU6ICdIZWFkZXJzSXRlcmF0b3InLFxuXHR3cml0YWJsZTogZmFsc2UsXG5cdGVudW1lcmFibGU6IGZhbHNlLFxuXHRjb25maWd1cmFibGU6IHRydWVcbn0pO1xuXG4vKipcbiAqIEV4cG9ydCB0aGUgSGVhZGVycyBvYmplY3QgaW4gYSBmb3JtIHRoYXQgTm9kZS5qcyBjYW4gY29uc3VtZS5cbiAqXG4gKiBAcGFyYW0gICBIZWFkZXJzICBoZWFkZXJzXG4gKiBAcmV0dXJuICBPYmplY3RcbiAqL1xuZnVuY3Rpb24gZXhwb3J0Tm9kZUNvbXBhdGlibGVIZWFkZXJzKGhlYWRlcnMpIHtcblx0Y29uc3Qgb2JqID0gT2JqZWN0LmFzc2lnbih7IF9fcHJvdG9fXzogbnVsbCB9LCBoZWFkZXJzW01BUF0pO1xuXG5cdC8vIGh0dHAucmVxdWVzdCgpIG9ubHkgc3VwcG9ydHMgc3RyaW5nIGFzIEhvc3QgaGVhZGVyLiBUaGlzIGhhY2sgbWFrZXNcblx0Ly8gc3BlY2lmeWluZyBjdXN0b20gSG9zdCBoZWFkZXIgcG9zc2libGUuXG5cdGNvbnN0IGhvc3RIZWFkZXJLZXkgPSBmaW5kKGhlYWRlcnNbTUFQXSwgJ0hvc3QnKTtcblx0aWYgKGhvc3RIZWFkZXJLZXkgIT09IHVuZGVmaW5lZCkge1xuXHRcdG9ialtob3N0SGVhZGVyS2V5XSA9IG9ialtob3N0SGVhZGVyS2V5XVswXTtcblx0fVxuXG5cdHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgSGVhZGVycyBvYmplY3QgZnJvbSBhbiBvYmplY3Qgb2YgaGVhZGVycywgaWdub3JpbmcgdGhvc2UgdGhhdCBkb1xuICogbm90IGNvbmZvcm0gdG8gSFRUUCBncmFtbWFyIHByb2R1Y3Rpb25zLlxuICpcbiAqIEBwYXJhbSAgIE9iamVjdCAgb2JqICBPYmplY3Qgb2YgaGVhZGVyc1xuICogQHJldHVybiAgSGVhZGVyc1xuICovXG5mdW5jdGlvbiBjcmVhdGVIZWFkZXJzTGVuaWVudChvYmopIHtcblx0Y29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKCk7XG5cdGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhvYmopKSB7XG5cdFx0aWYgKGludmFsaWRUb2tlblJlZ2V4LnRlc3QobmFtZSkpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRpZiAoQXJyYXkuaXNBcnJheShvYmpbbmFtZV0pKSB7XG5cdFx0XHRmb3IgKGNvbnN0IHZhbCBvZiBvYmpbbmFtZV0pIHtcblx0XHRcdFx0aWYgKGludmFsaWRIZWFkZXJDaGFyUmVnZXgudGVzdCh2YWwpKSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGhlYWRlcnNbTUFQXVtuYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0aGVhZGVyc1tNQVBdW25hbWVdID0gW3ZhbF07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aGVhZGVyc1tNQVBdW25hbWVdLnB1c2godmFsKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoIWludmFsaWRIZWFkZXJDaGFyUmVnZXgudGVzdChvYmpbbmFtZV0pKSB7XG5cdFx0XHRoZWFkZXJzW01BUF1bbmFtZV0gPSBbb2JqW25hbWVdXTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGhlYWRlcnM7XG59XG5cbmNvbnN0IElOVEVSTkFMUyQxID0gU3ltYm9sKCdSZXNwb25zZSBpbnRlcm5hbHMnKTtcblxuLy8gZml4IGFuIGlzc3VlIHdoZXJlIFwiU1RBVFVTX0NPREVTXCIgYXJlbid0IGEgbmFtZWQgZXhwb3J0IGZvciBub2RlIDwxMFxuY29uc3QgU1RBVFVTX0NPREVTID0gaHR0cC5TVEFUVVNfQ09ERVM7XG5cbi8qKlxuICogUmVzcG9uc2UgY2xhc3NcbiAqXG4gKiBAcGFyYW0gICBTdHJlYW0gIGJvZHkgIFJlYWRhYmxlIHN0cmVhbVxuICogQHBhcmFtICAgT2JqZWN0ICBvcHRzICBSZXNwb25zZSBvcHRpb25zXG4gKiBAcmV0dXJuICBWb2lkXG4gKi9cbmNsYXNzIFJlc3BvbnNlIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0bGV0IGJvZHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IG51bGw7XG5cdFx0bGV0IG9wdHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG5cdFx0Qm9keS5jYWxsKHRoaXMsIGJvZHksIG9wdHMpO1xuXG5cdFx0Y29uc3Qgc3RhdHVzID0gb3B0cy5zdGF0dXMgfHwgMjAwO1xuXHRcdGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRzLmhlYWRlcnMpO1xuXG5cdFx0aWYgKGJvZHkgIT0gbnVsbCAmJiAhaGVhZGVycy5oYXMoJ0NvbnRlbnQtVHlwZScpKSB7XG5cdFx0XHRjb25zdCBjb250ZW50VHlwZSA9IGV4dHJhY3RDb250ZW50VHlwZShib2R5KTtcblx0XHRcdGlmIChjb250ZW50VHlwZSkge1xuXHRcdFx0XHRoZWFkZXJzLmFwcGVuZCgnQ29udGVudC1UeXBlJywgY29udGVudFR5cGUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRoaXNbSU5URVJOQUxTJDFdID0ge1xuXHRcdFx0dXJsOiBvcHRzLnVybCxcblx0XHRcdHN0YXR1cyxcblx0XHRcdHN0YXR1c1RleHQ6IG9wdHMuc3RhdHVzVGV4dCB8fCBTVEFUVVNfQ09ERVNbc3RhdHVzXSxcblx0XHRcdGhlYWRlcnMsXG5cdFx0XHRjb3VudGVyOiBvcHRzLmNvdW50ZXJcblx0XHR9O1xuXHR9XG5cblx0Z2V0IHVybCgpIHtcblx0XHRyZXR1cm4gdGhpc1tJTlRFUk5BTFMkMV0udXJsIHx8ICcnO1xuXHR9XG5cblx0Z2V0IHN0YXR1cygpIHtcblx0XHRyZXR1cm4gdGhpc1tJTlRFUk5BTFMkMV0uc3RhdHVzO1xuXHR9XG5cblx0LyoqXG4gICogQ29udmVuaWVuY2UgcHJvcGVydHkgcmVwcmVzZW50aW5nIGlmIHRoZSByZXF1ZXN0IGVuZGVkIG5vcm1hbGx5XG4gICovXG5cdGdldCBvaygpIHtcblx0XHRyZXR1cm4gdGhpc1tJTlRFUk5BTFMkMV0uc3RhdHVzID49IDIwMCAmJiB0aGlzW0lOVEVSTkFMUyQxXS5zdGF0dXMgPCAzMDA7XG5cdH1cblxuXHRnZXQgcmVkaXJlY3RlZCgpIHtcblx0XHRyZXR1cm4gdGhpc1tJTlRFUk5BTFMkMV0uY291bnRlciA+IDA7XG5cdH1cblxuXHRnZXQgc3RhdHVzVGV4dCgpIHtcblx0XHRyZXR1cm4gdGhpc1tJTlRFUk5BTFMkMV0uc3RhdHVzVGV4dDtcblx0fVxuXG5cdGdldCBoZWFkZXJzKCkge1xuXHRcdHJldHVybiB0aGlzW0lOVEVSTkFMUyQxXS5oZWFkZXJzO1xuXHR9XG5cblx0LyoqXG4gICogQ2xvbmUgdGhpcyByZXNwb25zZVxuICAqXG4gICogQHJldHVybiAgUmVzcG9uc2VcbiAgKi9cblx0Y2xvbmUoKSB7XG5cdFx0cmV0dXJuIG5ldyBSZXNwb25zZShjbG9uZSh0aGlzKSwge1xuXHRcdFx0dXJsOiB0aGlzLnVybCxcblx0XHRcdHN0YXR1czogdGhpcy5zdGF0dXMsXG5cdFx0XHRzdGF0dXNUZXh0OiB0aGlzLnN0YXR1c1RleHQsXG5cdFx0XHRoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXG5cdFx0XHRvazogdGhpcy5vayxcblx0XHRcdHJlZGlyZWN0ZWQ6IHRoaXMucmVkaXJlY3RlZFxuXHRcdH0pO1xuXHR9XG59XG5cbkJvZHkubWl4SW4oUmVzcG9uc2UucHJvdG90eXBlKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoUmVzcG9uc2UucHJvdG90eXBlLCB7XG5cdHVybDogeyBlbnVtZXJhYmxlOiB0cnVlIH0sXG5cdHN0YXR1czogeyBlbnVtZXJhYmxlOiB0cnVlIH0sXG5cdG9rOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0cmVkaXJlY3RlZDogeyBlbnVtZXJhYmxlOiB0cnVlIH0sXG5cdHN0YXR1c1RleHQ6IHsgZW51bWVyYWJsZTogdHJ1ZSB9LFxuXHRoZWFkZXJzOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0Y2xvbmU6IHsgZW51bWVyYWJsZTogdHJ1ZSB9XG59KTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlc3BvbnNlLnByb3RvdHlwZSwgU3ltYm9sLnRvU3RyaW5nVGFnLCB7XG5cdHZhbHVlOiAnUmVzcG9uc2UnLFxuXHR3cml0YWJsZTogZmFsc2UsXG5cdGVudW1lcmFibGU6IGZhbHNlLFxuXHRjb25maWd1cmFibGU6IHRydWVcbn0pO1xuXG5jb25zdCBJTlRFUk5BTFMkMiA9IFN5bWJvbCgnUmVxdWVzdCBpbnRlcm5hbHMnKTtcbmNvbnN0IFVSTCA9IFVybC5VUkwgfHwgd2hhdHdnVXJsLlVSTDtcblxuLy8gZml4IGFuIGlzc3VlIHdoZXJlIFwiZm9ybWF0XCIsIFwicGFyc2VcIiBhcmVuJ3QgYSBuYW1lZCBleHBvcnQgZm9yIG5vZGUgPDEwXG5jb25zdCBwYXJzZV91cmwgPSBVcmwucGFyc2U7XG5jb25zdCBmb3JtYXRfdXJsID0gVXJsLmZvcm1hdDtcblxuLyoqXG4gKiBXcmFwcGVyIGFyb3VuZCBgbmV3IFVSTGAgdG8gaGFuZGxlIGFyYml0cmFyeSBVUkxzXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSB1cmxTdHJcbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHBhcnNlVVJMKHVybFN0cikge1xuXHQvKlxuIFx0Q2hlY2sgd2hldGhlciB0aGUgVVJMIGlzIGFic29sdXRlIG9yIG5vdFxuIFx0XHRTY2hlbWU6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4xXG4gXHRBYnNvbHV0ZSBVUkw6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNC4zXG4gKi9cblx0aWYgKC9eW2EtekEtWl1bYS16QS1aXFxkK1xcLS5dKjovLmV4ZWModXJsU3RyKSkge1xuXHRcdHVybFN0ciA9IG5ldyBVUkwodXJsU3RyKS50b1N0cmluZygpO1xuXHR9XG5cblx0Ly8gRmFsbGJhY2sgdG8gb2xkIGltcGxlbWVudGF0aW9uIGZvciBhcmJpdHJhcnkgVVJMc1xuXHRyZXR1cm4gcGFyc2VfdXJsKHVybFN0cik7XG59XG5cbmNvbnN0IHN0cmVhbURlc3RydWN0aW9uU3VwcG9ydGVkID0gJ2Rlc3Ryb3knIGluIFN0cmVhbS5SZWFkYWJsZS5wcm90b3R5cGU7XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiBSZXF1ZXN0LlxuICpcbiAqIEBwYXJhbSAgIE1peGVkICAgaW5wdXRcbiAqIEByZXR1cm4gIEJvb2xlYW5cbiAqL1xuZnVuY3Rpb24gaXNSZXF1ZXN0KGlucHV0KSB7XG5cdHJldHVybiB0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnICYmIHR5cGVvZiBpbnB1dFtJTlRFUk5BTFMkMl0gPT09ICdvYmplY3QnO1xufVxuXG5mdW5jdGlvbiBpc0Fib3J0U2lnbmFsKHNpZ25hbCkge1xuXHRjb25zdCBwcm90byA9IHNpZ25hbCAmJiB0eXBlb2Ygc2lnbmFsID09PSAnb2JqZWN0JyAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2lnbmFsKTtcblx0cmV0dXJuICEhKHByb3RvICYmIHByb3RvLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdBYm9ydFNpZ25hbCcpO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgY2xhc3NcbiAqXG4gKiBAcGFyYW0gICBNaXhlZCAgIGlucHV0ICBVcmwgb3IgUmVxdWVzdCBpbnN0YW5jZVxuICogQHBhcmFtICAgT2JqZWN0ICBpbml0ICAgQ3VzdG9tIG9wdGlvbnNcbiAqIEByZXR1cm4gIFZvaWRcbiAqL1xuY2xhc3MgUmVxdWVzdCB7XG5cdGNvbnN0cnVjdG9yKGlucHV0KSB7XG5cdFx0bGV0IGluaXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG5cdFx0bGV0IHBhcnNlZFVSTDtcblxuXHRcdC8vIG5vcm1hbGl6ZSBpbnB1dFxuXHRcdGlmICghaXNSZXF1ZXN0KGlucHV0KSkge1xuXHRcdFx0aWYgKGlucHV0ICYmIGlucHV0LmhyZWYpIHtcblx0XHRcdFx0Ly8gaW4gb3JkZXIgdG8gc3VwcG9ydCBOb2RlLmpzJyBVcmwgb2JqZWN0czsgdGhvdWdoIFdIQVRXRydzIFVSTCBvYmplY3RzXG5cdFx0XHRcdC8vIHdpbGwgZmFsbCBpbnRvIHRoaXMgYnJhbmNoIGFsc28gKHNpbmNlIHRoZWlyIGB0b1N0cmluZygpYCB3aWxsIHJldHVyblxuXHRcdFx0XHQvLyBgaHJlZmAgcHJvcGVydHkgYW55d2F5KVxuXHRcdFx0XHRwYXJzZWRVUkwgPSBwYXJzZVVSTChpbnB1dC5ocmVmKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIGNvZXJjZSBpbnB1dCB0byBhIHN0cmluZyBiZWZvcmUgYXR0ZW1wdGluZyB0byBwYXJzZVxuXHRcdFx0XHRwYXJzZWRVUkwgPSBwYXJzZVVSTChgJHtpbnB1dH1gKTtcblx0XHRcdH1cblx0XHRcdGlucHV0ID0ge307XG5cdFx0fSBlbHNlIHtcblx0XHRcdHBhcnNlZFVSTCA9IHBhcnNlVVJMKGlucHV0LnVybCk7XG5cdFx0fVxuXG5cdFx0bGV0IG1ldGhvZCA9IGluaXQubWV0aG9kIHx8IGlucHV0Lm1ldGhvZCB8fCAnR0VUJztcblx0XHRtZXRob2QgPSBtZXRob2QudG9VcHBlckNhc2UoKTtcblxuXHRcdGlmICgoaW5pdC5ib2R5ICE9IG51bGwgfHwgaXNSZXF1ZXN0KGlucHV0KSAmJiBpbnB1dC5ib2R5ICE9PSBudWxsKSAmJiAobWV0aG9kID09PSAnR0VUJyB8fCBtZXRob2QgPT09ICdIRUFEJykpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ1JlcXVlc3Qgd2l0aCBHRVQvSEVBRCBtZXRob2QgY2Fubm90IGhhdmUgYm9keScpO1xuXHRcdH1cblxuXHRcdGxldCBpbnB1dEJvZHkgPSBpbml0LmJvZHkgIT0gbnVsbCA/IGluaXQuYm9keSA6IGlzUmVxdWVzdChpbnB1dCkgJiYgaW5wdXQuYm9keSAhPT0gbnVsbCA/IGNsb25lKGlucHV0KSA6IG51bGw7XG5cblx0XHRCb2R5LmNhbGwodGhpcywgaW5wdXRCb2R5LCB7XG5cdFx0XHR0aW1lb3V0OiBpbml0LnRpbWVvdXQgfHwgaW5wdXQudGltZW91dCB8fCAwLFxuXHRcdFx0c2l6ZTogaW5pdC5zaXplIHx8IGlucHV0LnNpemUgfHwgMFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKGluaXQuaGVhZGVycyB8fCBpbnB1dC5oZWFkZXJzIHx8IHt9KTtcblxuXHRcdGlmIChpbnB1dEJvZHkgIT0gbnVsbCAmJiAhaGVhZGVycy5oYXMoJ0NvbnRlbnQtVHlwZScpKSB7XG5cdFx0XHRjb25zdCBjb250ZW50VHlwZSA9IGV4dHJhY3RDb250ZW50VHlwZShpbnB1dEJvZHkpO1xuXHRcdFx0aWYgKGNvbnRlbnRUeXBlKSB7XG5cdFx0XHRcdGhlYWRlcnMuYXBwZW5kKCdDb250ZW50LVR5cGUnLCBjb250ZW50VHlwZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bGV0IHNpZ25hbCA9IGlzUmVxdWVzdChpbnB1dCkgPyBpbnB1dC5zaWduYWwgOiBudWxsO1xuXHRcdGlmICgnc2lnbmFsJyBpbiBpbml0KSBzaWduYWwgPSBpbml0LnNpZ25hbDtcblxuXHRcdGlmIChzaWduYWwgIT0gbnVsbCAmJiAhaXNBYm9ydFNpZ25hbChzaWduYWwpKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBzaWduYWwgdG8gYmUgYW4gaW5zdGFuY2VvZiBBYm9ydFNpZ25hbCcpO1xuXHRcdH1cblxuXHRcdHRoaXNbSU5URVJOQUxTJDJdID0ge1xuXHRcdFx0bWV0aG9kLFxuXHRcdFx0cmVkaXJlY3Q6IGluaXQucmVkaXJlY3QgfHwgaW5wdXQucmVkaXJlY3QgfHwgJ2ZvbGxvdycsXG5cdFx0XHRoZWFkZXJzLFxuXHRcdFx0cGFyc2VkVVJMLFxuXHRcdFx0c2lnbmFsXG5cdFx0fTtcblxuXHRcdC8vIG5vZGUtZmV0Y2gtb25seSBvcHRpb25zXG5cdFx0dGhpcy5mb2xsb3cgPSBpbml0LmZvbGxvdyAhPT0gdW5kZWZpbmVkID8gaW5pdC5mb2xsb3cgOiBpbnB1dC5mb2xsb3cgIT09IHVuZGVmaW5lZCA/IGlucHV0LmZvbGxvdyA6IDIwO1xuXHRcdHRoaXMuY29tcHJlc3MgPSBpbml0LmNvbXByZXNzICE9PSB1bmRlZmluZWQgPyBpbml0LmNvbXByZXNzIDogaW5wdXQuY29tcHJlc3MgIT09IHVuZGVmaW5lZCA/IGlucHV0LmNvbXByZXNzIDogdHJ1ZTtcblx0XHR0aGlzLmNvdW50ZXIgPSBpbml0LmNvdW50ZXIgfHwgaW5wdXQuY291bnRlciB8fCAwO1xuXHRcdHRoaXMuYWdlbnQgPSBpbml0LmFnZW50IHx8IGlucHV0LmFnZW50O1xuXHR9XG5cblx0Z2V0IG1ldGhvZCgpIHtcblx0XHRyZXR1cm4gdGhpc1tJTlRFUk5BTFMkMl0ubWV0aG9kO1xuXHR9XG5cblx0Z2V0IHVybCgpIHtcblx0XHRyZXR1cm4gZm9ybWF0X3VybCh0aGlzW0lOVEVSTkFMUyQyXS5wYXJzZWRVUkwpO1xuXHR9XG5cblx0Z2V0IGhlYWRlcnMoKSB7XG5cdFx0cmV0dXJuIHRoaXNbSU5URVJOQUxTJDJdLmhlYWRlcnM7XG5cdH1cblxuXHRnZXQgcmVkaXJlY3QoKSB7XG5cdFx0cmV0dXJuIHRoaXNbSU5URVJOQUxTJDJdLnJlZGlyZWN0O1xuXHR9XG5cblx0Z2V0IHNpZ25hbCgpIHtcblx0XHRyZXR1cm4gdGhpc1tJTlRFUk5BTFMkMl0uc2lnbmFsO1xuXHR9XG5cblx0LyoqXG4gICogQ2xvbmUgdGhpcyByZXF1ZXN0XG4gICpcbiAgKiBAcmV0dXJuICBSZXF1ZXN0XG4gICovXG5cdGNsb25lKCkge1xuXHRcdHJldHVybiBuZXcgUmVxdWVzdCh0aGlzKTtcblx0fVxufVxuXG5Cb2R5Lm1peEluKFJlcXVlc3QucHJvdG90eXBlKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlcXVlc3QucHJvdG90eXBlLCBTeW1ib2wudG9TdHJpbmdUYWcsIHtcblx0dmFsdWU6ICdSZXF1ZXN0Jyxcblx0d3JpdGFibGU6IGZhbHNlLFxuXHRlbnVtZXJhYmxlOiBmYWxzZSxcblx0Y29uZmlndXJhYmxlOiB0cnVlXG59KTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoUmVxdWVzdC5wcm90b3R5cGUsIHtcblx0bWV0aG9kOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0dXJsOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0aGVhZGVyczogeyBlbnVtZXJhYmxlOiB0cnVlIH0sXG5cdHJlZGlyZWN0OiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0Y2xvbmU6IHsgZW51bWVyYWJsZTogdHJ1ZSB9LFxuXHRzaWduYWw6IHsgZW51bWVyYWJsZTogdHJ1ZSB9XG59KTtcblxuLyoqXG4gKiBDb252ZXJ0IGEgUmVxdWVzdCB0byBOb2RlLmpzIGh0dHAgcmVxdWVzdCBvcHRpb25zLlxuICpcbiAqIEBwYXJhbSAgIFJlcXVlc3QgIEEgUmVxdWVzdCBpbnN0YW5jZVxuICogQHJldHVybiAgT2JqZWN0ICAgVGhlIG9wdGlvbnMgb2JqZWN0IHRvIGJlIHBhc3NlZCB0byBodHRwLnJlcXVlc3RcbiAqL1xuZnVuY3Rpb24gZ2V0Tm9kZVJlcXVlc3RPcHRpb25zKHJlcXVlc3QpIHtcblx0Y29uc3QgcGFyc2VkVVJMID0gcmVxdWVzdFtJTlRFUk5BTFMkMl0ucGFyc2VkVVJMO1xuXHRjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMocmVxdWVzdFtJTlRFUk5BTFMkMl0uaGVhZGVycyk7XG5cblx0Ly8gZmV0Y2ggc3RlcCAxLjNcblx0aWYgKCFoZWFkZXJzLmhhcygnQWNjZXB0JykpIHtcblx0XHRoZWFkZXJzLnNldCgnQWNjZXB0JywgJyovKicpO1xuXHR9XG5cblx0Ly8gQmFzaWMgZmV0Y2hcblx0aWYgKCFwYXJzZWRVUkwucHJvdG9jb2wgfHwgIXBhcnNlZFVSTC5ob3N0bmFtZSkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09ubHkgYWJzb2x1dGUgVVJMcyBhcmUgc3VwcG9ydGVkJyk7XG5cdH1cblxuXHRpZiAoIS9eaHR0cHM/OiQvLnRlc3QocGFyc2VkVVJMLnByb3RvY29sKSkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09ubHkgSFRUUChTKSBwcm90b2NvbHMgYXJlIHN1cHBvcnRlZCcpO1xuXHR9XG5cblx0aWYgKHJlcXVlc3Quc2lnbmFsICYmIHJlcXVlc3QuYm9keSBpbnN0YW5jZW9mIFN0cmVhbS5SZWFkYWJsZSAmJiAhc3RyZWFtRGVzdHJ1Y3Rpb25TdXBwb3J0ZWQpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0NhbmNlbGxhdGlvbiBvZiBzdHJlYW1lZCByZXF1ZXN0cyB3aXRoIEFib3J0U2lnbmFsIGlzIG5vdCBzdXBwb3J0ZWQgaW4gbm9kZSA8IDgnKTtcblx0fVxuXG5cdC8vIEhUVFAtbmV0d29yay1vci1jYWNoZSBmZXRjaCBzdGVwcyAyLjQtMi43XG5cdGxldCBjb250ZW50TGVuZ3RoVmFsdWUgPSBudWxsO1xuXHRpZiAocmVxdWVzdC5ib2R5ID09IG51bGwgJiYgL14oUE9TVHxQVVQpJC9pLnRlc3QocmVxdWVzdC5tZXRob2QpKSB7XG5cdFx0Y29udGVudExlbmd0aFZhbHVlID0gJzAnO1xuXHR9XG5cdGlmIChyZXF1ZXN0LmJvZHkgIT0gbnVsbCkge1xuXHRcdGNvbnN0IHRvdGFsQnl0ZXMgPSBnZXRUb3RhbEJ5dGVzKHJlcXVlc3QpO1xuXHRcdGlmICh0eXBlb2YgdG90YWxCeXRlcyA9PT0gJ251bWJlcicpIHtcblx0XHRcdGNvbnRlbnRMZW5ndGhWYWx1ZSA9IFN0cmluZyh0b3RhbEJ5dGVzKTtcblx0XHR9XG5cdH1cblx0aWYgKGNvbnRlbnRMZW5ndGhWYWx1ZSkge1xuXHRcdGhlYWRlcnMuc2V0KCdDb250ZW50LUxlbmd0aCcsIGNvbnRlbnRMZW5ndGhWYWx1ZSk7XG5cdH1cblxuXHQvLyBIVFRQLW5ldHdvcmstb3ItY2FjaGUgZmV0Y2ggc3RlcCAyLjExXG5cdGlmICghaGVhZGVycy5oYXMoJ1VzZXItQWdlbnQnKSkge1xuXHRcdGhlYWRlcnMuc2V0KCdVc2VyLUFnZW50JywgJ25vZGUtZmV0Y2gvMS4wICgraHR0cHM6Ly9naXRodWIuY29tL2JpdGlubi9ub2RlLWZldGNoKScpO1xuXHR9XG5cblx0Ly8gSFRUUC1uZXR3b3JrLW9yLWNhY2hlIGZldGNoIHN0ZXAgMi4xNVxuXHRpZiAocmVxdWVzdC5jb21wcmVzcyAmJiAhaGVhZGVycy5oYXMoJ0FjY2VwdC1FbmNvZGluZycpKSB7XG5cdFx0aGVhZGVycy5zZXQoJ0FjY2VwdC1FbmNvZGluZycsICdnemlwLGRlZmxhdGUnKTtcblx0fVxuXG5cdGxldCBhZ2VudCA9IHJlcXVlc3QuYWdlbnQ7XG5cdGlmICh0eXBlb2YgYWdlbnQgPT09ICdmdW5jdGlvbicpIHtcblx0XHRhZ2VudCA9IGFnZW50KHBhcnNlZFVSTCk7XG5cdH1cblxuXHRpZiAoIWhlYWRlcnMuaGFzKCdDb25uZWN0aW9uJykgJiYgIWFnZW50KSB7XG5cdFx0aGVhZGVycy5zZXQoJ0Nvbm5lY3Rpb24nLCAnY2xvc2UnKTtcblx0fVxuXG5cdC8vIEhUVFAtbmV0d29yayBmZXRjaCBzdGVwIDQuMlxuXHQvLyBjaHVua2VkIGVuY29kaW5nIGlzIGhhbmRsZWQgYnkgTm9kZS5qc1xuXG5cdHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBwYXJzZWRVUkwsIHtcblx0XHRtZXRob2Q6IHJlcXVlc3QubWV0aG9kLFxuXHRcdGhlYWRlcnM6IGV4cG9ydE5vZGVDb21wYXRpYmxlSGVhZGVycyhoZWFkZXJzKSxcblx0XHRhZ2VudFxuXHR9KTtcbn1cblxuLyoqXG4gKiBhYm9ydC1lcnJvci5qc1xuICpcbiAqIEFib3J0RXJyb3IgaW50ZXJmYWNlIGZvciBjYW5jZWxsZWQgcmVxdWVzdHNcbiAqL1xuXG4vKipcbiAqIENyZWF0ZSBBYm9ydEVycm9yIGluc3RhbmNlXG4gKlxuICogQHBhcmFtICAgU3RyaW5nICAgICAgbWVzc2FnZSAgICAgIEVycm9yIG1lc3NhZ2UgZm9yIGh1bWFuXG4gKiBAcmV0dXJuICBBYm9ydEVycm9yXG4gKi9cbmZ1bmN0aW9uIEFib3J0RXJyb3IobWVzc2FnZSkge1xuICBFcnJvci5jYWxsKHRoaXMsIG1lc3NhZ2UpO1xuXG4gIHRoaXMudHlwZSA9ICdhYm9ydGVkJztcbiAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAvLyBoaWRlIGN1c3RvbSBlcnJvciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGZyb20gZW5kLXVzZXJzXG4gIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xufVxuXG5BYm9ydEVycm9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcbkFib3J0RXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQWJvcnRFcnJvcjtcbkFib3J0RXJyb3IucHJvdG90eXBlLm5hbWUgPSAnQWJvcnRFcnJvcic7XG5cbmNvbnN0IFVSTCQxID0gVXJsLlVSTCB8fCB3aGF0d2dVcmwuVVJMO1xuXG4vLyBmaXggYW4gaXNzdWUgd2hlcmUgXCJQYXNzVGhyb3VnaFwiLCBcInJlc29sdmVcIiBhcmVuJ3QgYSBuYW1lZCBleHBvcnQgZm9yIG5vZGUgPDEwXG5jb25zdCBQYXNzVGhyb3VnaCQxID0gU3RyZWFtLlBhc3NUaHJvdWdoO1xuXG5jb25zdCBpc0RvbWFpbk9yU3ViZG9tYWluID0gZnVuY3Rpb24gaXNEb21haW5PclN1YmRvbWFpbihkZXN0aW5hdGlvbiwgb3JpZ2luYWwpIHtcblx0Y29uc3Qgb3JpZyA9IG5ldyBVUkwkMShvcmlnaW5hbCkuaG9zdG5hbWU7XG5cdGNvbnN0IGRlc3QgPSBuZXcgVVJMJDEoZGVzdGluYXRpb24pLmhvc3RuYW1lO1xuXG5cdHJldHVybiBvcmlnID09PSBkZXN0IHx8IG9yaWdbb3JpZy5sZW5ndGggLSBkZXN0Lmxlbmd0aCAtIDFdID09PSAnLicgJiYgb3JpZy5lbmRzV2l0aChkZXN0KTtcbn07XG5cbi8qKlxuICogRmV0Y2ggZnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0gICBNaXhlZCAgICB1cmwgICBBYnNvbHV0ZSB1cmwgb3IgUmVxdWVzdCBpbnN0YW5jZVxuICogQHBhcmFtICAgT2JqZWN0ICAgb3B0cyAgRmV0Y2ggb3B0aW9uc1xuICogQHJldHVybiAgUHJvbWlzZVxuICovXG5mdW5jdGlvbiBmZXRjaCh1cmwsIG9wdHMpIHtcblxuXHQvLyBhbGxvdyBjdXN0b20gcHJvbWlzZVxuXHRpZiAoIWZldGNoLlByb21pc2UpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ25hdGl2ZSBwcm9taXNlIG1pc3NpbmcsIHNldCBmZXRjaC5Qcm9taXNlIHRvIHlvdXIgZmF2b3JpdGUgYWx0ZXJuYXRpdmUnKTtcblx0fVxuXG5cdEJvZHkuUHJvbWlzZSA9IGZldGNoLlByb21pc2U7XG5cblx0Ly8gd3JhcCBodHRwLnJlcXVlc3QgaW50byBmZXRjaFxuXHRyZXR1cm4gbmV3IGZldGNoLlByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuXHRcdC8vIGJ1aWxkIHJlcXVlc3Qgb2JqZWN0XG5cdFx0Y29uc3QgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybCwgb3B0cyk7XG5cdFx0Y29uc3Qgb3B0aW9ucyA9IGdldE5vZGVSZXF1ZXN0T3B0aW9ucyhyZXF1ZXN0KTtcblxuXHRcdGNvbnN0IHNlbmQgPSAob3B0aW9ucy5wcm90b2NvbCA9PT0gJ2h0dHBzOicgPyBodHRwcyA6IGh0dHApLnJlcXVlc3Q7XG5cdFx0Y29uc3Qgc2lnbmFsID0gcmVxdWVzdC5zaWduYWw7XG5cblx0XHRsZXQgcmVzcG9uc2UgPSBudWxsO1xuXG5cdFx0Y29uc3QgYWJvcnQgPSBmdW5jdGlvbiBhYm9ydCgpIHtcblx0XHRcdGxldCBlcnJvciA9IG5ldyBBYm9ydEVycm9yKCdUaGUgdXNlciBhYm9ydGVkIGEgcmVxdWVzdC4nKTtcblx0XHRcdHJlamVjdChlcnJvcik7XG5cdFx0XHRpZiAocmVxdWVzdC5ib2R5ICYmIHJlcXVlc3QuYm9keSBpbnN0YW5jZW9mIFN0cmVhbS5SZWFkYWJsZSkge1xuXHRcdFx0XHRyZXF1ZXN0LmJvZHkuZGVzdHJveShlcnJvcik7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIXJlc3BvbnNlIHx8ICFyZXNwb25zZS5ib2R5KSByZXR1cm47XG5cdFx0XHRyZXNwb25zZS5ib2R5LmVtaXQoJ2Vycm9yJywgZXJyb3IpO1xuXHRcdH07XG5cblx0XHRpZiAoc2lnbmFsICYmIHNpZ25hbC5hYm9ydGVkKSB7XG5cdFx0XHRhYm9ydCgpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFib3J0QW5kRmluYWxpemUgPSBmdW5jdGlvbiBhYm9ydEFuZEZpbmFsaXplKCkge1xuXHRcdFx0YWJvcnQoKTtcblx0XHRcdGZpbmFsaXplKCk7XG5cdFx0fTtcblxuXHRcdC8vIHNlbmQgcmVxdWVzdFxuXHRcdGNvbnN0IHJlcSA9IHNlbmQob3B0aW9ucyk7XG5cdFx0bGV0IHJlcVRpbWVvdXQ7XG5cblx0XHRpZiAoc2lnbmFsKSB7XG5cdFx0XHRzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydEFuZEZpbmFsaXplKTtcblx0XHR9XG5cblx0XHRmdW5jdGlvbiBmaW5hbGl6ZSgpIHtcblx0XHRcdHJlcS5hYm9ydCgpO1xuXHRcdFx0aWYgKHNpZ25hbCkgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRBbmRGaW5hbGl6ZSk7XG5cdFx0XHRjbGVhclRpbWVvdXQocmVxVGltZW91dCk7XG5cdFx0fVxuXG5cdFx0aWYgKHJlcXVlc3QudGltZW91dCkge1xuXHRcdFx0cmVxLm9uY2UoJ3NvY2tldCcsIGZ1bmN0aW9uIChzb2NrZXQpIHtcblx0XHRcdFx0cmVxVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHJlamVjdChuZXcgRmV0Y2hFcnJvcihgbmV0d29yayB0aW1lb3V0IGF0OiAke3JlcXVlc3QudXJsfWAsICdyZXF1ZXN0LXRpbWVvdXQnKSk7XG5cdFx0XHRcdFx0ZmluYWxpemUoKTtcblx0XHRcdFx0fSwgcmVxdWVzdC50aW1lb3V0KTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJlcS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG5cdFx0XHRyZWplY3QobmV3IEZldGNoRXJyb3IoYHJlcXVlc3QgdG8gJHtyZXF1ZXN0LnVybH0gZmFpbGVkLCByZWFzb246ICR7ZXJyLm1lc3NhZ2V9YCwgJ3N5c3RlbScsIGVycikpO1xuXHRcdFx0ZmluYWxpemUoKTtcblx0XHR9KTtcblxuXHRcdHJlcS5vbigncmVzcG9uc2UnLCBmdW5jdGlvbiAocmVzKSB7XG5cdFx0XHRjbGVhclRpbWVvdXQocmVxVGltZW91dCk7XG5cblx0XHRcdGNvbnN0IGhlYWRlcnMgPSBjcmVhdGVIZWFkZXJzTGVuaWVudChyZXMuaGVhZGVycyk7XG5cblx0XHRcdC8vIEhUVFAgZmV0Y2ggc3RlcCA1XG5cdFx0XHRpZiAoZmV0Y2guaXNSZWRpcmVjdChyZXMuc3RhdHVzQ29kZSkpIHtcblx0XHRcdFx0Ly8gSFRUUCBmZXRjaCBzdGVwIDUuMlxuXHRcdFx0XHRjb25zdCBsb2NhdGlvbiA9IGhlYWRlcnMuZ2V0KCdMb2NhdGlvbicpO1xuXG5cdFx0XHRcdC8vIEhUVFAgZmV0Y2ggc3RlcCA1LjNcblx0XHRcdFx0bGV0IGxvY2F0aW9uVVJMID0gbnVsbDtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRsb2NhdGlvblVSTCA9IGxvY2F0aW9uID09PSBudWxsID8gbnVsbCA6IG5ldyBVUkwkMShsb2NhdGlvbiwgcmVxdWVzdC51cmwpLnRvU3RyaW5nKCk7XG5cdFx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRcdC8vIGVycm9yIGhlcmUgY2FuIG9ubHkgYmUgaW52YWxpZCBVUkwgaW4gTG9jYXRpb246IGhlYWRlclxuXHRcdFx0XHRcdC8vIGRvIG5vdCB0aHJvdyB3aGVuIG9wdGlvbnMucmVkaXJlY3QgPT0gbWFudWFsXG5cdFx0XHRcdFx0Ly8gbGV0IHRoZSB1c2VyIGV4dHJhY3QgdGhlIGVycm9ybmVvdXMgcmVkaXJlY3QgVVJMXG5cdFx0XHRcdFx0aWYgKHJlcXVlc3QucmVkaXJlY3QgIT09ICdtYW51YWwnKSB7XG5cdFx0XHRcdFx0XHRyZWplY3QobmV3IEZldGNoRXJyb3IoYHVyaSByZXF1ZXN0ZWQgcmVzcG9uZHMgd2l0aCBhbiBpbnZhbGlkIHJlZGlyZWN0IFVSTDogJHtsb2NhdGlvbn1gLCAnaW52YWxpZC1yZWRpcmVjdCcpKTtcblx0XHRcdFx0XHRcdGZpbmFsaXplKCk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gSFRUUCBmZXRjaCBzdGVwIDUuNVxuXHRcdFx0XHRzd2l0Y2ggKHJlcXVlc3QucmVkaXJlY3QpIHtcblx0XHRcdFx0XHRjYXNlICdlcnJvcic6XG5cdFx0XHRcdFx0XHRyZWplY3QobmV3IEZldGNoRXJyb3IoYHVyaSByZXF1ZXN0ZWQgcmVzcG9uZHMgd2l0aCBhIHJlZGlyZWN0LCByZWRpcmVjdCBtb2RlIGlzIHNldCB0byBlcnJvcjogJHtyZXF1ZXN0LnVybH1gLCAnbm8tcmVkaXJlY3QnKSk7XG5cdFx0XHRcdFx0XHRmaW5hbGl6ZSgpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdGNhc2UgJ21hbnVhbCc6XG5cdFx0XHRcdFx0XHQvLyBub2RlLWZldGNoLXNwZWNpZmljIHN0ZXA6IG1ha2UgbWFudWFsIHJlZGlyZWN0IGEgYml0IGVhc2llciB0byB1c2UgYnkgc2V0dGluZyB0aGUgTG9jYXRpb24gaGVhZGVyIHZhbHVlIHRvIHRoZSByZXNvbHZlZCBVUkwuXG5cdFx0XHRcdFx0XHRpZiAobG9jYXRpb25VUkwgIT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0Ly8gaGFuZGxlIGNvcnJ1cHRlZCBoZWFkZXJcblx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRoZWFkZXJzLnNldCgnTG9jYXRpb24nLCBsb2NhdGlvblVSTCk7XG5cdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRcdFx0XHRcdC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBub2RlanMgc2VydmVyIHByZXZlbnQgaW52YWxpZCByZXNwb25zZSBoZWFkZXJzLCB3ZSBjYW4ndCB0ZXN0IHRoaXMgdGhyb3VnaCBub3JtYWwgcmVxdWVzdFxuXHRcdFx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdmb2xsb3cnOlxuXHRcdFx0XHRcdFx0Ly8gSFRUUC1yZWRpcmVjdCBmZXRjaCBzdGVwIDJcblx0XHRcdFx0XHRcdGlmIChsb2NhdGlvblVSTCA9PT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gSFRUUC1yZWRpcmVjdCBmZXRjaCBzdGVwIDVcblx0XHRcdFx0XHRcdGlmIChyZXF1ZXN0LmNvdW50ZXIgPj0gcmVxdWVzdC5mb2xsb3cpIHtcblx0XHRcdFx0XHRcdFx0cmVqZWN0KG5ldyBGZXRjaEVycm9yKGBtYXhpbXVtIHJlZGlyZWN0IHJlYWNoZWQgYXQ6ICR7cmVxdWVzdC51cmx9YCwgJ21heC1yZWRpcmVjdCcpKTtcblx0XHRcdFx0XHRcdFx0ZmluYWxpemUoKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBIVFRQLXJlZGlyZWN0IGZldGNoIHN0ZXAgNiAoY291bnRlciBpbmNyZW1lbnQpXG5cdFx0XHRcdFx0XHQvLyBDcmVhdGUgYSBuZXcgUmVxdWVzdCBvYmplY3QuXG5cdFx0XHRcdFx0XHRjb25zdCByZXF1ZXN0T3B0cyA9IHtcblx0XHRcdFx0XHRcdFx0aGVhZGVyczogbmV3IEhlYWRlcnMocmVxdWVzdC5oZWFkZXJzKSxcblx0XHRcdFx0XHRcdFx0Zm9sbG93OiByZXF1ZXN0LmZvbGxvdyxcblx0XHRcdFx0XHRcdFx0Y291bnRlcjogcmVxdWVzdC5jb3VudGVyICsgMSxcblx0XHRcdFx0XHRcdFx0YWdlbnQ6IHJlcXVlc3QuYWdlbnQsXG5cdFx0XHRcdFx0XHRcdGNvbXByZXNzOiByZXF1ZXN0LmNvbXByZXNzLFxuXHRcdFx0XHRcdFx0XHRtZXRob2Q6IHJlcXVlc3QubWV0aG9kLFxuXHRcdFx0XHRcdFx0XHRib2R5OiByZXF1ZXN0LmJvZHksXG5cdFx0XHRcdFx0XHRcdHNpZ25hbDogcmVxdWVzdC5zaWduYWwsXG5cdFx0XHRcdFx0XHRcdHRpbWVvdXQ6IHJlcXVlc3QudGltZW91dCxcblx0XHRcdFx0XHRcdFx0c2l6ZTogcmVxdWVzdC5zaXplXG5cdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHRpZiAoIWlzRG9tYWluT3JTdWJkb21haW4ocmVxdWVzdC51cmwsIGxvY2F0aW9uVVJMKSkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IG5hbWUgb2YgWydhdXRob3JpemF0aW9uJywgJ3d3dy1hdXRoZW50aWNhdGUnLCAnY29va2llJywgJ2Nvb2tpZTInXSkge1xuXHRcdFx0XHRcdFx0XHRcdHJlcXVlc3RPcHRzLmhlYWRlcnMuZGVsZXRlKG5hbWUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIEhUVFAtcmVkaXJlY3QgZmV0Y2ggc3RlcCA5XG5cdFx0XHRcdFx0XHRpZiAocmVzLnN0YXR1c0NvZGUgIT09IDMwMyAmJiByZXF1ZXN0LmJvZHkgJiYgZ2V0VG90YWxCeXRlcyhyZXF1ZXN0KSA9PT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHRyZWplY3QobmV3IEZldGNoRXJyb3IoJ0Nhbm5vdCBmb2xsb3cgcmVkaXJlY3Qgd2l0aCBib2R5IGJlaW5nIGEgcmVhZGFibGUgc3RyZWFtJywgJ3Vuc3VwcG9ydGVkLXJlZGlyZWN0JykpO1xuXHRcdFx0XHRcdFx0XHRmaW5hbGl6ZSgpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIEhUVFAtcmVkaXJlY3QgZmV0Y2ggc3RlcCAxMVxuXHRcdFx0XHRcdFx0aWYgKHJlcy5zdGF0dXNDb2RlID09PSAzMDMgfHwgKHJlcy5zdGF0dXNDb2RlID09PSAzMDEgfHwgcmVzLnN0YXR1c0NvZGUgPT09IDMwMikgJiYgcmVxdWVzdC5tZXRob2QgPT09ICdQT1NUJykge1xuXHRcdFx0XHRcdFx0XHRyZXF1ZXN0T3B0cy5tZXRob2QgPSAnR0VUJztcblx0XHRcdFx0XHRcdFx0cmVxdWVzdE9wdHMuYm9keSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0cmVxdWVzdE9wdHMuaGVhZGVycy5kZWxldGUoJ2NvbnRlbnQtbGVuZ3RoJyk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIEhUVFAtcmVkaXJlY3QgZmV0Y2ggc3RlcCAxNVxuXHRcdFx0XHRcdFx0cmVzb2x2ZShmZXRjaChuZXcgUmVxdWVzdChsb2NhdGlvblVSTCwgcmVxdWVzdE9wdHMpKSk7XG5cdFx0XHRcdFx0XHRmaW5hbGl6ZSgpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIHByZXBhcmUgcmVzcG9uc2Vcblx0XHRcdHJlcy5vbmNlKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdGlmIChzaWduYWwpIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGFib3J0QW5kRmluYWxpemUpO1xuXHRcdFx0fSk7XG5cdFx0XHRsZXQgYm9keSA9IHJlcy5waXBlKG5ldyBQYXNzVGhyb3VnaCQxKCkpO1xuXG5cdFx0XHRjb25zdCByZXNwb25zZV9vcHRpb25zID0ge1xuXHRcdFx0XHR1cmw6IHJlcXVlc3QudXJsLFxuXHRcdFx0XHRzdGF0dXM6IHJlcy5zdGF0dXNDb2RlLFxuXHRcdFx0XHRzdGF0dXNUZXh0OiByZXMuc3RhdHVzTWVzc2FnZSxcblx0XHRcdFx0aGVhZGVyczogaGVhZGVycyxcblx0XHRcdFx0c2l6ZTogcmVxdWVzdC5zaXplLFxuXHRcdFx0XHR0aW1lb3V0OiByZXF1ZXN0LnRpbWVvdXQsXG5cdFx0XHRcdGNvdW50ZXI6IHJlcXVlc3QuY291bnRlclxuXHRcdFx0fTtcblxuXHRcdFx0Ly8gSFRUUC1uZXR3b3JrIGZldGNoIHN0ZXAgMTIuMS4xLjNcblx0XHRcdGNvbnN0IGNvZGluZ3MgPSBoZWFkZXJzLmdldCgnQ29udGVudC1FbmNvZGluZycpO1xuXG5cdFx0XHQvLyBIVFRQLW5ldHdvcmsgZmV0Y2ggc3RlcCAxMi4xLjEuNDogaGFuZGxlIGNvbnRlbnQgY29kaW5nc1xuXG5cdFx0XHQvLyBpbiBmb2xsb3dpbmcgc2NlbmFyaW9zIHdlIGlnbm9yZSBjb21wcmVzc2lvbiBzdXBwb3J0XG5cdFx0XHQvLyAxLiBjb21wcmVzc2lvbiBzdXBwb3J0IGlzIGRpc2FibGVkXG5cdFx0XHQvLyAyLiBIRUFEIHJlcXVlc3Rcblx0XHRcdC8vIDMuIG5vIENvbnRlbnQtRW5jb2RpbmcgaGVhZGVyXG5cdFx0XHQvLyA0LiBubyBjb250ZW50IHJlc3BvbnNlICgyMDQpXG5cdFx0XHQvLyA1LiBjb250ZW50IG5vdCBtb2RpZmllZCByZXNwb25zZSAoMzA0KVxuXHRcdFx0aWYgKCFyZXF1ZXN0LmNvbXByZXNzIHx8IHJlcXVlc3QubWV0aG9kID09PSAnSEVBRCcgfHwgY29kaW5ncyA9PT0gbnVsbCB8fCByZXMuc3RhdHVzQ29kZSA9PT0gMjA0IHx8IHJlcy5zdGF0dXNDb2RlID09PSAzMDQpIHtcblx0XHRcdFx0cmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UoYm9keSwgcmVzcG9uc2Vfb3B0aW9ucyk7XG5cdFx0XHRcdHJlc29sdmUocmVzcG9uc2UpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIEZvciBOb2RlIHY2K1xuXHRcdFx0Ly8gQmUgbGVzcyBzdHJpY3Qgd2hlbiBkZWNvZGluZyBjb21wcmVzc2VkIHJlc3BvbnNlcywgc2luY2Ugc29tZXRpbWVzXG5cdFx0XHQvLyBzZXJ2ZXJzIHNlbmQgc2xpZ2h0bHkgaW52YWxpZCByZXNwb25zZXMgdGhhdCBhcmUgc3RpbGwgYWNjZXB0ZWRcblx0XHRcdC8vIGJ5IGNvbW1vbiBicm93c2Vycy5cblx0XHRcdC8vIEFsd2F5cyB1c2luZyBaX1NZTkNfRkxVU0ggaXMgd2hhdCBjVVJMIGRvZXMuXG5cdFx0XHRjb25zdCB6bGliT3B0aW9ucyA9IHtcblx0XHRcdFx0Zmx1c2g6IHpsaWIuWl9TWU5DX0ZMVVNILFxuXHRcdFx0XHRmaW5pc2hGbHVzaDogemxpYi5aX1NZTkNfRkxVU0hcblx0XHRcdH07XG5cblx0XHRcdC8vIGZvciBnemlwXG5cdFx0XHRpZiAoY29kaW5ncyA9PSAnZ3ppcCcgfHwgY29kaW5ncyA9PSAneC1nemlwJykge1xuXHRcdFx0XHRib2R5ID0gYm9keS5waXBlKHpsaWIuY3JlYXRlR3VuemlwKHpsaWJPcHRpb25zKSk7XG5cdFx0XHRcdHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKGJvZHksIHJlc3BvbnNlX29wdGlvbnMpO1xuXHRcdFx0XHRyZXNvbHZlKHJlc3BvbnNlKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBmb3IgZGVmbGF0ZVxuXHRcdFx0aWYgKGNvZGluZ3MgPT0gJ2RlZmxhdGUnIHx8IGNvZGluZ3MgPT0gJ3gtZGVmbGF0ZScpIHtcblx0XHRcdFx0Ly8gaGFuZGxlIHRoZSBpbmZhbW91cyByYXcgZGVmbGF0ZSByZXNwb25zZSBmcm9tIG9sZCBzZXJ2ZXJzXG5cdFx0XHRcdC8vIGEgaGFjayBmb3Igb2xkIElJUyBhbmQgQXBhY2hlIHNlcnZlcnNcblx0XHRcdFx0Y29uc3QgcmF3ID0gcmVzLnBpcGUobmV3IFBhc3NUaHJvdWdoJDEoKSk7XG5cdFx0XHRcdHJhdy5vbmNlKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKSB7XG5cdFx0XHRcdFx0Ly8gc2VlIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzc1MTk4Mjhcblx0XHRcdFx0XHRpZiAoKGNodW5rWzBdICYgMHgwRikgPT09IDB4MDgpIHtcblx0XHRcdFx0XHRcdGJvZHkgPSBib2R5LnBpcGUoemxpYi5jcmVhdGVJbmZsYXRlKCkpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRib2R5ID0gYm9keS5waXBlKHpsaWIuY3JlYXRlSW5mbGF0ZVJhdygpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UoYm9keSwgcmVzcG9uc2Vfb3B0aW9ucyk7XG5cdFx0XHRcdFx0cmVzb2x2ZShyZXNwb25zZSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIGZvciBiclxuXHRcdFx0aWYgKGNvZGluZ3MgPT0gJ2JyJyAmJiB0eXBlb2YgemxpYi5jcmVhdGVCcm90bGlEZWNvbXByZXNzID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdGJvZHkgPSBib2R5LnBpcGUoemxpYi5jcmVhdGVCcm90bGlEZWNvbXByZXNzKCkpO1xuXHRcdFx0XHRyZXNwb25zZSA9IG5ldyBSZXNwb25zZShib2R5LCByZXNwb25zZV9vcHRpb25zKTtcblx0XHRcdFx0cmVzb2x2ZShyZXNwb25zZSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gb3RoZXJ3aXNlLCB1c2UgcmVzcG9uc2UgYXMtaXNcblx0XHRcdHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKGJvZHksIHJlc3BvbnNlX29wdGlvbnMpO1xuXHRcdFx0cmVzb2x2ZShyZXNwb25zZSk7XG5cdFx0fSk7XG5cblx0XHR3cml0ZVRvU3RyZWFtKHJlcSwgcmVxdWVzdCk7XG5cdH0pO1xufVxuLyoqXG4gKiBSZWRpcmVjdCBjb2RlIG1hdGNoaW5nXG4gKlxuICogQHBhcmFtICAgTnVtYmVyICAgY29kZSAgU3RhdHVzIGNvZGVcbiAqIEByZXR1cm4gIEJvb2xlYW5cbiAqL1xuZmV0Y2guaXNSZWRpcmVjdCA9IGZ1bmN0aW9uIChjb2RlKSB7XG5cdHJldHVybiBjb2RlID09PSAzMDEgfHwgY29kZSA9PT0gMzAyIHx8IGNvZGUgPT09IDMwMyB8fCBjb2RlID09PSAzMDcgfHwgY29kZSA9PT0gMzA4O1xufTtcblxuLy8gZXhwb3NlIFByb21pc2VcbmZldGNoLlByb21pc2UgPSBnbG9iYWwuUHJvbWlzZTtcblxuZXhwb3J0IGRlZmF1bHQgZmV0Y2g7XG5leHBvcnQgeyBIZWFkZXJzLCBSZXF1ZXN0LCBSZXNwb25zZSwgRmV0Y2hFcnJvciB9O1xuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0bG9hZGVkOiBmYWxzZSxcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG5cdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5ubWQgPSAobW9kdWxlKSA9PiB7XG5cdG1vZHVsZS5wYXRocyA9IFtdO1xuXHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdHJldHVybiBtb2R1bGU7XG59OyIsIi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLy8gVGhpcyBlbnRyeSBtb2R1bGUgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBtb2R1bGVzIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIi4vaW5kZXgudHNcIik7XG4iXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwiZ2xvYmFsIiwiYXNuMSIsImJpZ251bSIsImJhc2UiLCJjb25zdGFudHMiLCJkZWNvZGVycyIsImVuY29kZXJzIiwiaW5oZXJpdHMiLCJFbnRpdHkiLCJuYW1lIiwiYm9keSIsInRoaXMiLCJwcm90b3R5cGUiLCJfY3JlYXRlTmFtZWQiLCJuYW1lZCIsImUiLCJlbnRpdHkiLCJfaW5pdE5hbWVkIiwiY2FsbCIsIl9nZXREZWNvZGVyIiwiZW5jIiwiaGFzT3duUHJvcGVydHkiLCJkZWNvZGUiLCJkYXRhIiwib3B0aW9ucyIsIl9nZXRFbmNvZGVyIiwiZW5jb2RlIiwicmVwb3J0ZXIiLCJSZXBvcnRlciIsIkJ1ZmZlciIsIkRlY29kZXJCdWZmZXIiLCJpc0J1ZmZlciIsIm9mZnNldCIsImxlbmd0aCIsImVycm9yIiwiRW5jb2RlckJ1ZmZlciIsInZhbHVlIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwiaXRlbSIsImJ5dGVMZW5ndGgiLCJzYXZlIiwicmVzdG9yZSIsInJlcyIsImlzRW1wdHkiLCJyZWFkVUludDgiLCJmYWlsIiwic2tpcCIsImJ5dGVzIiwiX3JlcG9ydGVyU3RhdGUiLCJyYXciLCJzbGljZSIsImpvaW4iLCJvdXQiLCJmb3JFYWNoIiwid3JpdGUiLCJjb3B5IiwiTm9kZSIsImFzc2VydCIsInRhZ3MiLCJtZXRob2RzIiwiY29uY2F0IiwicGFyZW50Iiwic3RhdGUiLCJfYmFzZVN0YXRlIiwiY2hpbGRyZW4iLCJ0YWciLCJhcmdzIiwicmV2ZXJzZUFyZ3MiLCJjaG9pY2UiLCJvcHRpb25hbCIsImFueSIsIm9iaiIsInVzZSIsInVzZURlY29kZXIiLCJrZXkiLCJleHBsaWNpdCIsImltcGxpY2l0IiwiY29udGFpbnMiLCJfd3JhcCIsInN0YXRlUHJvcHMiLCJjbG9uZSIsImNzdGF0ZSIsInByb3AiLCJjb25zdHJ1Y3RvciIsIm1ldGhvZCIsInB1c2giLCJhcHBseSIsImFyZ3VtZW50cyIsIl9pbml0IiwiZmlsdGVyIiwiY2hpbGQiLCJlcXVhbCIsIl91c2VBcmdzIiwiYXJnIiwiT2JqZWN0Iiwia2V5cyIsIkVycm9yIiwiZGVmIiwidmFsIiwibnVtIiwibmV3S2V5IiwiX2RlY29kZSIsImlucHV0Iiwid3JhcFJlc3VsdCIsInByZXZPYmoiLCJyZXN1bHQiLCJwcmVzZW50IiwicHJldktleSIsImVudGVyS2V5IiwiX3BlZWtUYWciLCJpc0Vycm9yIiwiX2RlY29kZUdlbmVyaWMiLCJfZGVjb2RlQ2hvaWNlIiwiZW50ZXJPYmplY3QiLCJfZGVjb2RlVGFnIiwic3RhcnQiLCJ0cmFjayIsInBhdGgiLCJfZ2V0VXNlIiwibGVhdmVPYmplY3QiLCJleGl0S2V5IiwibGVhdmVLZXkiLCJfZGVjb2RlTGlzdCIsInRlc3QiLCJfZGVjb2RlU3RyIiwiX2RlY29kZU9iamlkIiwiX2RlY29kZVRpbWUiLCJfZGVjb2RlTnVsbCIsIl9kZWNvZGVCb29sIiwiX2RlY29kZUludCIsIl91c2UiLCJtYXRjaCIsInNvbWUiLCJub2RlIiwidHlwZSIsIl9jcmVhdGVFbmNvZGVyQnVmZmVyIiwiX2VuY29kZSIsIl9lbmNvZGVWYWx1ZSIsInVuZGVmaW5lZCIsIl9za2lwRGVmYXVsdCIsImNvbnRlbnQiLCJwcmltaXRpdmUiLCJfZW5jb2RlQ2hvaWNlIiwiX2VuY29kZVByaW1pdGl2ZSIsImNscyIsIl9lbmNvZGVDb21wb3NpdGUiLCJKU09OIiwic3RyaW5naWZ5IiwiX2VuY29kZVN0ciIsIl9lbmNvZGVPYmppZCIsIl9lbmNvZGVUaW1lIiwiX2VuY29kZU51bGwiLCJfZW5jb2RlSW50IiwiX2VuY29kZUJvb2wiLCJfaXNOdW1zdHIiLCJzdHIiLCJfaXNQcmludHN0ciIsImVycm9ycyIsIlJlcG9ydGVyRXJyb3IiLCJtc2ciLCJyZXRocm93IiwicGF0aExlbiIsImluZGV4IiwicHJldiIsIm5vdyIsImVyciIsImluaGVyaXRlZCIsImVsZW0iLCJtZXNzYWdlIiwic3RhY2siLCJwYXJ0aWFsIiwiY2FwdHVyZVN0YWNrVHJhY2UiLCJ0YWdDbGFzcyIsInRhZ0NsYXNzQnlOYW1lIiwiX3JldmVyc2UiLCJ0YWdCeU5hbWUiLCJkZXIiLCJERVJEZWNvZGVyIiwidHJlZSIsIkRFUk5vZGUiLCJkZXJEZWNvZGVUYWciLCJidWYiLCJvY3QiLCJ0YWdTdHIiLCJkZXJEZWNvZGVMZW4iLCJsZW4iLCJpIiwiaiIsImJ1ZmZlciIsImRlY29kZWRUYWciLCJfc2tpcFVudGlsRW5kIiwiZGVjb2RlciIsInBvc3NpYmxlRW5kIiwidW51c2VkIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwicmVhZFVJbnQxNkJFIiwibnVtc3RyIiwidG9TdHJpbmciLCJwcmludHN0ciIsInZhbHVlcyIsInJlbGF0aXZlIiwiaWRlbnRpZmllcnMiLCJpZGVudCIsInN1YmlkZW50IiwiZmlyc3QiLCJzZWNvbmQiLCJ0bXAiLCJ5ZWFyIiwibW9uIiwiZGF5IiwiaG91ciIsIm1pbiIsInNlYyIsIkRhdGUiLCJVVEMiLCJwZW0iLCJQRU1EZWNvZGVyIiwibGluZXMiLCJzcGxpdCIsImxhYmVsIiwidG9VcHBlckNhc2UiLCJyZSIsImVuZCIsImJhc2U2NCIsInJlcGxhY2UiLCJERVJFbmNvZGVyIiwidHdvIiwiaGVhZGVyIiwiZW5jb2RlZFRhZyIsImVuY29kZVRhZyIsImxlbk9jdGV0cyIsIndyaXRlVUludDE2QkUiLCJjaGFyQ29kZUF0IiwiaWQiLCJzcGxpY2UiLCJzaXplIiwib2JqaWQiLCJ0aW1lIiwiZGF0ZSIsImdldEZ1bGxZZWFyIiwiZ2V0VVRDTW9udGgiLCJnZXRVVENEYXRlIiwiZ2V0VVRDSG91cnMiLCJnZXRVVENNaW51dGVzIiwiZ2V0VVRDU2Vjb25kcyIsIm51bUFycmF5IiwidG9BcnJheSIsInNpZ24iLCJ1bnNoaWZ0IiwiZGF0YUJ1ZmZlciIsImRlZmF1bHRCdWZmZXIiLCJQRU1FbmNvZGVyIiwicCIsImN0b3IiLCJzdXBlckN0b3IiLCJzdXBlcl8iLCJUZW1wQ3RvciIsIkJOIiwibnVtYmVyIiwiZW5kaWFuIiwiaXNCTiIsIm5lZ2F0aXZlIiwid29yZHMiLCJyZWQiLCJ3b3JkU2l6ZSIsIndpbmRvdyIsInBhcnNlSGV4NEJpdHMiLCJzdHJpbmciLCJjIiwicGFyc2VIZXhCeXRlIiwibG93ZXJCb3VuZCIsInIiLCJwYXJzZUJhc2UiLCJtdWwiLCJNYXRoIiwibWF4IiwibGVmdCIsInJpZ2h0IiwiY21wIiwiX2luaXROdW1iZXIiLCJfaW5pdEFycmF5IiwiX3BhcnNlSGV4IiwiX3BhcnNlQmFzZSIsImNlaWwiLCJ3Iiwib2ZmIiwic3RyaXAiLCJsaW1iTGVuIiwibGltYlBvdyIsInRvdGFsIiwibW9kIiwid29yZCIsImltdWxuIiwiX2lhZGRuIiwicG93IiwiZGVzdCIsIl9leHBhbmQiLCJfbm9ybVNpZ24iLCJpbnNwZWN0IiwiemVyb3MiLCJncm91cFNpemVzIiwiZ3JvdXBCYXNlcyIsInNtYWxsTXVsVG8iLCJzZWxmIiwiYSIsImIiLCJsbyIsImNhcnJ5IiwiayIsIm5jYXJyeSIsInJ3b3JkIiwibWF4SiIsInBhZGRpbmciLCJncm91cFNpemUiLCJncm91cEJhc2UiLCJpc1plcm8iLCJtb2RuIiwiaWRpdm4iLCJ0b051bWJlciIsInJldCIsInRvSlNPTiIsInRvQnVmZmVyIiwidG9BcnJheUxpa2UiLCJBcnJheVR5cGUiLCJyZXFMZW5ndGgiLCJsaXR0bGVFbmRpYW4iLCJxIiwiYW5kbG4iLCJpdXNocm4iLCJjbHozMiIsIl9jb3VudEJpdHMiLCJ0IiwiX3plcm9CaXRzIiwiYml0TGVuZ3RoIiwiaGkiLCJ6ZXJvQml0cyIsInRvVHdvcyIsIndpZHRoIiwiYWJzIiwiaW5vdG4iLCJpYWRkbiIsImZyb21Ud29zIiwidGVzdG4iLCJub3RuIiwiaW5lZyIsImlzTmVnIiwibmVnIiwiaXVvciIsImlvciIsIm9yIiwidW9yIiwiaXVhbmQiLCJpYW5kIiwiYW5kIiwidWFuZCIsIml1eG9yIiwiaXhvciIsInhvciIsInV4b3IiLCJieXRlc05lZWRlZCIsImJpdHNMZWZ0Iiwic2V0biIsImJpdCIsIndiaXQiLCJpYWRkIiwiaXN1YiIsImFkZCIsInN1YiIsImNvbWIxME11bFRvIiwibWlkIiwibyIsImEwIiwiYWwwIiwiYWgwIiwiYTEiLCJhbDEiLCJhaDEiLCJhMiIsImFsMiIsImFoMiIsImEzIiwiYWwzIiwiYWgzIiwiYTQiLCJhbDQiLCJhaDQiLCJhNSIsImFsNSIsImFoNSIsImE2IiwiYWw2IiwiYWg2IiwiYTciLCJhbDciLCJhaDciLCJhOCIsImFsOCIsImFoOCIsImE5IiwiYWw5IiwiYWg5IiwiYjAiLCJibDAiLCJiaDAiLCJiMSIsImJsMSIsImJoMSIsImIyIiwiYmwyIiwiYmgyIiwiYjMiLCJibDMiLCJiaDMiLCJiNCIsImJsNCIsImJoNCIsImI1IiwiYmw1IiwiYmg1IiwiYjYiLCJibDYiLCJiaDYiLCJiNyIsImJsNyIsImJoNyIsImI4IiwiYmw4IiwiYmg4IiwiYjkiLCJibDkiLCJiaDkiLCJ3MCIsImltdWwiLCJ3MSIsIncyIiwidzMiLCJ3NCIsInc1IiwidzYiLCJ3NyIsInc4IiwidzkiLCJ3MTAiLCJ3MTEiLCJ3MTIiLCJ3MTMiLCJ3MTQiLCJ3MTUiLCJ3MTYiLCJ3MTciLCJ3MTgiLCJqdW1ib011bFRvIiwiRkZUTSIsIm11bHAiLCJ4IiwieSIsIm11bFRvIiwiaG5jYXJyeSIsImJpZ011bFRvIiwibWFrZVJCVCIsIk4iLCJsIiwicmV2QmluIiwicmIiLCJwZXJtdXRlIiwicmJ0IiwicndzIiwiaXdzIiwicnR3cyIsIml0d3MiLCJ0cmFuc2Zvcm0iLCJzIiwicnR3ZGYiLCJjb3MiLCJQSSIsIml0d2RmIiwic2luIiwicnR3ZGZfIiwiaXR3ZGZfIiwiaWUiLCJybyIsImlvIiwicngiLCJndWVzc0xlbjEzYiIsIm4iLCJtIiwib2RkIiwiY29uanVnYXRlIiwibm9ybWFsaXplMTNiIiwid3MiLCJyb3VuZCIsImNvbnZlcnQxM2IiLCJzdHViIiwicGgiLCJfIiwicndzdCIsIml3c3QiLCJucndzIiwibnJ3c3QiLCJuaXdzdCIsInJtd3MiLCJtdWxmIiwibXVsbiIsInNxciIsImlzcXIiLCJ0b0JpdEFycmF5IiwiaXVzaGxuIiwiYml0cyIsImNhcnJ5TWFzayIsIm5ld0NhcnJ5IiwiaXNobG4iLCJoaW50IiwiZXh0ZW5kZWQiLCJoIiwibWFzayIsIm1hc2tlZFdvcmRzIiwiaXNocm4iLCJzaGxuIiwidXNobG4iLCJzaHJuIiwidXNocm4iLCJpbWFza24iLCJtYXNrbiIsImlzdWJuIiwiYWRkbiIsInN1Ym4iLCJpYWJzIiwiX2lzaGxuc3VibXVsIiwic2hpZnQiLCJfd29yZERpdiIsIm1vZGUiLCJiaGkiLCJkaWZmIiwicWoiLCJkaXYiLCJkaXZtb2QiLCJwb3NpdGl2ZSIsImRpdm4iLCJ1bW9kIiwiZGl2Um91bmQiLCJkbSIsImhhbGYiLCJyMiIsImFjYyIsImVnY2QiLCJBIiwiQiIsIkMiLCJEIiwiZyIsImlzRXZlbiIsInlwIiwieHAiLCJpbSIsImlzT2RkIiwiam0iLCJnY2QiLCJfaW52bXAiLCJ4MSIsIngyIiwiZGVsdGEiLCJjbXBuIiwiaW52bSIsImJpbmNuIiwidWNtcCIsImd0biIsImd0IiwiZ3RlbiIsImd0ZSIsImx0biIsImx0IiwibHRlbiIsImx0ZSIsImVxbiIsImVxIiwiUmVkIiwidG9SZWQiLCJjdHgiLCJjb252ZXJ0VG8iLCJfZm9yY2VSZWQiLCJmcm9tUmVkIiwiY29udmVydEZyb20iLCJmb3JjZVJlZCIsInJlZEFkZCIsInJlZElBZGQiLCJyZWRTdWIiLCJyZWRJU3ViIiwicmVkU2hsIiwic2hsIiwicmVkTXVsIiwiX3ZlcmlmeTIiLCJyZWRJTXVsIiwicmVkU3FyIiwiX3ZlcmlmeTEiLCJyZWRJU3FyIiwicmVkU3FydCIsInNxcnQiLCJyZWRJbnZtIiwicmVkTmVnIiwicmVkUG93IiwicHJpbWVzIiwiazI1NiIsInAyMjQiLCJwMTkyIiwicDI1NTE5IiwiTVByaW1lIiwiX3RtcCIsIksyNTYiLCJQMjI0IiwiUDE5MiIsIlAyNTUxOSIsInByaW1lIiwiX3ByaW1lIiwiTW9udCIsImltb2QiLCJyaW52IiwibWludiIsImlyZWR1Y2UiLCJybGVuIiwiaW11bEsiLCJfc3RyaXAiLCJvdXRwdXQiLCJvdXRMZW4iLCJuZXh0IiwibW9kMyIsIm9uZSIsIm5PbmUiLCJscG93IiwieiIsImludiIsInduZCIsImN1cnJlbnQiLCJjdXJyZW50TGVuIiwibW9udCIsInUiLCJSYW5kIiwicmFuZCIsImdlbmVyYXRlIiwiX3JhbmQiLCJnZXRCeXRlcyIsIlVpbnQ4QXJyYXkiLCJnZXRCeXRlIiwiY3J5cHRvIiwiZ2V0UmFuZG9tVmFsdWVzIiwiYXJyIiwibXNDcnlwdG8iLCJyYW5kb21CeXRlcyIsImVsbGlwdGljIiwidmVyc2lvbiIsInV0aWxzIiwiY3VydmUiLCJjdXJ2ZXMiLCJlYyIsImVkZHNhIiwiZ2V0TkFGIiwiZ2V0SlNGIiwiQmFzZUN1cnZlIiwiY29uZiIsInplcm8iLCJwb2ludEZyb21KU09OIiwiZ1JlZCIsIl93bmFmVDEiLCJfd25hZlQyIiwiX3duYWZUMyIsIl93bmFmVDQiLCJfYml0TGVuZ3RoIiwiYWRqdXN0Q291bnQiLCJyZWROIiwiX21heHdlbGxUcmljayIsIkJhc2VQb2ludCIsInByZWNvbXB1dGVkIiwicG9pbnQiLCJ2YWxpZGF0ZSIsIl9maXhlZE5hZk11bCIsImRvdWJsZXMiLCJfZ2V0RG91YmxlcyIsIm5hZiIsIkkiLCJzdGVwIiwibmFmVyIsInJlcHIiLCJqcG9pbnQiLCJtaXhlZEFkZCIsInBvaW50cyIsInRvUCIsIl93bmFmTXVsIiwibmFmUG9pbnRzIiwiX2dldE5BRlBvaW50cyIsImRibHAiLCJfd25hZk11bEFkZCIsImRlZlciLCJjb2VmZnMiLCJqYWNvYmlhblJlc3VsdCIsInduZFdpZHRoIiwiY29tYiIsInRvSiIsImpzZiIsImphIiwiamIiLCJkZWNvZGVQb2ludCIsInBvaW50RnJvbVgiLCJlbmNvZGVDb21wcmVzc2VkIiwiY29tcGFjdCIsImdldFgiLCJnZXRZIiwicHJlY29tcHV0ZSIsInBvd2VyIiwiYmV0YSIsIl9nZXRCZXRhIiwiX2hhc0RvdWJsZXMiLCJkYmwiLCJCYXNlIiwiRWR3YXJkc0N1cnZlIiwidHdpc3RlZCIsIm1PbmVBIiwiYzIiLCJkIiwiZGQiLCJvbmVDIiwiUG9pbnQiLCJ6T25lIiwiX211bEEiLCJfbXVsQyIsInJocyIsImxocyIsInkyIiwicG9pbnRGcm9tWSIsImlzSW5maW5pdHkiLCJub3JtYWxpemUiLCJmcm9tSlNPTiIsIl9leHREYmwiLCJmIiwibngiLCJueSIsIm50IiwibnoiLCJfcHJvakRibCIsIl9leHRBZGQiLCJfcHJvakFkZCIsIm11bEFkZCIsImsxIiwiazIiLCJqbXVsQWRkIiwiemkiLCJvdGhlciIsImVxWFRvUCIsInhjIiwic2hvcnQiLCJlZHdhcmRzIiwiTW9udEN1cnZlIiwiaTQiLCJhMjQiLCJhYSIsImJiIiwiZGlmZkFkZCIsImRhIiwiY2IiLCJqdW1sQWRkIiwiU2hvcnRDdXJ2ZSIsInRpbnYiLCJ6ZXJvQSIsInRocmVlQSIsImVuZG8iLCJfZ2V0RW5kb21vcnBoaXNtIiwiX2VuZG9XbmFmVDEiLCJfZW5kb1duYWZUMiIsImlzUmVkIiwiaW5mIiwiSlBvaW50IiwibGFtYmRhIiwiYmV0YXMiLCJfZ2V0RW5kb1Jvb3RzIiwibGFtYmRhcyIsImJhc2lzIiwidmVjIiwiX2dldEVuZG9CYXNpcyIsIm50aW52IiwicHJldlIiLCJhcHJ4U3FydCIsImZsb29yIiwidiIsInkxIiwibGVuMSIsIl9lbmRvU3BsaXQiLCJ2MSIsInYyIiwiYzEiLCJwMSIsInAyIiwicTEiLCJxMiIsImF4IiwiX2VuZG9XbmFmTXVsQWRkIiwibnBvaW50cyIsIm5jb2VmZnMiLCJwcmUiLCJlbmRvTXVsIiwicGFyc2UiLCJvYmoycG9pbnQiLCJ5czEiLCJkeWludiIsIl9wcmVjb21wdXRlIiwibmVnYXRlIiwiemludiIsInppbnYyIiwiYXkiLCJwejIiLCJ6MiIsInUxIiwidTIiLCJzMSIsInMyIiwiaDIiLCJoMyIsImp4IiwiankiLCJqeiIsImp6NCIsImp5ZCIsImp4MiIsImp5ZDIiLCJqeWQ0IiwidDEiLCJ0MiIsImRueSIsIl96ZXJvRGJsIiwiX3RocmVlRGJsIiwiX2RibCIsInh4IiwieXkiLCJ5eXl5IiwieXl5eTgiLCJjOCIsImdhbW1hIiwiYWxwaGEiLCJiZXRhNCIsImJldGE4IiwiZ2dhbW1hOCIsImp5MiIsImp4ZDQiLCJqeWQ4IiwidHJwbCIsInp6IiwibW0iLCJlZSIsInl5dTQiLCJrYmFzZSIsInozIiwicHozIiwienMiLCJoYXNoIiwiUHJlc2V0Q3VydmUiLCJkZWZpbmVDdXJ2ZSIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsImdldCIsInNoYTI1NiIsInNoYTM4NCIsInNoYTUxMiIsIkhtYWNEUkJHIiwiS2V5UGFpciIsIlNpZ25hdHVyZSIsIkVDIiwibmgiLCJrZXlQYWlyIiwia2V5RnJvbVByaXZhdGUiLCJwcml2IiwiZnJvbVByaXZhdGUiLCJrZXlGcm9tUHVibGljIiwicHViIiwiZnJvbVB1YmxpYyIsImdlbktleVBhaXIiLCJkcmJnIiwicGVycyIsInBlcnNFbmMiLCJlbnRyb3B5IiwiaG1hY1N0cmVuZ3RoIiwiZW50cm9weUVuYyIsIm5vbmNlIiwibnMyIiwiX3RydW5jYXRlVG9OIiwidHJ1bmNPbmx5IiwiYmtleSIsImdldFByaXZhdGUiLCJuczEiLCJpdGVyIiwia3AiLCJrcFgiLCJyZWNvdmVyeVBhcmFtIiwiY2Fub25pY2FsIiwidmVyaWZ5Iiwic2lnbmF0dXJlIiwic2ludiIsImdldFB1YmxpYyIsInJlY292ZXJQdWJLZXkiLCJpc1lPZGQiLCJpc1NlY29uZEtleSIsInJJbnYiLCJnZXRLZXlSZWNvdmVyeVBhcmFtIiwiUSIsIlFwcmltZSIsIl9pbXBvcnRQcml2YXRlIiwicHJpdkVuYyIsIl9pbXBvcnRQdWJsaWMiLCJwdWJFbmMiLCJyZWFzb24iLCJkZXJpdmUiLCJfaW1wb3J0REVSIiwiUG9zaXRpb24iLCJwbGFjZSIsImdldExlbmd0aCIsImluaXRpYWwiLCJvY3RldExlbiIsInJtUGFkZGluZyIsImNvbnN0cnVjdExlbmd0aCIsIm9jdGV0cyIsImxvZyIsIkxOMiIsInNsZW4iLCJ0b0RFUiIsImJhY2tIYWxmIiwicGFyc2VCeXRlcyIsIkVERFNBIiwicG9pbnRDbGFzcyIsImVuY29kaW5nTGVuZ3RoIiwic2VjcmV0Iiwia2V5RnJvbVNlY3JldCIsImhhc2hJbnQiLCJtZXNzYWdlUHJlZml4IiwiUiIsIlJlbmNvZGVkIiwiZW5jb2RlUG9pbnQiLCJzXyIsInB1YkJ5dGVzIiwiUyIsIm1ha2VTaWduYXR1cmUiLCJzaWciLCJTRyIsInVwZGF0ZSIsImludEZyb21MRSIsImRpZ2VzdCIsImZyb21TZWNyZXQiLCJsYXN0SXgiLCJub3JtZWQiLCJ4SXNPZGQiLCJlbmNvZGVJbnQiLCJkZWNvZGVJbnQiLCJpc1BvaW50IiwiY2FjaGVkUHJvcGVydHkiLCJwYXJhbXMiLCJfc2VjcmV0IiwiX3B1YiIsIl9wdWJCeXRlcyIsInByaXZCeXRlcyIsImdldFNlY3JldCIsIl9SIiwiX1MiLCJfUmVuY29kZWQiLCJfU2VuY29kZWQiLCJTZW5jb2RlZCIsInRvQnl0ZXMiLCJ0b0hleCIsIm1pbkFzc2VydCIsIm1pblV0aWxzIiwiemVybzIiLCJmaWxsIiwibTgiLCJkMSIsImQyIiwibTE0IiwibTI0IiwiY29tcHV0ZXIiLCJjb21tb24iLCJzaGEiLCJyaXBlbWQiLCJobWFjIiwic2hhMSIsInNoYTIyNCIsInJpcGVtZDE2MCIsIkJsb2NrSGFzaCIsInBlbmRpbmciLCJwZW5kaW5nVG90YWwiLCJibG9ja1NpemUiLCJvdXRTaXplIiwicGFkTGVuZ3RoIiwiX2RlbHRhOCIsIl9kZWx0YTMyIiwiam9pbjMyIiwiX3VwZGF0ZSIsIl9wYWQiLCJfZGlnZXN0IiwiSG1hYyIsIkhhc2giLCJpbm5lciIsIm91dGVyIiwicm90bDMyIiwic3VtMzIiLCJzdW0zMl8zIiwic3VtMzJfNCIsIlJJUEVNRDE2MCIsIksiLCJLaCIsIkUiLCJBaCIsIkJoIiwiQ2giLCJEaCIsIkVoIiwiVCIsInJoIiwic2giLCJ0b0hleDMyIiwic3BsaXQzMiIsInNoYUNvbW1vbiIsInN1bTMyXzUiLCJmdF8xIiwic2hhMV9LIiwiU0hBMSIsIlciLCJTSEEyNTYiLCJTSEEyMjQiLCJjaDMyIiwibWFqMzIiLCJzMF8yNTYiLCJzMV8yNTYiLCJnMF8yNTYiLCJnMV8yNTYiLCJzaGEyNTZfSyIsIlQxIiwiVDIiLCJTSEE1MTIiLCJTSEEzODQiLCJyb3RyNjRfaGkiLCJyb3RyNjRfbG8iLCJzaHI2NF9oaSIsInNocjY0X2xvIiwic3VtNjQiLCJzdW02NF9oaSIsInN1bTY0X2xvIiwic3VtNjRfNF9oaSIsInN1bTY0XzRfbG8iLCJzdW02NF81X2hpIiwic3VtNjRfNV9sbyIsInNoYTUxMl9LIiwiY2g2NF9oaSIsInhoIiwieGwiLCJ5aCIsInlsIiwiemgiLCJjaDY0X2xvIiwiemwiLCJtYWo2NF9oaSIsIm1hajY0X2xvIiwiczBfNTEyX2hpIiwiczBfNTEyX2xvIiwiczFfNTEyX2xvIiwiZzBfNTEyX2hpIiwiZzBfNTEyX2xvIiwiZzFfNTEyX2xvIiwiX3ByZXBhcmVCbG9jayIsImMwX2hpIiwiYzBfbG8iLCJjMV9oaSIsImMxX2xvIiwiYzJfaGkiLCJjMl9sbyIsImMzX2hpIiwiYzNfbG8iLCJhaCIsImFsIiwiYmgiLCJibCIsImNoIiwiY2wiLCJkaCIsImRsIiwiZWgiLCJlbCIsImZoIiwiZmwiLCJnaCIsImdsIiwiaGgiLCJobCIsImM0X2hpIiwiYzRfbG8iLCJUMV9oaSIsIlQxX2xvIiwiVDJfaGkiLCJUMl9sbyIsInJvdHIzMiIsInAzMiIsImlzU3Vycm9nYXRlUGFpciIsImh0b25sIiwiemVybzgiLCJwYXJzZUludCIsInBvcyIsInByZWRSZXNpc3QiLCJtaW5FbnRyb3B5IiwiX3Jlc2VlZCIsInJlc2VlZEludGVydmFsIiwiViIsIm5vbmNlRW5jIiwic2VlZCIsIl9obWFjIiwia21hYyIsInJlc2VlZCIsImFkZEVuYyIsInRlbXAiLCJ1dGlsIiwiY3JlYXRlIiwid3JpdGFibGUiLCJmcyIsIm9zIiwicnVudGltZVJlcXVpcmUiLCJ2YXJzIiwicHJvY2VzcyIsImNvbmZpZyIsInZhcmlhYmxlcyIsInByZWJ1aWxkc09ubHkiLCJlbnYiLCJQUkVCVUlMRFNfT05MWSIsImFiaSIsInZlcnNpb25zIiwibW9kdWxlcyIsInJ1bnRpbWUiLCJlbGVjdHJvbiIsIkVMRUNUUk9OX1JVTl9BU19OT0RFIiwibnciLCJhcmNoIiwibnBtX2NvbmZpZ19hcmNoIiwicGxhdGZvcm0iLCJucG1fY29uZmlnX3BsYXRmb3JtIiwibGliYyIsIkxJQkMiLCJleGlzdHNTeW5jIiwiaXNBbHBpbmUiLCJhcm12IiwiQVJNX1ZFUlNJT04iLCJhcm1fdmVyc2lvbiIsInV2IiwibG9hZCIsImRpciIsInJlYWRkaXJTeW5jIiwiZ2V0Rmlyc3QiLCJmaWxlcyIsIm1hdGNoQnVpbGQiLCJwYXJzZVR1cGxlIiwiYXJjaGl0ZWN0dXJlcyIsImV2ZXJ5IiwiQm9vbGVhbiIsIm1hdGNoVHVwbGUiLCJ0dXBsZSIsImluY2x1ZGVzIiwiY29tcGFyZVR1cGxlcyIsInBhcnNlVGFncyIsImZpbGUiLCJzcGVjaWZpY2l0eSIsInBvcCIsIm5hcGkiLCJtYXRjaFRhZ3MiLCJydW50aW1lQWdub3N0aWMiLCJjb21wYXJlVGFncyIsInJlc29sdmUiLCJyZWxlYXNlIiwiZGVidWciLCJwcmVidWlsZCIsIm5lYXJieSIsImRpcm5hbWUiLCJleGVjUGF0aCIsInRhcmdldCIsInNvcnQiLCJwcmVidWlsZHMiLCJ3aW5uZXIiLCJhZGRvbiIsIl9fZGlybmFtZSIsIlNlY3AyNTZrMSIsImVjcGFyYW1zIiwibG9hZFB1YmxpY0tleSIsInB1YmtleSIsInhidWYiLCJsb2FkQ29tcHJlc3NlZFB1YmxpY0tleSIsInN1YmFycmF5IiwieWJ1ZiIsIngzIiwibG9hZFVuY29tcHJlc3NlZFB1YmxpY0tleSIsInNhdmVQdWJsaWNLZXkiLCJjb250ZXh0UmFuZG9taXplIiwicHJpdmF0ZUtleVZlcmlmeSIsInNlY2tleSIsImJuIiwicHJpdmF0ZUtleU5lZ2F0ZSIsInNldCIsInByaXZhdGVLZXlUd2Vha0FkZCIsInR3ZWFrIiwidHdlYWtlZCIsInByaXZhdGVLZXlUd2Vha011bCIsInB1YmxpY0tleVZlcmlmeSIsInB1YmxpY0tleUNyZWF0ZSIsInB1YmxpY0tleUNvbnZlcnQiLCJwYWlyIiwicHVibGljS2V5TmVnYXRlIiwicHVibGljS2V5Q29tYmluZSIsInB1YmtleXMiLCJwYWlycyIsInB1YmxpY0tleVR3ZWFrQWRkIiwicHVibGljS2V5VHdlYWtNdWwiLCJzaWduYXR1cmVOb3JtYWxpemUiLCJzaWduYXR1cmVFeHBvcnQiLCJzaWdSIiwic2lnUyIsImxlblIiLCJwb3NSIiwibGVuUyIsInBvc1MiLCJvdXRwdXRsZW4iLCJzaWduYXR1cmVJbXBvcnQiLCJlY2RzYVNpZ24iLCJub25jZWZuIiwiX25vbmNlZm4iLCJjb3VudGVyIiwicmVjaWQiLCJlY2RzYVZlcmlmeSIsIm1zZzMyIiwic2lnT2JqIiwic2lnciIsInNpZ3MiLCJlY2RzYVJlY292ZXIiLCJlY2RoIiwiaGFzaGZuIiwic2NhbGFyIiwiY29uZCIsImlzVWludDhBcnJheSIsImlzQ29tcHJlc3NlZCIsInRvVHlwZVN0cmluZyIsImdldEFzc2VydGVkT3V0cHV0Iiwic2VjcDI1NmsxIiwiY29tcHJlc3NlZCIsInB1bnljb2RlIiwibWFwcGluZ1RhYmxlIiwiUFJPQ0VTU0lOR19PUFRJT05TIiwiVFJBTlNJVElPTkFMIiwiTk9OVFJBTlNJVElPTkFMIiwiZmluZFN0YXR1cyIsInJlZ2V4QXN0cmFsU3ltYm9scyIsImNvdW50U3ltYm9scyIsImNvbWJpbmluZ01hcmtzUmVnZXgiLCJ2YWxpZGF0ZUxhYmVsIiwicHJvY2Vzc2luZ19vcHRpb24iLCJzdWJzdHIiLCJ0b1VuaWNvZGUiLCJpbmRleE9mIiwic2VhcmNoIiwic3RhdHVzIiwiY29kZVBvaW50QXQiLCJwcm9jZXNzaW5nIiwiZG9tYWluX25hbWUiLCJ1c2VTVEQzIiwiaGFzRXJyb3IiLCJwcm9jZXNzZWQiLCJjb2RlUG9pbnQiLCJmcm9tQ29kZVBvaW50IiwibWFwQ2hhcnMiLCJsYWJlbHMiLCJ2YWxpZGF0aW9uIiwidG9BU0NJSSIsInZlcmlmeURuc0xlbmd0aCIsImRvbWFpbiIsImNocm9taWFDbGllbnRQcm92aWRlciIsImNoYWluMEJSSUQiLCJyZXN0IiwiY2hhaW4wQ2xpZW50IiwiYmxvY2tjaGFpbkNvbm5lY3Rpb24iLCJkYXBwQlJJRCIsInF1ZXJ5T2JqZWN0IiwiYmxvY2tjaGFpbl9yaWQiLCJxdWVyeSIsImJhc2VVcmxzIiwiQmxvY2tjaGFpblVybFVuZGVmaW5lZEV4Y2VwdGlvbiIsImJyaWQiLCJjcmVhdGVQdWJsaWNLZXkiLCJwcml2S2V5IiwidmFsaWRhdGVQcml2S2V5Rm9ybWF0IiwiZnJvbSIsImhhc2gyNTYiLCJoYXNoQ29uY2F0IiwiaXRlbXMiLCJjaGVja1NpZ25hdHVyZSIsInB1YktleSIsImNoZWNrRGlnZXN0U2lnbmF0dXJlIiwic2lnbkRpZ2VzdCIsImRpZ2VzdEJ1ZmZlciIsIm1ha2VLZXlQYWlyIiwiZW5zdXJlQnVmZmVyIiwibWFrZVR1aWQiLCJ2ZXJpZnlLZXlQYWlyIiwiTWlzc2luZ1ByaXZLZXlBcmd1bWVudEV4Y2VwdGlvbiIsIlByaXZLZXlGb3JtYXRFeGNlcHRpb24iLCJwZ0J5dGVzIiwiUGdCeXRlc0lucHV0RXhjZXB0aW9uIiwiY2hlY2tHdHZUeXBlIiwiTnVtYmVyIiwiaXNJbnRlZ2VyIiwicmF3R3R4VG9HdHgiLCJyYXdHdHgiLCJyYXdHdHhCb2R5Iiwic2lnbmF0dXJlcyIsImd0eEJvZHkiLCJibG9ja2NoYWluUklEIiwib3BlcmF0aW9ucyIsIm9wZXJhdGlvbiIsIm9wTmFtZSIsInNpZ25lcnMiLCJjaGVja0d0eFR5cGUiLCJyZW1vdmVEdXBsaWNhdGVTaWduZXJzIiwic2lnbmVyc0FzU3RyaW5nIiwiaXRlbUFzU3RyaW5nIiwiYXNuIiwiQVNORGljdFBhaXIiLCJzZXEiLCJ1dGY4c3RyIiwicmF3R1RWIiwibnVsbCIsIm51bGxfIiwiYnl0ZUFycmF5Iiwib2N0c3RyIiwiaW50ZWdlciIsImludCIsImRpY3QiLCJzZXFvZiIsImFycmF5IiwiYmlnSW50ZWdlciIsIkFTTkJ1ZmZlciIsInRoZU1lcmtsZUhhc2hDYWxjdWxhdG9yIiwiTWVya2xlSGFzaENhbGN1bGF0b3IiLCJDcnlwdG9TeXN0ZW0iLCJndHZIYXNoIiwibWVya2xlSGFzaFN1bW1hcnkiLCJtZXJrbGVIYXNoIiwidHlwZWRBcmciLCJlbXB0eUd0eCIsImFkZFRyYW5zYWN0aW9uVG9HdHgiLCJndHgiLCJNaXNzaW5nR3R4RXhjZXB0aW9uIiwiQWxyZWFkeVNpZ25lZFRyYW5zYWN0aW9uRXhjZXB0aW9uIiwiYWRkU2lnbmVyVG9HdHgiLCJzaWduZXIiLCJnZXREaWdlc3RUb1NpZ24iLCJndHZUeEJvZHkiLCJvcCIsImRpZ2VzdFRvU2lnbiIsImFkZFNpZ25hdHVyZSIsInNpZ25SYXdUcmFuc2FjdGlvbiIsInJhd1RyYW5zYWN0aW9uIiwicHViS2V5QnVmZmVyIiwic2lnbmF0dXJlQnVmZmVyIiwiYWxsb2MiLCJOdW1iZXJPZlNpZ25lcnNBbmRTaWduYXR1cmVzRXhjZXB0aW9uIiwic2lnbmVySW5kZXgiLCJmaW5kSW5kZXgiLCJlcXVhbHMiLCJNaXNzaW5nU2lnbmVyRXhjZXB0aW9uIiwic2VyaWFsaXplIiwiZGVzZXJpYWxpemUiLCJndHhCeXRlcyIsImRlc2VyaWFsaXplZFR4IiwiY2hlY2tHVFhTaWduYXR1cmVzIiwidHhIYXNoIiwic2lnblZhbGlkIiwiY3JlYXRlQ2xpZW50IiwicmVzdEFwaUNsaWVudCIsImZ1bmN0aW9uTmFtZXMiLCJ0cmFuc2FjdGlvbiIsImdldFR4UklEIiwiYWRkT3BlcmF0aW9uIiwicG9zdEFuZFdhaXRDb25maXJtYXRpb24iLCJzZW5kIiwiY2FsbGJhY2siLCJwb3N0VHJhbnNhY3Rpb24iLCJhZGRGdW5jdGlvbnMiLCJyZXEiLCJmdW5jdGlvbk5hbWUiLCJuZXdUcmFuc2FjdGlvbiIsIm5ld0d0eCIsInRyYW5zYWN0aW9uRnJvbVJhd1RyYW5zYWN0aW9uIiwiZW5jb2RlVmFsdWUiLCJyYXdHdHYiLCJjcmVhdGVUeXBlZEFyZyIsImVuY29kZVZhbHVlR3R4IiwiZGVjb2RlVmFsdWUiLCJwYXJzZVZhbHVlIiwiZGVjb2RlVmFsdWVHdHgiLCJkZWNvZGVkVmFsdWUiLCJCaWdJbnQiLCJVbmV4cGVjdGVkQXJndW1lbnRUeXBlRXJyb3IiLCJNc2dUeXBlIiwiTG9nQ29sb3IiLCJsb2dMZXZlbCIsInNldExvZ0xldmVsIiwibGV2ZWwiLCJlbWl0TG9nTWVzc2FnZSIsImJsdWUiLCJpbmZvIiwiZ3JlZW4iLCJ3YXJuaW5nIiwieWVsbG93IiwibXNnVHlwZSIsImNvbG9yIiwicGFkIiwiZ2V0SG91cnMiLCJnZXRNaW51dGVzIiwiZ2V0U2Vjb25kcyIsImdldE1pbGxpc2Vjb25kcyIsImNvbnNvbGUiLCJzdG9wQ29sb3IiLCJpbnRlcm5hbE5vZGVQcmVmaXgiLCJsZWFmUHJlZml4Iiwibm9uRXhpc3RpbmdOb2RlSGFzaCIsImNhbGN1bGF0ZVJvb3QiLCJoYXNoZXMiLCJkZXB0aCIsImxlYWZEZXB0aCIsIm51bVRyYW5zYWN0aW9ucyIsImxvZzIiLCJtYXhMZWF2ZXNQZXJDaGlsZCIsInByZWZpeCIsImludGVybmFsTWVya2xlUGF0aCIsInRhcmdldEluZGV4Iiwic2lkZSIsIm1lcmtsZVBhdGgiLCJ2YWxpZGF0ZU1lcmtsZVBhdGgiLCJtZXJrbGVSb290IiwiY3VycmVudEhhc2giLCJyZWplY3RSZWFzb24iLCJmdWxsUmVhc29uIiwicGFyc2VkIiwic2hvcnRSZWFzb24iLCJyZWxsTGluZSIsInR4UklEIiwiY2hhaW5JZCIsImNyZWF0ZVJlc3RDbGllbnQiLCJlbmRwb2ludFBvb2wiLCJtYXhTb2NrZXRzIiwicG9sbGluZ0ludGVydmFsIiwiZmFpbE92ZXJDb25maWciLCJFbXB0eUxpc3RPZlVybHNFeGNlcHRpb24iLCJhdHRlbXB0c1BlckVuZHBvaW50IiwidmFsaWRhdGVJbnB1dCIsInBvb2wiLCJhdHRlbXB0SW50ZXJ2YWwiLCJnZXRUcmFuc2FjdGlvbiIsInZhbGlkVHhSSUQiLCJVbnZhbGlkVHhSaWRFeGNlcHRpb24iLCJyZXF1ZXN0V2l0aFJldHJ5IiwiTWV0aG9kIiwic3RhdHVzQ29kZSIsInJzcEJvZHkiLCJoYW5kbGVHZXRSZXNwb25zZSIsInR4Iiwic2VyaWFsaXplZFRyYW5zYWN0aW9uIiwiU2VyaWFsaXplZFRyYW5zYWN0aW9uRm9ybWF0RXhjZXB0aW9uIiwidHJhbnNhY3Rpb25PYmplY3QiLCJoYW5kbGVQb3N0UmVzcG9uc2UiLCJnZXRDb25maXJtYXRpb25Qcm9vZiIsImNvbmZpcm1hdGlvblByb29mIiwiYmxvY2tIZWFkZXIiLCJQcm9taXNlIiwicmVqZWN0Iiwid2FpdENvbmZpcm1hdGlvbiIsIlJlc3BvbnNlU3RhdHVzIiwiVHhSZWplY3RlZEVycm9yIiwiTG9zdE1lc3NhZ2VFcnJvciIsInNldFRpbWVvdXQiLCJ0aGVuIiwiVW5leHBlY3RlZFJlc3BvbnNlRXJyb3IiLCJnZXRFbmRwb2ludFBvb2wiLCJlbmRwb2ludCIsIlVSTCIsImhyZWYiLCJyZXNwb25zZSIsImpzb24iLCJwb3N0IiwicmVxdWVzdEJvZHkiLCJoZWFkZXJzIiwicmVzcG9uc2VPYmplY3QiLCJVbmV4cGVjdGVkU3RhdHVzRXJyb3IiLCJwb3N0T2JqZWN0Iiwibm9SZXRyeVN0YXR1c0NvZGVzIiwibmV4dEVuZHBvaW50IiwiYXR0ZW1wdCIsImhhbmRsZVJlcXVlc3QiLCJzbGVlcCIsImdldEJyaWQiLCJ1cmxCYXNlIiwidXJsIiwib2siLCJ0ZXh0IiwiR2V0QnJpZEZyb21DaGFpbkV4Y2VwdGlvbiIsInN0YXR1c1RleHQiLCJibG9ja2NoYWluIiwicmFuZG9tIiwibXMiLCJjb252ZXJzaW9ucyIsImNyZWF0ZU51bWJlckNvbnZlcnNpb24iLCJ0eXBlT3B0cyIsInVuc2lnbmVkIiwidXBwZXJCb3VuZCIsIm1vZHVsb1ZhbCIsIm1vZHVsb0JpdExlbmd0aCIsIm1vZHVsb0JvdW5kIiwib3B0cyIsImVuZm9yY2VSYW5nZSIsImlzRmluaXRlIiwiVHlwZUVycm9yIiwiaXNOYU4iLCJjbGFtcCIsImV2ZW5Sb3VuZCIsInRyZWF0TnVsbEFzRW1wdHlTdHJpbmciLCJVIiwiUmVnRXhwIiwidXNtIiwiaW1wbGVtZW50YXRpb24iLCJjb25zdHJ1Y3RvckFyZ3MiLCJwYXJzZWRCYXNlIiwiYmFzaWNVUkxQYXJzZSIsInBhcnNlZFVSTCIsImJhc2VVUkwiLCJfdXJsIiwic2VyaWFsaXplVVJMIiwib3JpZ2luIiwic2VyaWFsaXplVVJMT3JpZ2luIiwicHJvdG9jb2wiLCJzY2hlbWUiLCJzdGF0ZU92ZXJyaWRlIiwidXNlcm5hbWUiLCJjYW5ub3RIYXZlQVVzZXJuYW1lUGFzc3dvcmRQb3J0Iiwic2V0VGhlVXNlcm5hbWUiLCJwYXNzd29yZCIsInNldFRoZVBhc3N3b3JkIiwiaG9zdCIsInBvcnQiLCJzZXJpYWxpemVIb3N0Iiwic2VyaWFsaXplSW50ZWdlciIsImNhbm5vdEJlQUJhc2VVUkwiLCJob3N0bmFtZSIsInBhdGhuYW1lIiwic3Vic3RyaW5nIiwiZnJhZ21lbnQiLCJJbXBsIiwiaW1wbCIsImltcGxTeW1ib2wiLCJzZXR1cCIsImlzIiwicHJpdmF0ZURhdGEiLCJ3cmFwcGVyIiwid3JhcHBlclN5bWJvbCIsImludGVyZmFjZSIsImV4cG9zZSIsIldpbmRvdyIsIldvcmtlciIsInBhcnNlVVJMIiwidHI0NiIsInNwZWNpYWxTY2hlbWVzIiwiZnRwIiwiZ29waGVyIiwiaHR0cCIsImh0dHBzIiwid3NzIiwiZmFpbHVyZSIsIlN5bWJvbCIsInVjczIiLCJhdCIsImlkeCIsImlzQVNDSUlEaWdpdCIsImlzQVNDSUlBbHBoYSIsImlzQVNDSUlIZXgiLCJpc1NpbmdsZURvdCIsInRvTG93ZXJDYXNlIiwiaXNXaW5kb3dzRHJpdmVMZXR0ZXJTdHJpbmciLCJpc1NwZWNpYWxTY2hlbWUiLCJpc1NwZWNpYWwiLCJwZXJjZW50RW5jb2RlIiwiaGV4IiwiaXNDMENvbnRyb2xQZXJjZW50RW5jb2RlIiwiZXh0cmFQYXRoUGVyY2VudEVuY29kZVNldCIsIlNldCIsImlzUGF0aFBlcmNlbnRFbmNvZGUiLCJoYXMiLCJleHRyYVVzZXJpbmZvUGVyY2VudEVuY29kZVNldCIsImlzVXNlcmluZm9QZXJjZW50RW5jb2RlIiwicGVyY2VudEVuY29kZUNoYXIiLCJlbmNvZGVTZXRQcmVkaWNhdGUiLCJjU3RyIiwidXRmOFBlcmNlbnRFbmNvZGUiLCJwYXJzZUlQdjROdW1iZXIiLCJjaGFyQXQiLCJwYXJzZUhvc3QiLCJpc1NwZWNpYWxBcmciLCJhZGRyZXNzIiwicGllY2VJbmRleCIsImNvbXByZXNzIiwicG9pbnRlciIsIm51bWJlcnNTZWVuIiwiaXB2NFBpZWNlIiwic3dhcHMiLCJwYXJzZUlQdjYiLCJkZWNvZGVkIiwicGFyc2VPcGFxdWVIb3N0IiwidXRmOFBlcmNlbnREZWNvZGUiLCJhc2NpaURvbWFpbiIsImlwdjRIb3N0IiwicGFydHMiLCJudW1iZXJzIiwicGFydCIsImlwdjQiLCJwYXJzZUlQdjQiLCJzZXJpYWxpemVJUHY0IiwibWF4SWR4IiwibWF4TGVuIiwiY3VyclN0YXJ0IiwiY3VyckxlbiIsImZpbmRMb25nZXN0WmVyb1NlcXVlbmNlIiwiaWdub3JlMCIsInNlcmlhbGl6ZUlQdjYiLCJzaG9ydGVuUGF0aCIsImluY2x1ZGVzQ3JlZGVudGlhbHMiLCJVUkxTdGF0ZU1hY2hpbmUiLCJlbmNvZGluZ092ZXJyaWRlIiwicGFyc2VFcnJvciIsInRyaW1Db250cm9sQ2hhcnMiLCJ0cmltVGFiQW5kTmV3bGluZSIsImF0RmxhZyIsImFyckZsYWciLCJwYXNzd29yZFRva2VuU2VlbkZsYWciLCJpc0FTQ0lJQWxwaGFudW1lcmljIiwiZW5jb2RlZENvZGVQb2ludHMiLCJmaWxlT3RoZXJ3aXNlQ29kZVBvaW50cyIsImNwMSIsImNwMiIsImV4Y2x1ZGVGcmFnbWVudCIsInNlcmlhbGl6ZU9yaWdpbiIsIm1peGluIiwic291cmNlIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIndyYXBwZXJGb3JJbXBsIiwiaW1wbEZvcldyYXBwZXIiLCJQYXRoTGVhZkVsZW1lbnQiLCJCaW5hcnlUcmVlRWxlbWVudCIsInBhdGhFbGVtIiwiU3ViVHJlZVJvb3ROb2RlIiwic2V0UGF0aEVsZW1lbnQiLCJMZWFmIiwiRW1wdHlMZWFmIiwiQmluYXJ5VHJlZSIsIkFycmF5SGVhZE5vZGUiLCJEaWN0SGVhZE5vZGUiLCJpc1BhdGgiLCJpc1BhdGhMZWFmIiwiZ2V0UHJlZml4Qnl0ZSIsIm1heExldmVsIiwibWF4TGV2ZWxJbnRlcm5hbCIsIkhBU0hfUFJFRklYX05PREUiLCJIQVNIX1BSRUZJWF9MRUFGIiwiSEFTSF9QUkVGSVhfTk9ERV9BUlJBWSIsIkhBU0hfUFJFRklYX05PREVfRElDVCIsIlBhdGhTZXQiLCJOT19QQVRIUyIsIkJpbmFyeVRyZWVGYWN0b3J5IiwiaGFuZGxlTGVhZiIsImxlYWYiLCJwYXRocyIsImlzUm9vdCIsImlubmVySGFuZGxlTGVhZiIsImdldEVtcHR5UGF0aFNldCIsImhhbmRsZVByaW1pdGl2ZUxlYWYiLCJidWlsZEZyb21BcnJheSIsImJ1aWxkRnJvbURpY3Rpb25hcnkiLCJnZXRQYXRoTGVhZk9yRWxzZUFueUN1cnJlbnRQYXRoRWxlbWVudCIsImJ1aWxkSGlnaGVyTGF5ZXIiLCJsYXllciIsImluTGlzdCIsInJldHVybkFycmF5IiwibnJPZk5vZGVzVG9DcmVhdGUiLCJsZWZ0VmFsdWUiLCJpc0xlZnQiLCJ0ZW1wTm9kZSIsImxvZ0RlYnVnIiwiYnVpbGQiLCJidWlsZFdpdGhQYXRoIiwibGVhZkFycmF5IiwiYnVpbGRMZWFmRWxlbWVudHMiLCJvcmdSb290IiwiYnVpbGRGcm9tT25lTGVhZiIsImxlYWZMaXN0Iiwib25seUFycmF5UGF0aHMiLCJrZWVwT25seUFycmF5UGF0aHMiLCJwYXRoc1JlbGV2YW50Rm9yVGhpc0xlYWYiLCJnZXRUYWlsSWZGaXJzdEVsZW1lbnRJc0FycmF5T2ZUaGlzSW5kZXhGcm9tTGlzdCIsImJpbmFyeVRyZWVFbGVtZW50IiwiYnVpbGRMZWFmRWxlbWVudEZyb21EaWN0Iiwib25seURpY3RQYXRocyIsImtlZXBPbmx5RGljdFBhdGhzIiwia2V5RWxlbWVudCIsImdldFRhaWxJZkZpcnN0RWxlbWVudElzRGljdE9mVGhpc0tleUZyb21MaXN0IiwiY29udGVudEVsZW1lbnQiLCJzZXJpYWxpemF0aW9uIiwiZW5jcnlwdGlvbiIsImhhc2hpbmdGdW4iLCJjcnlwdG9TeXN0ZW0iLCJjYWxjdWxhdGVOb2RlSGFzaCIsImhhc2hMZWZ0IiwiaGFzaFJpZ2h0IiwiY2FsY3VsYXRlTm9kZUhhc2hJbnRlcm5hbCIsImNhbGN1bGF0ZUxlYWZIYXNoIiwiY2FsY3VsYXRlSGFzaE9mVmFsdWVJbnRlcm5hbCIsImhhc2hGdW5jIiwid3JpdGVJbnQ4IiwidmFsdWV0b0hhc2giLCJzZXJpYWxpemVGdW4iLCJpc0NvbnRhaW5lclByb29mVmFsdWVMZWFmIiwiUGF0aEVsZW1lbnQiLCJwcmV2aW91cyIsIlNlYXJjaGFibGVQYXRoRWxlbWVudCIsIkFycmF5UGF0aEVsZW1lbnQiLCJEaWN0UGF0aEVsZW1lbnQiLCJQYXRoIiwicGF0aEVsZW1lbnRzIiwiZ2V0U2VhcmNoS2V5IiwiZ2V0Q3VycmVudFBhdGhFbGVtZW50IiwidGFpbCIsImRlYnVnU3RyaW5nIiwic2IiLCJnZXRUYWlsSWZGaXJzdEVsZW1lbnRJc0FycmF5T2ZUaGlzSW5kZXgiLCJnZXRUYWlsIiwiZ2V0VGFpbElmRmlyc3RFbGVtZW50SXNEaWN0T2ZUaGlzS2V5Iiwic2VhcmNoS2V5IiwiZmlyc3RFbGVtZW50IiwibG9nRXJyb3IiLCJsZWFmRWxlbSIsImN1cnJFbGVtIiwiZXJyb3JDaGVja1VuZXF1YWxQYXJlbnQiLCJjdXJyUGF0aCIsInByZXZQYXRoIiwicHJldkVsZW0iLCJnZXRUYWlsRnJvbUxpc3QiLCJmaWx0ZXJGdW5jIiwicmV0UGF0aHMiLCJuZXdQYXRoIiwiYnVpbGRQYXRoRnJvbUFycmF5IiwibGFzdFBhdGhFbGVtIiwibmV3RWxlbSIsImxhc3RPbmUiLCJNZXJrbGVIYXNoU3VtbWFyeSIsImNvbXBhcmUiLCJQcm9vZkhhc2hlZExlYWYiLCJQcm9vZlZhbHVlTGVhZiIsIlByb29mTm9kZSIsIk1lcmtsZUhhc2hTdW1tYXJ5RmFjdG9yeSIsInRyZWVGYWN0b3J5IiwicHJvb2ZGYWN0b3J5IiwiY2FsY3VsYXRlTWVya2xlUm9vdCIsImNhbGN1bGF0b3IiLCJiaW5hcnlUcmVlIiwicHJvb2ZUcmVlIiwiYnVpbGRGcm9tQmluYXJ5VHJlZSIsImNhbGN1bGF0ZU1lcmtsZVJvb3RPZlRyZWUiLCJjYWxjdWxhdGVNZXJrbGVUcmVlUm9vdCIsImNhbGN1bGF0ZWRTdW1tYXJ5IiwiY2FsY3VsYXRlTWVya2xlUm9vdEludGVybmFsIiwiY3VycmVudEVsZW1lbnQiLCJtZXJrbGVQcm9vZlRyZWUiLCJidWlsZFByb29mVHJlZSIsIk1lcmtsZVByb29mVHJlZUZhY3RvcnkiLCJtZXJrbGVUcmVlSGFzaCIsIm1lcmtsZVByb29mSGFzaFN1bW1hcnkiLCJnZW5lcmF0ZVByb29mIiwicGF0aFNldCIsIk1lcmtsZVByb29mRWxlbWVudCIsIlByb29mTm9kZVNpbXBsZSIsIlByb29mTm9kZUFycmF5SGVhZCIsIlByb29mTm9kZURpY3RIZWFkIiwiTWVya2xlUHJvb2ZUcmVlIiwiRU1QVFlfSEFTSCIsIm9yZ2luYWxUcmVlIiwicm9vdEVsZW0iLCJidWlsZEZyb21CaW5hcnlUcmVlSW50ZXJuYWwiLCJjb252ZXJ0Tm9kZSIsImFkZGVkSGFzaCIsImJ1aWxkTm9kZU9mQ29ycmVjdFR5cGUiLCJleHRyYWN0U2VhcmNoYWJsZVBhdGhFbGVtZW50IiwicmVxdWlyZSIsIlJlYWRhYmxlIiwiQlVGRkVSIiwiVFlQRSIsIkJsb2IiLCJibG9iUGFydHMiLCJidWZmZXJzIiwiZWxlbWVudCIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwiYnl0ZU9mZnNldCIsImFycmF5QnVmZmVyIiwiYWIiLCJzdHJlYW0iLCJyZWFkYWJsZSIsIl9yZWFkIiwicmVsYXRpdmVTdGFydCIsInJlbGF0aXZlRW5kIiwic3BhbiIsInNsaWNlZEJ1ZmZlciIsImJsb2IiLCJGZXRjaEVycm9yIiwic3lzdGVtRXJyb3IiLCJjb2RlIiwiZXJybm8iLCJjb252ZXJ0IiwiZGVmaW5lUHJvcGVydGllcyIsInRvU3RyaW5nVGFnIiwiSU5URVJOQUxTIiwiUGFzc1Rocm91Z2giLCJCb2R5IiwiX3RoaXMiLCJfcmVmIiwiX3JlZiRzaXplIiwiX3JlZiR0aW1lb3V0IiwidGltZW91dCIsImlzVVJMU2VhcmNoUGFyYW1zIiwiaXNCbG9iIiwiZGlzdHVyYmVkIiwib24iLCJjb25zdW1lQm9keSIsIl90aGlzNCIsImFjY3VtIiwiYWNjdW1CeXRlcyIsImFib3J0IiwicmVzVGltZW91dCIsImNodW5rIiwiY2xlYXJUaW1lb3V0IiwiYXBwZW5kIiwiZGVsZXRlIiwiZ2V0QWxsIiwiaW5zdGFuY2UiLCJib2R5VXNlZCIsImdldEJvdW5kYXJ5IiwicGlwZSIsImV4dHJhY3RDb250ZW50VHlwZSIsImdldFRvdGFsQnl0ZXMiLCJnZXRMZW5ndGhTeW5jIiwiX2xlbmd0aFJldHJpZXZlcnMiLCJoYXNLbm93bkxlbmd0aCIsImN0IiwiYXNzaWduIiwiX3RoaXMyIiwidGV4dENvbnZlcnRlZCIsIl90aGlzMyIsImNoYXJzZXQiLCJleGVjIiwiY29udmVydEJvZHkiLCJtaXhJbiIsInByb3RvIiwiZGVzYyIsImludmFsaWRUb2tlblJlZ2V4IiwiaW52YWxpZEhlYWRlckNoYXJSZWdleCIsInZhbGlkYXRlTmFtZSIsInZhbGlkYXRlVmFsdWUiLCJmaW5kIiwiTUFQIiwiSGVhZGVycyIsImluaXQiLCJyYXdIZWFkZXJzIiwiaGVhZGVyTmFtZXMiLCJoZWFkZXJOYW1lIiwiaXRlcmF0b3IiLCJ0aGlzQXJnIiwiZ2V0SGVhZGVycyIsIl9wYWlycyRpIiwiY3JlYXRlSGVhZGVyc0l0ZXJhdG9yIiwia2luZCIsImVudHJpZXMiLCJJTlRFUk5BTCIsIkhlYWRlcnNJdGVyYXRvclByb3RvdHlwZSIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJfSU5URVJOQUwiLCJkb25lIiwiZXhwb3J0Tm9kZUNvbXBhdGlibGVIZWFkZXJzIiwiX19wcm90b19fIiwiaG9zdEhlYWRlcktleSIsIklOVEVSTkFMUyQxIiwiU1RBVFVTX0NPREVTIiwiUmVzcG9uc2UiLCJjb250ZW50VHlwZSIsInJlZGlyZWN0ZWQiLCJJTlRFUk5BTFMkMiIsInBhcnNlX3VybCIsImZvcm1hdF91cmwiLCJ1cmxTdHIiLCJzdHJlYW1EZXN0cnVjdGlvblN1cHBvcnRlZCIsImlzUmVxdWVzdCIsIlJlcXVlc3QiLCJpbnB1dEJvZHkiLCJzaWduYWwiLCJpc0Fib3J0U2lnbmFsIiwicmVkaXJlY3QiLCJmb2xsb3ciLCJhZ2VudCIsIkFib3J0RXJyb3IiLCJVUkwkMSIsIlBhc3NUaHJvdWdoJDEiLCJmZXRjaCIsInJlcXVlc3QiLCJjb250ZW50TGVuZ3RoVmFsdWUiLCJ0b3RhbEJ5dGVzIiwiZ2V0Tm9kZVJlcXVlc3RPcHRpb25zIiwiZGVzdHJveSIsImVtaXQiLCJhYm9ydGVkIiwiYWJvcnRBbmRGaW5hbGl6ZSIsImZpbmFsaXplIiwicmVxVGltZW91dCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib25jZSIsInNvY2tldCIsImNyZWF0ZUhlYWRlcnNMZW5pZW50IiwiaXNSZWRpcmVjdCIsImxvY2F0aW9uIiwibG9jYXRpb25VUkwiLCJyZXF1ZXN0T3B0cyIsImRlc3RpbmF0aW9uIiwib3JpZ2luYWwiLCJvcmlnIiwiZW5kc1dpdGgiLCJpc0RvbWFpbk9yU3ViZG9tYWluIiwicmVzcG9uc2Vfb3B0aW9ucyIsInN0YXR1c01lc3NhZ2UiLCJjb2RpbmdzIiwiemxpYk9wdGlvbnMiLCJmbHVzaCIsImZpbmlzaEZsdXNoIiwid3JpdGVUb1N0cmVhbSIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsImxvYWRlZCIsIl9fd2VicGFja19tb2R1bGVzX18iLCJnZXR0ZXIiLCJfX2VzTW9kdWxlIiwiZGVmaW5pdGlvbiIsIm5tZCJdLCJzb3VyY2VSb290IjoiIn0=
1
+ import * as gtv_1 from "./src/gtv/index";
2
+ export { gtv_1 as gtv };
3
+ import * as formatter_1 from "./src/formatter";
4
+ export { formatter_1 as formatter };
5
+ import * as gtx_1 from "./src/gtx/gtx";
6
+ export { gtx_1 as gtx };
7
+ import * as gtxClient_1 from "./src/gtx/gtxclient";
8
+ export { gtxClient_1 as gtxClient };
9
+ import * as restClient_1 from "./src/restclient/restclient";
10
+ export { restClient_1 as restClient };
11
+ import * as logger_1 from "./src/logger";
12
+ export { logger_1 as logger };
13
+ import * as merkle_1 from "./src/merkle/merkleHelper";
14
+ export { merkle_1 as merkle };
15
+ import * as encryption_1 from "./src/encryption/encryption";
16
+ export { encryption_1 as encryption };
17
+ import * as restClientutil_1 from "./src/restclient/restclientutil";
18
+ export { restClientutil_1 as restClientutil };
19
+ import * as chromiaClient_1 from "./src/chromia/chromiaClientProvider";
20
+ export { chromiaClient_1 as chromiaClient };
21
+ //# sourceMappingURL=index.js.map