@grain/libbinaryen
Version:
Libbinaryen packaged for OCaml.
19 lines (17 loc) • 16.5 MB
JavaScript
// js_of_ocaml needs a special syntax for exposing variables to the compiler
//Provides: Binaryen
var Binaryen = {};
function aa(b){var e=0;return function(){return e<b.length?{done:!1,value:b[e++]}:{done:!0}}}function ba(){for(var b=Number(this),e=[],h=b;h<arguments.length;h++)e[h-b]=arguments[h];return e}var ca="function"==typeof Object.defineProperties?Object.defineProperty:function(b,e,h){if(b==Array.prototype||b==Object.prototype)return b;b[e]=h.value;return b};
function da(b){b=["object"==typeof globalThis&&globalThis,b,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var e=0;e<b.length;++e){var h=b[e];if(h&&h.Math==Math)return h}throw Error("Cannot find global object");}var ea=da(this);function a(b,e){if(e)a:{var h=ea;b=b.split(".");for(var g=0;g<b.length-1;g++){var m=b[g];if(!(m in h))break a;h=h[m]}b=b[b.length-1];g=h[b];e=e(g);e!=g&&null!=e&&ca(h,b,{configurable:!0,writable:!0,value:e})}}
var ha="function"==typeof Object.assign?Object.assign:function(b,e){for(var h=1;h<arguments.length;h++){var g=arguments[h];if(g)for(var m in g)Object.prototype.hasOwnProperty.call(g,m)&&(b[m]=g[m])}return b};a("Object.assign",function(b){return b||ha});
function ia(b,e,h){if(null==b)throw new TypeError("The 'this' value for String.prototype."+h+" must not be null or undefined");if(e instanceof RegExp)throw new TypeError("First argument to String.prototype."+h+" must not be a regular expression");return b+""}a("String.prototype.startsWith",function(b){return b?b:function(e,h){var g=ia(this,e,"startsWith"),m=g.length,l=e.length;h=Math.max(0,Math.min(h|0,g.length));for(var q=0;q<l&&h<m;)if(g[h++]!=e[q++])return!1;return q>=l}});
a("Array.prototype.copyWithin",function(b){function e(h){h=Number(h);return Infinity===h||-Infinity===h?h:h|0}return b?b:function(h,g,m){var l=this.length;h=e(h);g=e(g);m=void 0===m?l:e(m);h=0>h?Math.max(l+h,0):Math.min(h,l);g=0>g?Math.max(l+g,0):Math.min(g,l);m=0>m?Math.max(l+m,0):Math.min(m,l);if(h<g)for(;g<m;)g in this?this[h++]=this[g++]:(delete this[h++],g++);else for(m=Math.min(m,l+g-h),h+=m-g;m>g;)--m in this?this[--h]=this[m]:delete this[--h];return this}});
function ja(b){return b?b:Array.prototype.copyWithin}a("Int8Array.prototype.copyWithin",ja);a("Uint8Array.prototype.copyWithin",ja);a("Uint8ClampedArray.prototype.copyWithin",ja);a("Int16Array.prototype.copyWithin",ja);a("Uint16Array.prototype.copyWithin",ja);a("Int32Array.prototype.copyWithin",ja);a("Uint32Array.prototype.copyWithin",ja);a("Float32Array.prototype.copyWithin",ja);a("Float64Array.prototype.copyWithin",ja);
a("Object.is",function(b){return b?b:function(e,h){return e===h?0!==e||1/e===1/h:e!==e&&h!==h}});a("Array.prototype.includes",function(b){return b?b:function(e,h){var g=this;g instanceof String&&(g=String(g));var m=g.length;h=h||0;for(0>h&&(h=Math.max(h+m,0));h<m;h++){var l=g[h];if(l===e||Object.is(l,e))return!0}return!1}});a("String.prototype.includes",function(b){return b?b:function(e,h){return-1!==ia(this,e,"includes").indexOf(e,h||0)}});
a("Symbol",function(b){function e(l){if(this instanceof e)throw new TypeError("Symbol is not a constructor");return new h(g+(l||"")+"_"+m++,l)}function h(l,q){this.kB=l;ca(this,"description",{configurable:!0,writable:!0,value:q})}if(b)return b;h.prototype.toString=function(){return this.kB};var g="jscomp_symbol_"+(1E9*Math.random()>>>0)+"_",m=0;return e});
a("Symbol.iterator",function(b){if(b)return b;b=Symbol("Symbol.iterator");for(var e="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),h=0;h<e.length;h++){var g=ea[e[h]];"function"===typeof g&&"function"!=typeof g.prototype[b]&&ca(g.prototype,b,{configurable:!0,writable:!0,value:function(){return ka(aa(this))}})}return b});function ka(b){b={next:b};b[Symbol.iterator]=function(){return this};return b}
function la(b,e){b instanceof String&&(b+="");var h=0,g=!1,m={next:function(){if(!g&&h<b.length){var l=h++;return{value:e(l,b[l]),done:!1}}g=!0;return{done:!0,value:void 0}}};m[Symbol.iterator]=function(){return m};return m}a("Array.prototype.keys",function(b){return b?b:function(){return la(this,function(e){return e})}});var c;c||(c=typeof Binaryen !== 'undefined' ? Binaryen : {});var ma=Object.assign({},c),na="./this.program";function oa(b,e){throw e;}
var pa="function"==typeof importScripts,ra="",sa;if("object"==typeof window||pa)pa?ra=self.location.href:"undefined"!=typeof document&&document.currentScript&&(ra=document.currentScript.src),ra=0!==ra.indexOf("blob:")?ra.substr(0,ra.replace(/[?#].*/,"").lastIndexOf("/")+1):"",pa&&(sa=function(b){var e=new XMLHttpRequest;e.open("GET",b,!1);e.responseType="arraybuffer";e.send(null);return new Uint8Array(e.response)});var ta=c.print||console.log.bind(console),ua=c.printErr||console.error.bind(console);
Object.assign(c,ma);ma=null;c.thisProgram&&(na=c.thisProgram);c.quit&&(oa=c.quit);var va;c.wasmBinary&&(va=c.wasmBinary);function wa(){this.buffer=new ArrayBuffer(xa/65536*65536)}function ya(){}function za(b){this.exports=(
// EMSCRIPTEN_START_ASM
function instantiate(gc){function c(d){d.set=function(a,b){this[a]=b};d.get=function(a){return this[a]};return d}var e;var f=new Uint8Array(123);for(var a=25;a>=0;--a){f[48+a]=52+a;f[65+a]=a;f[97+a]=26+a}f[43]=62;f[47]=63;function l(m,n,o){var g,h,a=0,i=n,j=o.length,k=n+(j*3>>2)-(o[j-2]=="=")-(o[j-1]=="=");for(;a<j;a+=4){g=f[o.charCodeAt(a+1)];h=f[o.charCodeAt(a+2)];m[i++]=f[o.charCodeAt(a)]<<2|g>>4;if(i<k)m[i++]=g<<4|h>>2;if(i<k)m[i++]=h<<6|f[o.charCodeAt(a+3)]}}function p(q){l(e,1024,"fgB7fQAifQAgIHZhciBiYXNlNjRSZXZlcnNlTG9va3VwID0gbmV3IFVpbnQ4QXJyYXkoMTIzLyoneicrMSovKTsKICBmb3IgKHZhciBpID0gMjU7IGkgPj0gMDsgLS1pKSB7CiAgICBiYXNlNjRSZXZlcnNlTG9va3VwWzQ4K2ldID0gNTIraTsgLy8gJzAtOScKICAgIGJhc2U2NFJldmVyc2VMb29rdXBbNjUraV0gPSBpOyAvLyAnQS1aJwogICAgYmFzZTY0UmV2ZXJzZUxvb2t1cFs5NytpXSA9IDI2K2k7IC8vICdhLXonCiAgfQogIGJhc2U2NFJldmVyc2VMb29rdXBbNDNdID0gNjI7IC8vICcrJwogIGJhc2U2NFJldmVyc2VMb29rdXBbNDddID0gNjM7IC8vICcvJwogIC8qKiBAbm9pbmxpbmUgSW5saW5pbmcgdGhpcyBmdW5jdGlvbiB3b3VsZCBtZWFuIGV4cGFuZGluZyB0aGUgYmFzZTY0IHN0cmluZyA0eCB0aW1lcyBpbiB0aGUgc291cmNlIGNvZGUsIHdoaWNoIENsb3N1cmUgc2VlbXMgdG8gYmUgaGFwcHkgdG8gZG8uICovCiAgZnVuY3Rpb24gYmFzZTY0RGVjb2RlVG9FeGlzdGluZ1VpbnQ4QXJyYXkodWludDhBcnJheSwgb2Zmc2V0LCBiNjQpIHsKICAgIHZhciBiMSwgYjIsIGkgPSAwLCBqID0gb2Zmc2V0LCBiTGVuZ3RoID0gYjY0Lmxlbmd0aCwgZW5kID0gb2Zmc2V0ICsgKGJMZW5ndGgqMz4+MikgLSAoYjY0W2JMZW5ndGgtMl0gPT0gJz0nKSAtIChiNjRbYkxlbmd0aC0xXSA9PSAnPScpOwogICAgZm9yICg7IGkgPCBiTGVuZ3RoOyBpICs9IDQpIHsKICAgICAgYjEgPSBiYXNlNjRSZXZlcnNlTG9va3VwW2I2NC5jaGFyQ29kZUF0KGkrMSldOwogICAgICBiMiA9IGJhc2U2NFJldmVyc2VMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSsyKV07CiAgICAgIHVpbnQ4QXJyYXlbaisrXSA9IGJhc2U2NFJldmVyc2VMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDIgfCBiMSA+PiA0OwogICAgICBpZiAoaiA8IGVuZCkgdWludDhBcnJheVtqKytdID0gYjEgPDwgNCB8IGIyID4+IDI7CiAgICAgIGlmIChqIDwgZW5kKSB1aW50OEFycmF5W2orK10gPSBiMiA8PCA2IHwgYmFzZTY0UmV2ZXJzZUxvb2t1cFtiNjQuY2hhckNvZGVBdChpKzMpXTsKICAgIH0AfHwAdGFibGlmeXwAewBjdHR6AGk2NC5jdHoAaTMyLmN0egBpNjQuZXF6AGkzMi5lcXoAY3RsegBpNjQuY2x6AGkzMi5jbHoAYmxvY2sgd2l0aCBhIHZhbHVlIG11c3Qgbm90IGJlIGVtcHR5AHNldElkZW50aXR5AGV4cGVjdGVkIHR1cGxlIGFyaXR5AGV4cGVjdGVkIGFycmF5Lm5ld19maXhlZCBhcml0eQAtaW5maW5pdHkALUluZmluaXR5AGNsYXNzaWZ5VHlwZVZpc2liaWxpdHkARXhwZWN0ZWQgMCBvciAxIGZvciBtdXRhYmlsaXR5AHJlZi5lcSBvcGVyYW5kcyBtdXN0IGhhdmUgdGhlIHNhbWUgc2hhcmVhYmlsaXR5AHRlbXBUeXBlc1tyZXRdID09IHR5AGV4cGVjdGVkICdkbycgaW4gdHJ5AGV4cGVjdGVkICdlbmQnIGF0IGVuZCBvZiB0cnkAZXhwZWN0ZWQgJyknIGF0IGVuZCBvZiB0cnkAIDs7IGVuZCB0cnkAbXVsdGltZW1vcnkAYXN5bmNpZnlfbWVtb3J5AGNvbWJpbmVkX21lbW9yeQBhc3luY2lmeS1pbi1zZWNvbmRhcnktbWVtb3J5AGluc3RydW1lbnQtbWVtb3J5AGJ1bGstbWVtb3J5AHJlbW92ZS1tZW1vcnkAbWVtb3J5IHJlcXVpcmVkLCBidXQgdGhlcmUgaXMgbm8gbWVtb3J5AGFjdGl2ZSBkYXRhIHNlZ21lbnQgd2l0aCBubyBtZW1vcnkAZ3Jvd01lbW9yeSBvbiBub24tZXhpc3RpbmcgbWVtb3J5AHNldE1lbW9yeVNpemUgY2FsbGVkIG9uIG5vbi1leGlzdGluZyBtZW1vcnkAZ2V0TWVtb3J5U2l6ZSBjYWxsZWQgb24gbm9uLWV4aXN0aW5nIG1lbW9yeQBjb21iaW5lcyBtdWx0aXBsZSBtZW1vcmllcyBpbnRvIGEgc2luZ2xlIG1lbW9yeQBoaWdoZXN0ID4gbWVtb3J5AG9mZnNldCA+IG1lbW9yeQBieXRlcyA+IG1lbW9yeQBmaW5hbCA+IG1lbW9yeQBnZXRNZW1vcnkAbWFrZUZyb21NZW1vcnkAY3Vyci0+ZGVzdE1lbW9yeSA9PSBjdXJyLT5zb3VyY2VNZW1vcnkAcHJlcENvbWJpbmVkTWVtb3J5AGFkZE1lbW9yeQBGZWJydWFyeQBKYW51YXJ5AHVuaGFuZGxlZCB1bmFyeQBvcHRpbWl6ZVRlcm5hcnkAU0lNRFRlcm5hcnkAd2FzbSBWTXMgbWF5IG5vdCBhY2NlcHQgdGhpcyBiaW5hcnkAZXJyb3IgaW4gcGFyc2luZyB3YXNtIGJpbmFyeQBkdW1wIERXQVJGIGRlYnVnIGluZm8gc2VjdGlvbnMgZnJvbSB0aGUgcmVhZCBiaW5hcnkAdmlzaXRCaW5hcnkAdmlzaXRVbmFyeQBkZWR1cGxpY2F0ZVVuYXJ5AGxlZ2FsaXplcyBpNjQgdHlwZXMgb24gdGhlIGltcG9ydC9leHBvcnQgYm91bmRhcnkAdmlzaXRUcnkAIWFjdGlvbi5pbnNpZGVBVHJ5AHNjb3BlLmtpbmQgPT0gU2NvcGU6OlRyeQB3YXNtMmpzX21lbW9yeV9jb3B5AF9fbWVtb3J5X2NvcHkAd2FzbTJqc190YWJsZV9jb3B5AG91dCBvZiBib3VuZHMgc2VnbWVudCBhY2Nlc3MgaW4gbWVtb3J5LmNvcHkAYXJyYXkuY29weQBvdXQgb2YgYm91bmRzIHNlZ21lbnQgYWNjZXNzIGluIHRhYmxlLmNvcHkAKnNldHMuYmVnaW4oKSA9PSBjb3B5AHZpc2l0TWVtb3J5Q29weQBBcnJheUNvcHkAVGFibGVDb3B5AGV4dGVybi5jb252ZXJ0X2FueQB2aXNpdEFueQBKdWx5AGZpbmFsbHkAcHJvcGFnYXRlLWdsb2JhbHMtZ2xvYmFsbHkAbWVtb3J5LmF0b21pYy5ub3RpZnkAQXRvbWljTm90aWZ5AHNvdXBlcmlmeQBwb3BwaWZ5AHRhYmxpZnkAdGFpbCBjYWxscyBub3QgeWV0IHN1cHBvcnRlZCBpbiBhc3luY2lmeQBrZXkAX19vcmlnaW5hbF9ib2R5AHVucmVhY2hhYmxlIHRyeS1jYXRjaCBtdXN0IGhhdmUgdW5yZWFjaGFibGUgdHJ5IGJvZHkAaWYgd2l0aG91dCBlbHNlIG11c3Qgbm90IHJldHVybiBhIHZhbHVlIGluIGJvZHkAdW5yZWFjaGFibGUgdHJ5LWNhdGNoIG11c3QgaGF2ZSB1bnJlYWNoYWJsZSBjYXRjaCBib2R5ACkgaGFzIHBhcmFtcywgc28gdGhlcmUgc2hvdWxkIGJlIGEgc2luZ2xlIHBvcCB3aXRoaW4gdGhlIGNhdGNoIGJvZHkAQmluYXJ5ZW5UcnlTZXRCb2R5AEJpbmFyeWVuTG9vcFNldEJvZHkAQmluYXJ5ZW5GdW5jdGlvblNldEJvZHkAQmluYXJ5ZW5UcnlHZXRCb2R5AEJpbmFyeWVuTG9vcEdldEJvZHkAQmluYXJ5ZW5UcnlBcHBlbmRDYXRjaEJvZHkAaTY0LmN0eiBzaG91bGQgYmUgcmVtb3ZlZCBhbHJlYWR5AHJlc2V0VGhyZWFkc0FyZVJlYWR5AHNvcnRzIGZ1bmN0aW9ucyBieSBhY2Nlc3MgZnJlcXVlbmN5AHNvcnRzIGxvY2FscyBieSBhY2Nlc3MgZnJlcXVlbmN5AHNvcnRzIGdsb2JhbHMgYnkgYWNjZXNzIGZyZXF1ZW5jeQBvcHRpbWl6ZSB0cml2aWFsIHR1cGxlcyBhd2F5AHN0cmluZy5uZXdfbG9zc3lfdXRmOF9hcnJheQBzdHJpbmcuZW5jb2RlX2xvc3N5X3V0ZjhfYXJyYXkAc3RyaW5nLm5ld193dGYxNl9hcnJheQBzdHJpbmcuZW5jb2RlX3d0ZjE2X2FycmF5AGFycmF5Lm5ldyBoZWFwIHR5cGUgbXVzdCBiZSBhcnJheQBhcnJheS5pbml0IGhlYXAgdHlwZSBtdXN0IGJlIGFycmF5AGdldEFycmF5AEJpbmFyeWVuU3RyaW5nRW5jb2RlU2V0QXJyYXkAQmluYXJ5ZW5TdHJpbmdFbmNvZGVHZXRBcnJheQBhcHBlbmRUb0FycmF5AGludG9DaGFyQ29kZUFycmF5AGZyb21DaGFyQ29kZUFycmF5AFVpbnQ4QXJyYXkASW50OEFycmF5AFVpbnQxNkFycmF5AEludDE2QXJyYXkARmxvYXQ2NEFycmF5AFVpbnQzMkFycmF5AEludDMyQXJyYXkARmxvYXQzMkFycmF5AFRodXJzZGF5AFR1ZXNkYXkAV2VkbmVzZGF5AFNhdHVyZGF5AFN1bmRheQBNb25kYXkARnJpZGF5AE1heQB2YWwudHlwZSA9PSBUeQAlbS8lZC8leQAweCVsbHgAdW5hcnktcG9zdGZpeAB1bmFyeS1wcmVmaXgAVW5yZWNvZ25pemVkIGZlYXR1cmUgcG9saWN5IHByZWZpeABhcnJheV9zZXRfaW5kZXgAYXJyYXlfZ2V0X2luZGV4AF9fYXN5bmNpZnlfZ2V0X2NhbGxfaW5kZXgAX19hc3luY2lmeV9jaGVja19jYWxsX2luZGV4AGluZmx1ZW5jZWRHZXQtPmluZGV4ID09IGNvcHktPmluZGV4AHNldC0+aW5kZXggPT0gZ2V0LT5pbmRleABmbG93LnZhbHVlcy5zaXplKCkgPiBjdXJyLT5pbmRleABpbmZsdWVuY2VkR2V0LT5pbmRleCA9PSB0cml2aWFsLT5pbmRleABleHRyYWN0LWZ1bmN0aW9uLWluZGV4AGludmFsaWQgbWVtb3J5IGluZGV4AGxlYXZlcyBqdXN0IG9uZSBmdW5jdGlvbiBzZWxlY3RlZCBieSBpbmRleABpbnZhbGlkIGVsZW1lbnQgc2VnbWVudCBpbmRleABpbnZhbGlkIGRhdGEgc2VnbWVudCBpbmRleABpbnZhbGlkIGZ1bmN0aW9uIGluZGV4AEV4cGVjdGVkIG51bWVyaWMgZnVuY3Rpb24gaW5kZXgAaW52YWxpZCBsb2NhbCBpbmRleABpbnZhbGlkIGdsb2JhbCBpbmRleABiYWQgc3RyaW5nIGluZGV4AGludmFsaWQgdGFnIGluZGV4AElsbGVnYWwgbGFuZSBpbmRleABpbnZhbGlkIGxhbmUgaW5kZXgAZXhwZWN0ZWQgbGFuZSBpbmRleABleHBlY3RlZCB0dXBsZSBpbmRleABpbnZhbGlkIHRhYmxlIGluZGV4AHVuZXhwZWN0ZWQgaW5kZXgAbmV3UGFyZW50IDw9IGluZGV4AG90aGVyICE9IGluZGV4AGdldE1lbW9yeUluZGV4AGdldE5ld0luZGV4AEJpbmFyeWVuQXJyYXlDb3B5U2V0RGVzdEluZGV4AEJpbmFyeWVuQXJyYXlDb3B5R2V0RGVzdEluZGV4AGdldEVsZW1lbnRTZWdtZW50SW5kZXgAZ2V0RGF0YVNlZ21lbnRJbmRleABzZXRJbmRleCA8IGdldEluZGV4AEJpbmFyeWVuQXJyYXlTZXRTZXRJbmRleABCaW5hcnllblN0cnVjdFNldFNldEluZGV4AEJpbmFyeWVuTG9jYWxTZXRTZXRJbmRleABCaW5hcnllblRhYmxlU2V0U2V0SW5kZXgAQmluYXJ5ZW5BcnJheUdldFNldEluZGV4AEJpbmFyeWVuU3RydWN0R2V0U2V0SW5kZXgAQmluYXJ5ZW5Mb2NhbEdldFNldEluZGV4AEJpbmFyeWVuVGFibGVHZXRTZXRJbmRleABCaW5hcnllblR1cGxlRXh0cmFjdFNldEluZGV4AEJpbmFyeWVuU0lNREV4dHJhY3RTZXRJbmRleABCaW5hcnllblNJTURMb2FkU3RvcmVMYW5lU2V0SW5kZXgAQmluYXJ5ZW5TSU1EUmVwbGFjZVNldEluZGV4AEJpbmFyeWVuQXJyYXlTZXRHZXRJbmRleABCaW5hcnllblN0cnVjdFNldEdldEluZGV4AEJpbmFyeWVuTG9jYWxTZXRHZXRJbmRleABCaW5hcnllblRhYmxlU2V0R2V0SW5kZXgAQmluYXJ5ZW5BcnJheUdldEdldEluZGV4AEJpbmFyeWVuU3RydWN0R2V0R2V0SW5kZXgAQmluYXJ5ZW5Mb2NhbEdldEdldEluZGV4AEJpbmFyeWVuVGFibGVHZXRHZXRJbmRleABCaW5hcnllblR1cGxlRXh0cmFjdEdldEluZGV4AEJpbmFyeWVuU0lNREV4dHJhY3RHZXRJbmRleABCaW5hcnllblNJTURMb2FkU3RvcmVMYW5lR2V0SW5kZXgAQmluYXJ5ZW5TSU1EUmVwbGFjZUdldEluZGV4AG1hcEluZGV4AGdldEZ1bmN0aW9uSW5kZXgAZ2V0TGFiZWxJbmRleABnZXRHbG9iYWxJbmRleABnZXRTdHJpbmdJbmRleABnZXRUYWdJbmRleAB1cGRhdGVJbmRleABnZXRTaWduYXR1cmVJbmRleABnZXRUeXBlSW5kZXgAZ2V0VGFibGVJbmRleABCaW5hcnllbkFycmF5Q29weVNldFNyY0luZGV4AEJpbmFyeWVuQXJyYXlDb3B5R2V0U3JjSW5kZXgAZ2V0RGF0YUluZGV4AGZyZWVJZHgAZjE2eDgucG1heABmMzJ4NC5wbWF4AGY2NHgyLnBtYXgATWF0aF9tYXgAZjMyeDQucmVsYXhlZF9tYXgAZjY0eDIucmVsYXhlZF9tYXgAZjE2eDgubWF4AGYzMng0Lm1heABmNjQubWF4AGY2NHgyLm1heABmMzIubWF4AC0rICAgMFgweAA6MHgALTBYKzBYIDBYLTB4KzB4IDB4ADs7IGNvZGUgb2Zmc2V0OiAweAByZXRocm93AFJldGhyb3cAdmlzaXRUaHJvdwBfX3dhc21fbWVtb3J5X2dyb3cAd2FzbTJqc190YWJsZV9ncm93AG1lbW9yeS5ncm93AHRhYmxlLmdyb3cATWVtb3J5R3JvdwBUYWJsZUdyb3cAcG93AHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBieSBub3cAbW9kZSAhPSBUcmFwTW9kZTo6QWxsb3cAaTY0LnRydW5jVUZsb2F0IG92ZXJmbG93AGkzMi50cnVuY1VGbG9hdCBvdmVyZmxvdwBpNjQudHJ1bmNTRmxvYXQgb3ZlcmZsb3cAaTMyLnRydW5jU0Zsb2F0IG92ZXJmbG93AGk2NC5kaXZfcyBvdmVyZmxvdwBpMzIuZGl2X3Mgb3ZlcmZsb3cAX19uZXh0X3ByaW1lIG92ZXJmbG93AGNhbGxUYWJsZSBvdmVyZmxvdwBMRUIgb3ZlcmZsb3cAc2V0IHZhbHVlcyBjYW5ub3QgYmUgY29udHJvbCBmbG93AEZsb3cAQmluYXJ5ZW5Db25zdFNldFZhbHVlSTY0TG93AEJpbmFyeWVuQ29uc3RHZXRWYWx1ZUk2NExvdwAuYXRvbWljLnJtdwBhcnJheS5uZXcAc3RydWN0Lm5ldwB1bmtub3duIG5ldwBidWZmZXJWaWV3AHZpc2l0QXJyYXlOZXcAQ29udE5ldwB2aXNpdFN0cnVjdE5ldwBtYWtlU3RyaW5nTmV3AFNldEdsb2JhbHMgdXNhZ2U6ICB3YXNtLW9wdCAtLXBhc3MtYXJnPXNldC1nbG9iYWxzQHg9eSx6PXcATm92AGVudgBfX3dhc21faTY0X3VkaXYAX193YXNtX2k2NF9zZGl2AGYxNng4LmRpdgBmMzJ4NC5kaXYAZjY0LmRpdgBmNjR4Mi5kaXYAZjMyLmRpdgBpNjR1LWRpdgBpMzJ1LWRpdgBpNjRzLWRpdgBpMzJzLWRpdgBmcGNhc3QtZW11ACVsbHUAVGh1AGkxNng4Lm1heF91AGk4eDE2Lm1heF91AGkzMng0Lm1heF91AGk2NC5kaXZfdQBpMzIuZGl2X3UAaTE2eDgubHRfdQBpOHgxNi5sdF91AGkzMng0Lmx0X3UAaTY0Lmx0X3UAaTMyLmx0X3UAaTE2eDguZ3RfdQBpOHgxNi5ndF91AGkzMng0Lmd0X3UAaTY0Lmd0X3UAaTMyLmd0X3UAYXJyYXkuZ2V0X3UAc3RydWN0LmdldF91AGkzMS5nZXRfdQBpMTZ4OC5hZGRfc2F0X3UAaTh4MTYuYWRkX3NhdF91AGkxNng4LnN1Yl9zYXRfdQBpOHgxNi5zdWJfc2F0X3UAaTY0LmF0b21pYy5ybXc4Lnhvcl91AGkzMi5hdG9taWMucm13OC54b3JfdQBpNjQuYXRvbWljLnJtdzE2Lnhvcl91AGkzMi5hdG9taWMucm13MTYueG9yX3UAaTY0LmF0b21pYy5ybXczMi54b3JfdQBpNjQuYXRvbWljLnJtdzgub3JfdQBpMzIuYXRvbWljLnJtdzgub3JfdQBpNjQuYXRvbWljLnJtdzE2Lm9yX3UAaTMyLmF0b21pYy5ybXcxNi5vcl91AGk2NC5hdG9taWMucm13MzIub3JfdQBpMTZ4OC5zaHJfdQBpOHgxNi5zaHJfdQBpMzJ4NC5zaHJfdQBpNjQuc2hyX3UAaTY0eDIuc2hyX3UAaTMyLnNocl91AGkxNng4LmF2Z3JfdQBpOHgxNi5hdmdyX3UAaTE2eDgubWluX3UAaTh4MTYubWluX3UAaTMyeDQubWluX3UAaTY0LnJlbV91AGkzMi5yZW1fdQBpNjQuYXRvbWljLnJtdzguY21weGNoZ191AGkzMi5hdG9taWMucm13OC5jbXB4Y2hnX3UAaTY0LmF0b21pYy5ybXcxNi5jbXB4Y2hnX3UAaTMyLmF0b21pYy5ybXcxNi5jbXB4Y2hnX3UAaTY0LmF0b21pYy5ybXczMi5jbXB4Y2hnX3UAaTY0LmF0b21pYy5ybXc4LnhjaGdfdQBpMzIuYXRvbWljLnJtdzgueGNoZ191AGk2NC5hdG9taWMucm13MTYueGNoZ191AGkzMi5hdG9taWMucm13MTYueGNoZ191AGk2NC5hdG9taWMucm13MzIueGNoZ191AGkxNng4LmV4dHJhY3RfbGFuZV91AGk4eDE2LmV4dHJhY3RfbGFuZV91AGkxNng4LmxlX3UAaTh4MTYubGVfdQBpMzJ4NC5sZV91AGk2NC5sZV91AGkzMi5sZV91AGkxNng4LmdlX3UAaTh4MTYuZ2VfdQBpMzJ4NC5nZV91AGk2NC5nZV91AGkzMi5nZV91AGk2NC5hdG9taWMucm13OC5hbmRfdQBpMzIuYXRvbWljLnJtdzguYW5kX3UAaTY0LmF0b21pYy5ybXcxNi5hbmRfdQBpMzIuYXRvbWljLnJtdzE2LmFuZF91AGk2NC5hdG9taWMucm13MzIuYW5kX3UAaTY0LmF0b21pYy5ybXc4LmFkZF91AGkzMi5hdG9taWMucm13OC5hZGRfdQBpNjQuYXRvbWljLnJtdzE2LmFkZF91AGkzMi5hdG9taWMucm13MTYuYWRkX3UAaTY0LmF0b21pYy5ybXczMi5hZGRfdQBpNjQuYXRvbWljLnJtdzguc3ViX3UAaTMyLmF0b21pYy5ybXc4LnN1Yl91AGk2NC5hdG9taWMucm13MTYuc3ViX3UAaTMyLmF0b21pYy5ybXcxNi5zdWJfdQBpNjQuYXRvbWljLnJtdzMyLnN1Yl91AHYxMjgubG9hZDh4OF91AGk4eDE2Lm5hcnJvd19pMTZ4OF91AGkzMng0LmV4dG11bF9sb3dfaTE2eDhfdQBpMzJ4NC5leHRlbmRfbG93X2kxNng4X3UAZjE2eDguY29udmVydF9pMTZ4OF91AGkzMng0LmV4dG11bF9oaWdoX2kxNng4X3UAaTMyeDQuZXh0ZW5kX2hpZ2hfaTE2eDhfdQBpMzJ4NC5leHRhZGRfcGFpcndpc2VfaTE2eDhfdQBpMTZ4OC50cnVuY19zYXRfZjE2eDhfdQBpNjQuYXRvbWljLmxvYWQ4X3UAaTMyLmF0b21pYy5sb2FkOF91AGk2NC5sb2FkOF91AGkzMi5sb2FkOF91AGkxNng4LmV4dG11bF9sb3dfaTh4MTZfdQBpMTZ4OC5leHRlbmRfbG93X2k4eDE2X3UAaTE2eDguZXh0bXVsX2hpZ2hfaTh4MTZfdQBpMTZ4OC5leHRlbmRfaGlnaF9pOHgxNl91AGkxNng4LmV4dGFkZF9wYWlyd2lzZV9pOHgxNl91AGk2NC5hdG9taWMubG9hZDE2X3UAaTMyLmF0b21pYy5sb2FkMTZfdQBpNjQubG9hZDE2X3UAaTMyLmxvYWQxNl91AHYxMjgubG9hZDE2eDRfdQBpMTZ4OC5uYXJyb3dfaTMyeDRfdQBmNjR4Mi5jb252ZXJ0X2xvd19pMzJ4NF91AGk2NHgyLmV4dG11bF9sb3dfaTMyeDRfdQBpNjR4Mi5leHRlbmRfbG93X2kzMng0X3UAZjMyeDQuY29udmVydF9pMzJ4NF91AGk2NHgyLmV4dG11bF9oaWdoX2kzMng0X3UAaTY0eDIuZXh0ZW5kX2hpZ2hfaTMyeDRfdQBpMzJ4NC50cnVuY19zYXRfZjMyeDRfdQBpMzJ4NC5yZWxheGVkX3RydW5jX2YzMng0X3UAZjY0LmNvbnZlcnRfaTY0X3UAZjMyLmNvbnZlcnRfaTY0X3UAaTY0LnRydW5jX3NhdF9mNjRfdQBpMzIudHJ1bmNfc2F0X2Y2NF91AGk2NC50cnVuY19mNjRfdQBpMzIudHJ1bmNfZjY0X3UAdjEyOC5sb2FkMzJ4Ml91AGY2NC5jb252ZXJ0X2kzMl91AGYzMi5jb252ZXJ0X2kzMl91AGk2NC5leHRlbmRfaTMyX3UAaTY0LnRydW5jX3NhdF9mMzJfdQBpMzIudHJ1bmNfc2F0X2YzMl91AGk2NC50cnVuY19mMzJfdQBpMzIudHJ1bmNfZjMyX3UAaTY0LmF0b21pYy5sb2FkMzJfdQBpNjQubG9hZDMyX3UAXHUAbG9hZDh1AGxvYWQxNnUAbG9hZDY0dQBsb2FkMzJ1AHpleHQAc2NyYXRjaCBsb2NhbCByZXF1aXJlZCwgYnV0IHRoZXJlIGlzIG5vIGZ1bmN0aW9uIGNvbnRleHQAdW51c2VkIGV4cHJlc3Npb25zIHdpdGhvdXQgYmxvY2sgY29udGV4dAB1bmZpbmlzaGVkIGJsb2NrIGNvbnRleHQAbWFrZU1vbm9GdW5jdGlvbldpdGhDb250ZXh0AHNpZ24tZXh0AG1ha2VTaWduRXh0AGVycm9yIGluIHZhbGlkYXRpbmcgd2FzbTJqcyBvdXRwdXQAZW1pdCB0aGUgdGFyZ2V0IGZlYXR1cmVzIHNlY3Rpb24gaW4gdGhlIG91dHB1dAB1bmFyaWVzIG11c3Qgbm90IHJlY2VpdmUgYSBub25lIGFzIHRoZWlyIGlucHV0AFNlY3Rpb24gZXh0ZW5kcyBiZXlvbmQgZW5kIG9mIGlucHV0AHVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0AHVuc3VwcG9ydGVkIGxvY2FsZSBmb3Igc3RhbmRhcmQgaW5wdXQAQmluYXJ5ZW5BdG9taWNXYWl0U2V0VGltZW91dABCaW5hcnllbkF0b21pY1dhaXRHZXRUaW1lb3V0AG11dABzdHViT3V0AEF1Z3VzdABnZXRSZXN1bHRPZkZpcnN0AHBvc3QAdG9wbW9zdAB2aXNpdFBvc3QAaTY0X2NvbnN0AHN0cmluZy5jb25zdAB2MTI4LmNvbnN0AGk2NC5jb25zdABmNjQuY29uc3QAaTMyLmNvbnN0AGYzMi5jb25zdABleHRlbmRlZC1jb25zdAB2aXNpdFN0cmluZ0NvbnN0AEJpbmFyeWVuU3RyaW5nQ29uc3QAbWFrZUNvbnN0AGRvRW5kVGhyb3dpbmdJbnN0AG1lbW9yeS5hdG9taWNOb3RpZnkgbWVtb3J5IG11c3QgZXhpc3QAbWVtb3J5Lmdyb3cgbWVtb3J5IG11c3QgZXhpc3QAbWVtb3J5LmluaXQgbWVtb3J5IG11c3QgZXhpc3QAbWVtb3J5LmF0b21pY1dhaXQgbWVtb3J5IG11c3QgZXhpc3QAbWVtb3J5LmZpbGwgbWVtb3J5IG11c3QgZXhpc3QAbWVtb3J5LmF0b21pY0NtcHhjaGcgbWVtb3J5IG11c3QgZXhpc3QAbWVtb3J5LnNpemUgbWVtb3J5IG11c3QgZXhpc3QAbWVtb3J5LnN0b3JlIG1lbW9yeSBtdXN0IGV4aXN0AG1lbW9yeS5TSU1ETG9hZFN0b3JlTGFuZSBtZW1vcnkgbXVzdCBleGlzdABtZW1vcnkubG9hZCBtZW1vcnkgbXVzdCBleGlzdABtZW1vcnkuU0lNRExvYWQgbWVtb3J5IG11c3QgZXhpc3QAbWVtb3J5LmF0b21pY1JNVyBtZW1vcnkgbXVzdCBleGlzdABtZW1vcnkuY29weSBkZXN0TWVtb3J5IG11c3QgZXhpc3QAbWVtb3J5LmNvcHkgc291cmNlTWVtb3J5IG11c3QgZXhpc3QAdGFibGUuaW5pdCBzZWdtZW50IG11c3QgZXhpc3QAYXJyYXkuaW5pdF9lbGVtIHNlZ21lbnQgbXVzdCBleGlzdABhcnJheS5pbml0X2RhdGEgc2VnbWVudCBtdXN0IGV4aXN0AGNhbGwgdGFyZ2V0IG11c3QgZXhpc3QAdGhyb3cncyB0YWcgbXVzdCBleGlzdAB0YWJsZS5ncm93IHRhYmxlIG11c3QgZXhpc3QAdGFibGUuY29weSBkZXN0IHRhYmxlIG11c3QgZXhpc3QAdGFibGUuaW5pdCB0YWJsZSBtdXN0IGV4aXN0AHRhYmxlLnNldCB0YWJsZSBtdXN0IGV4aXN0AHRhYmxlLmdldCB0YWJsZSBtdXN0IGV4aXN0AGNhbGwtaW5kaXJlY3QgdGFibGUgbXVzdCBleGlzdAB0YWJsZS5maWxsIHRhYmxlIG11c3QgZXhpc3QAdGFibGUuc2l6ZSB0YWJsZSBtdXN0IGV4aXN0AHRhYmxlLmNvcHkgc291cmNlIHRhYmxlIG11c3QgZXhpc3QAZnVuY3Rpb24gYXJndW1lbnQgb2YgcmVmLmZ1bmMgbXVzdCBleGlzdAAgZG9lcyBub3QgZXhpc3QAbWVtb3J5LmluaXQgc2VnbWVudCBzaG91bGQgZXhpc3QAZGF0YS5kcm9wIHNlZ21lbnQgc2hvdWxkIGV4aXN0AGFycmF5Lm5ld19lbGVtIHNlZ21lbnQgc2hvdWxkIGV4aXN0AGFycmF5Lm5ld19kYXRhIHNlZ21lbnQgc2hvdWxkIGV4aXN0AGFzeW5jaWZ5LW9ubHlsaXN0AGFzeW5jaWZ5LWJsYWNrbGlzdABhc3luY2lmeS1yZW1vdmVsaXN0AGFzeW5jaWZ5LXdoaXRlbGlzdABhc3luY2lmeS1hZGRsaXN0AGFzeW5jaWZ5LXByb3BhZ2F0ZS1hZGRsaXN0ACBpcyBmb3VuZCBpbiB0aGUgYWRkLWxpc3QgYW5kIGluIHRoZSByZW1vdmUtbGlzdABleHBlY3RlZCBlbGVtZW50IGxpc3QAbmFtZSBsaXN0AGxpbmtDaGlsZExpc3QAY2ZwLXJlZnRlc3QAc3BlY3Rlc3QAcHJvcGFnYXRlIGNvbnN0YW50IHN0cnVjdCBmaWVsZCB2YWx1ZXMsIHVzaW5nIHJlZi50ZXN0AGYxNng4Lm5lYXJlc3QAZjMyeDQubmVhcmVzdABmNjQubmVhcmVzdABmNjR4Mi5uZWFyZXN0AGYzMi5uZWFyZXN0AHRhYmxlLmNvcHkgc291cmNlIG11c3QgaGF2ZSByaWdodCB0eXBlIGZvciBkZXN0AHRhYmxlLmluaXQgc291cmNlIG11c3QgaGF2ZSByaWdodCB0eXBlIGZvciBkZXN0AG9wdGltaXplVXNpbmdSZWZUZXN0AEJpbmFyeWVuTWVtb3J5Q29weVNldERlc3QAQmluYXJ5ZW5NZW1vcnlJbml0U2V0RGVzdABCaW5hcnllbk1lbW9yeUZpbGxTZXREZXN0AEJpbmFyeWVuTWVtb3J5Q29weUdldERlc3QAQmluYXJ5ZW5NZW1vcnlJbml0R2V0RGVzdABCaW5hcnllbk1lbW9yeUZpbGxHZXREZXN0AGRzdABicl9vbl9jYXN0AHN0ZDo6YmFkX2Nhc3QAdmlzaXRSZWZDYXN0AG5vdGVDYXN0AE1hdGhfc3FydABmMTZ4OC5zcXJ0AGYzMng0LnNxcnQAZjY0LnNxcnQAZjY0eDIuc3FydABmMzIuc3FydAAhbXVzdF9leHBvcnQAZXhwZWN0ZWQgZW5kIG9mIGV4cG9ydABkdXBsaWNhdGUgZXhwb3J0AGdldEV4cG9ydABhZGRFeHBvcnQAdGhyZWFkcyBzdXBwb3J0AG1ha2VDYWxsU3VwcG9ydABpbXBvcnQgYWZ0ZXIgbm9uLWltcG9ydABjYWxsIHRvIHVuaWRlbmZpZWQgYXN5bmNpZnkgaW1wb3J0AGV4cGVjdGVkIGVuZCBvZiBpbXBvcnQAc3RyaW5nLWxvd2VyaW5nLW1hZ2ljLWltcG9ydHMtYXNzZXJ0AGluc2VydABsaXZlID09IGN1cnItPmNvbnRlbnRzLnN0YXJ0AHN0cmluZy5mcm9tX2NvZGVfcG9pbnQgc2hvdWxkIG5vdCBoYXZlIHN0YXJ0AEJpbmFyeWVuU3RyaW5nTmV3U2V0U3RhcnQAQmluYXJ5ZW5TdHJpbmdFbmNvZGVTZXRTdGFydABCaW5hcnllblN0cmluZ1NsaWNlV1RGU2V0U3RhcnQAQmluYXJ5ZW5TdHJpbmdOZXdHZXRTdGFydABCaW5hcnllblN0cmluZ0VuY29kZUdldFN0YXJ0AEJpbmFyeWVuU3RyaW5nU2xpY2VXVEZHZXRTdGFydABidWxrLW1lbW9yeS1vcHQAaGFzQnVsa01lbW9yeU9wdABnZXRSb290AGN1cnJSb290AGRlcHRoRnJvbVJvb3QgPD0gb3RoZXJEZXB0aEZyb21Sb290AGFEZXB0aEZyb21Sb290ID49IGJEZXB0aEZyb21Sb290AGx1YkRlcHRoRnJvbVJvb3QgPD0gYkRlcHRoRnJvbVJvb3QAYkRlcHRoRnJvbVJvb3QgPj0gYURlcHRoRnJvbVJvb3QAbHViRGVwdGhGcm9tUm9vdCA8PSBhRGVwdGhGcm9tUm9vdAAhUm9vdAB2MTI4LmFuZG5vdAB2MTI4Lm5vdABkb3QAaW52YWxpZCBwYXJhbSBjb3VudABCaW5hcnllbkF0b21pY05vdGlmeVNldE5vdGlmeUNvdW50AEJpbmFyeWVuQXRvbWljTm90aWZ5R2V0Tm90aWZ5Q291bnQAZnJvbnQAbm9jb250AFRPRE86IGNvbnQAZjY0LXRvLXVpbnQAZjMyLXRvLXVpbnQAcHJpbnQAbm9udHJhcHBpbmctZnB0b2ludABzdHJpbmcuZnJvbV9jb2RlX3BvaW50AGludmFsaWQgY29kZSBwb2ludABmaXJzdFB1c2hhYmxlICE9IEluZGV4KC0xKSAmJiBwdXNoUG9pbnQgIT0gSW5kZXgoLTEpICYmIGZpcnN0UHVzaGFibGUgPCBwdXNoUG9pbnQAZnJvbUNvZGVQb2ludAB3cml0ZVdURjhDb2RlUG9pbnQAd3JpdGVXVEYxNkNvZGVQb2ludAB1bmV4cGVjdGVkIGNvbnN0cmFpbnQAbm9udHJhcHBpbmctZmxvYXQtdG8taW50AGY2NC10by1pbnQAZjMyLXRvLWludABBdG9taWNXYWl0IGV4cGVjdGVkIHR5cGUgbXVzdCBiZSBpbnQAb3BlcmF0b3IgdW5zaWduZWQgaW50AGJhZCBjaGlsZFBhcmVudHMgY29udGVudABwYXJlbnQgPT0gb3RoZXIucGFyZW50AHdvcmsucGFyZW50AGNoaWxkIG5vdCBmb3VuZCBpbiBwYXJlbnQAZ2V0UGFyZW50AGN1cnJQYXJlbnQAaW5zdHJ1bWVudABCaW5hcnllblNldFBhc3NBcmd1bWVudABCaW5hcnllbkdldFBhc3NBcmd1bWVudABzc2EtaWZ5IHZhcmlhYmxlcyBzbyB0aGF0IHRoZXkgaGF2ZSBhIHNpbmdsZSBhc3NpZ25tZW50AGF0b21pYyBhY2Nlc3NlcyBtdXN0IGhhdmUgbmF0dXJhbCBhbGlnbm1lbnQAaW52YWxpZCBhbGlnbm1lbnQAdmFsaWRhdGVBbGlnbm1lbnQAZXhwZWN0ZWQgZW5kIG9mIGVsZW1lbnQgc2VnbWVudABleHBlY3RlZCBvZmZzZXQgZm9yIGFjdGl2ZSBzZWdtZW50AGV4cGVjdGVkIGVuZCBvZiBkYXRhIHNlZ21lbnQAZ2V0RWxlbWVudFNlZ21lbnQAYWRkRWxlbWVudFNlZ21lbnQAQmluYXJ5ZW5NZW1vcnlJbml0U2V0U2VnbWVudABCaW5hcnllbkRhdGFEcm9wU2V0U2VnbWVudABCaW5hcnllbk1lbW9yeUluaXRHZXRTZWdtZW50AEJpbmFyeWVuRGF0YURyb3BHZXRTZWdtZW50AG9wdGltaXplU2VnbWVudAB2aXNpdERhdGFTZWdtZW50AGdldERhdGFTZWdtZW50AGFkZERhdGFTZWdtZW50AHVuaW5pdGlhbGl6ZWQgdGFibGUgZWxlbWVudAB1bnJlYWNoYWJsZSBibG9jayBzaG91bGQgaGF2ZSB1bnJlYWNoYWJsZSBlbGVtZW50AHR1cGxlLmV4dHJhY3QgdHlwZSBkb2VzIG5vdCBtYXRjaCB0aGUgdHlwZSBvZiB0aGUgZXh0cmFjdGVkIGVsZW1lbnQAQ21weGNoZyByZXN1bHQgdHlwZSBtdXN0IG1hdGNoIHJlcGxhY2VtZW50AEJpbmFyeWVuQXRvbWljQ21weGNoZ1NldFJlcGxhY2VtZW50AEJpbmFyeWVuQXRvbWljQ21weGNoZ0dldFJlcGxhY2VtZW50AGFwcGx5T2xkSW50ZXJhY3Rpb25Ub1JlcGxhY2VtZW50AGRlY0luZGVudABpOHgxNi5wb3BjbnQAaTY0LnBvcGNudABpMzIucG9wY250AGludmFsaWQgc3RyaW5nIGNvbnN0YW50AGdsb2JhbCBpbml0IG11c3QgYmUgY29uc3RhbnQAbWVtb3J5IHNlZ21lbnQgb2Zmc2V0IG11c3QgYmUgY29uc3RhbnQAdGFibGUgc2VnbWVudCBvZmZzZXQgbXVzdCBiZSBjb25zdGFudABnZXRDb25zdGFudABvcHRpbWl6ZUV4cHJUb0NvbnN0YW50AHdhc20yanMkZXhwcmVzdWx0AHdhc20yanMkbm9yZXN1bHQAZ2V0QmxvY2tUeXBlRnJvbVJlc3VsdABhbGlnbmZhdWx0AHNlZ2ZhdWx0AGFycmF5Lm5ld19kZWZhdWx0AHN0cnVjdC5uZXdfZGVmYXVsdABzbHQAYnVpbHQAZjE2eDgubHQAZjMyeDQubHQAZjY0Lmx0AGY2NHgyLmx0AGYzMi5sdABleGl0AHZpc2l0AGRvUG9zdFZpc2l0AHN0cmluZ3ZpZXdfd3RmMTYuZ2V0X2NvZGV1bml0AHdhc20yanNfbWVtb3J5X2luaXQAY3Vyci0+aW5pdABvdXQgb2YgYm91bmRzIG1lbW9yeSBhY2Nlc3MgaW4gbWVtb3J5LmluaXQAb3V0IG9mIGJvdW5kcyBzZWdtZW50IGFjY2VzcyBpbiBtZW1vcnkuaW5pdABvdXQgb2YgYm91bmRzIGFycmF5IGFjY2VzcyBpbiBhcnJheS5pbml0AG91dCBvZiBib3VuZHMgc2VnbWVudCBhY2Nlc3MgaW4gdGFibGUuaW5pdABvdXQgb2YgYm91bmRzIHRhYmxlIGFjY2VzcyBpbiB0YWJsZS5pbml0AHZpc2l0TWVtb3J5SW5pdABCaW5hcnllbkFycmF5TmV3U2V0SW5pdABCaW5hcnllbkFycmF5TmV3R2V0SW5pdABUYWJsZUluaXQAX19zdGFja19saW1pdABpbnRlcnByZXRlciByZWN1cnNpb24gbGltaXQAc3RhY2sgbGltaXQAZG9TcGxpdABpbnZhbGlkIFZMUSBkaWdpdABtb25vbW9ycGhpemUtbWluLWJlbmVmaXQAbWVtb3J5LmF0b21pYy53YWl0AHZpc2l0QXRvbWljV2FpdAB3cml0ZSB0aGUgbW9kdWxlIHRvIGJpbmFyeSwgdGhlbiByZWFkIGl0AGxlZnQgJiYgcmlnaHQAQmluYXJ5ZW5CaW5hcnlTZXRSaWdodABCaW5hcnllblN0cmluZ0NvbmNhdFNldFJpZ2h0AEJpbmFyeWVuU3RyaW5nRXFTZXRSaWdodABCaW5hcnllblJlZkVxU2V0UmlnaHQAQmluYXJ5ZW5TSU1EU2h1ZmZsZVNldFJpZ2h0AEJpbmFyeWVuQmluYXJ5R2V0UmlnaHQAQmluYXJ5ZW5TdHJpbmdDb25jYXRHZXRSaWdodABCaW5hcnllblN0cmluZ0VxR2V0UmlnaHQAQmluYXJ5ZW5SZWZFcUdldFJpZ2h0AEJpbmFyeWVuU0lNRFNodWZmbGVHZXRSaWdodABmMTZ4OC5ndABmMzJ4NC5ndABmNjQuZ3QAZjY0eDIuZ3QAZjMyLmd0AHZlYyAmJiBzaGlmdABCaW5hcnllblNJTURTaGlmdFNldFNoaWZ0AEJpbmFyeWVuU0lNRFNoaWZ0R2V0U2hpZnQAU0lNRFNoaWZ0AEJpbmFyeWVuQmluYXJ5U2V0TGVmdABCaW5hcnllblN0cmluZ0NvbmNhdFNldExlZnQAQmluYXJ5ZW5TdHJpbmdFcVNldExlZnQAQmluYXJ5ZW5SZWZFcVNldExlZnQAQmluYXJ5ZW5TSU1EU2h1ZmZsZVNldExlZnQAQmluYXJ5ZW5CaW5hcnlHZXRMZWZ0AEJpbmFyeWVuU3RyaW5nQ29uY2F0R2V0TGVmdABCaW5hcnllblN0cmluZ0VxR2V0TGVmdABCaW5hcnllblJlZkVxR2V0TGVmdABCaW5hcnllblNJTURTaHVmZmxlR2V0TGVmdABEYXRhRmxvdyBkb2VzIG5vdCBzdXBwb3J0IEVIIGluc3RydWN0aW9ucyB5ZXQAUmVSZWxvb3AgZG9lcyBub3Qgc3VwcG9ydCBFSCBpbnN0cnVjdGlvbnMgeWV0AHR3byBkaWZmZXJlbnQgbW9kdWxlcyB5ZXQAbm9uLWNvbnN0YW50IG9mZnNldHMgYXJlbid0IHN1cHBvcnRlZCB5ZXQAdjEyOCBub3QgaW1wbGVtZW50ZWQgeWV0AF9ieXRlX29mZnNldABjdXJyLT5vZmZzZXQgKyA0ID4gY3Vyci0+b2Zmc2V0AHRhYmxlIHNlZ21lbnQgb2Zmc2V0IG11c3QgaGF2ZSBhbiBvZmZzZXQAcGFzc2l2ZSBzZWdtZW50IHNob3VsZCBub3QgaGF2ZSBhbiBvZmZzZXQAdW5leHBlY3RlZCBlbGVtIG9mZnNldABCaW5hcnllbk1lbW9yeUluaXRTZXRPZmZzZXQAQmluYXJ5ZW5BdG9taWNDbXB4Y2hnU2V0T2Zmc2V0AEJpbmFyeWVuU3RvcmVTZXRPZmZzZXQAQmluYXJ5ZW5TSU1ETG9hZFN0b3JlTGFuZVNldE9mZnNldABCaW5hcnllbkxvYWRTZXRPZmZzZXQAQmluYXJ5ZW5TSU1ETG9hZFNldE9mZnNldABCaW5hcnllbkF0b21pY1JNV1NldE9mZnNldABCaW5hcnllbk1lbW9yeUluaXRHZXRPZmZzZXQAQmluYXJ5ZW5BdG9taWNDbXB4Y2hnR2V0T2Zmc2V0AEJpbmFyeWVuU3RvcmVHZXRPZmZzZXQAQmluYXJ5ZW5TSU1ETG9hZFN0b3JlTGFuZUdldE9mZnNldABCaW5hcnllbkxvYWRHZXRPZmZzZXQAQmluYXJ5ZW5TSU1ETG9hZEdldE9mZnNldABCaW5hcnllbkF0b21pY1JNV0dldE9mZnNldAByZXNldABhcnJheS5zZXQAc3RydWN0LnNldABsb2NhbC5zZXQAZ2xvYmFsLnNldAB0YWJsZS5zZXQAcmVpbnRlcnByZXQAX19zZXRfdGVtcF9yZXQAX19nZXRfdGVtcF9yZXQAdmFyIHJldAAgPSByZXQAbGV0AF9fYmluYXJ5ZW5fZGVsZWdhdGVfY2FsbGVyX3RhcmdldABEZWZhdWx0VGFyZ2V0AGdldFRhcmdldABCaW5hcnllblJldGhyb3dTZXRUYXJnZXQAQmluYXJ5ZW5DYWxsSW5kaXJlY3RTZXRUYXJnZXQAQmluYXJ5ZW5DYWxsU2V0VGFyZ2V0AEJpbmFyeWVuQ2FsbFJlZlNldFRhcmdldABCaW5hcnllblJldGhyb3dHZXRUYXJnZXQAQmluYXJ5ZW5DYWxsSW5kaXJlY3RHZXRUYXJnZXQAQmluYXJ5ZW5DYWxsR2V0VGFyZ2V0AEJpbmFyeWVuQ2FsbFJlZkdldFRhcmdldABmaW5kQnJlYWtUYXJnZXQAQmluYXJ5ZW5UcnlTZXREZWxlZ2F0ZVRhcmdldABCaW5hcnllblRyeUdldERlbGVnYXRlVGFyZ2V0AGFycmF5LmdldABzdHJ1Y3QuZ2V0AGxvY2FsLmdldABnbG9iYWwuZ2V0AHRhYmxlLmdldABpZmYtPmlmRmFsc2UgPT0gZ2V0AGJsb2NrLT5hY3Rpb25zW2Jsb2NrSW5kZXhdID09IGdldAAqc2V0SW5mbHVlbmNlcy5iZWdpbigpID09IGdldABleHByZXNzaW9uU3RhY2suYmFjaygpID09IGdldABBcnJheVNldAB2aXNpdFN0cnVjdFNldABjdXJyT25jZUdsb2JhbHNTZXQgPj0gbGFzdE9uY2VHbG9iYWxzU2V0AHZpc2l0TG9jYWxTZXQAZG9WaXNpdExvY2FsU2V0AHZpc2l0R2xvYmFsU2V0AG1ha2VHbG9iYWxTZXQAY2FuTW92ZVNldABUYWJsZVNldABBcnJheUdldAB2aXNpdFN0cnVjdEdldAB2aXNpdExvY2FsR2V0AG9wdGltaXplTG9jYWxHZXQAdmlzaXRHbG9iYWxHZXQAVGFibGVHZXQAdmlzaXRTdHJpbmdXVEYxNkdldABJMzFHZXQAKHN0cnVjdABzdHJ1Y3QubmV3IGhlYXAgdHlwZSBtdXN0IGJlIHN0cnVjdABzdHJ1Y3Quc2V0IHJlZiBtdXN0IGJlIGEgc3RydWN0AHN0cnVjdC5nZXQgcmVmIG11c3QgYmUgYSBzdHJ1Y3QAbW9kaWZ5U3RydWN0AGdldFN0cnVjdABpbnRlcnNlY3QAY29udmVydCB0eXBlIG11c3QgYmUgY29ycmVjdABsb2NhbC5zZXQgdHlwZSBtdXN0IGJlIGNvcnJlY3QAd3JhcCB0eXBlIG11c3QgYmUgY29ycmVjdABpNjQgdW5hcnkgdmFsdWUgdHlwZSBtdXN0IGJlIGNvcnJlY3QAZjY0IHVuYXJ5IHZhbHVlIHR5cGUgbXVzdCBiZSBjb3JyZWN0AGkzMiB1bmFyeSB2YWx1ZSB0eXBlIG11c3QgYmUgY29ycmVjdABmMzIgdW5hcnkgdmFsdWUgdHlwZSBtdXN0IGJlIGNvcnJlY3QAbG9jYWwuc2V0J3MgdmFsdWUgdHlwZSBtdXN0IGJlIGNvcnJlY3QAcHJvbW90ZSB0eXBlIG11c3QgYmUgY29ycmVjdABkZW1vdGUgdHlwZSBtdXN0IGJlIGNvcnJlY3QAZXh0ZW5kIHR5cGUgbXVzdCBiZSBjb3JyZWN0AHRydW5jIHR5cGUgbXVzdCBiZSBjb3JyZWN0AHJlaW50ZXJwcmV0L2k2NCB0eXBlIG11c3QgYmUgY29ycmVjdAByZWludGVycHJldC9mNjQgdHlwZSBtdXN0IGJlIGNvcnJlY3QAcmVpbnRlcnByZXQvaTMyIHR5cGUgbXVzdCBiZSBjb3JyZWN0AHJlaW50ZXJwcmV0L2YzMiB0eXBlIG11c3QgYmUgY29ycmVjdAByZXR1cm5fY2FsbF9pbmRpcmVjdABjYXN0IGZhaWx1cmUgaW4gY2FsbF9pbmRpcmVjdABhc3luY2lmeS1pZ25vcmUtaW5kaXJlY3QAdmlzaXRDYWxsSW5kaXJlY3QAbWFrZUNhbGxJbmRpcmVjdAB2MTI4LmJpdHNlbGVjdABpMTZ4OC5sYW5lc2VsZWN0AGk4eDE2LmxhbmVzZWxlY3QAaTMyeDQubGFuZXNlbGVjdABpNjR4Mi5sYW5lc2VsZWN0AHN0YWNrLmJhY2soKSA9PSBzZWxlY3QAdmlzaXRTZWxlY3QAb3B0aW1pemVTZWxlY3QAb2JqZWN0AE9iamVjdAB0dXBsZS5leHRyYWN0AHZpc2l0VHVwbGVFeHRyYWN0AFNJTURFeHRyYWN0AE1lcmdlcyBpdGFibGUgc3RydWN0dXJlcyBpbnRvIHZ0YWJsZXMgdG8gbWFrZSB0eXBlcyBtb3JlIGNvbXBhY3QAT2N0AHByaW50IGluIHMtZXhwcmVzc2lvbiBmb3JtYXQAcHJpbnQgaW4gZnVsbCBzLWV4cHJlc3Npb24gZm9ybWF0AHByaW50IGluIG1pbmlmaWVkIHMtZXhwcmVzc2lvbiBmb3JtYXQAdjEyOC5sb2FkOF9zcGxhdAB2MTI4LmxvYWQxNl9zcGxhdAB2MTI4LmxvYWQ2NF9zcGxhdAB2MTI4LmxvYWQzMl9zcGxhdABpMTZ4OC5zcGxhdABmMTZ4OC5zcGxhdABpOHgxNi5zcGxhdABpMzJ4NC5zcGxhdABmMzJ4NC5zcGxhdABpNjR4Mi5zcGxhdABmNjR4Mi5zcGxhdABuYW1lcyBpbiBCaW5hcnllbiBJUiBtdXN0IGJlIHVuaXF1ZSAtIElSIGdlbmVyYXRvcnMgbXVzdCBlbnN1cmUgdGhhdABzdHJpbmcuY29uY2F0AFN0cmluZ0NvbmNhdABTYXQAYXJyYXk6OmF0AFx0AEJpbmFyeWVuVHJ5SW5zZXJ0Q2F0Y2hCb2R5QXQAQmluYXJ5ZW5UcnlTZXRDYXRjaEJvZHlBdABCaW5hcnllblRyeUdldENhdGNoQm9keUF0AEJpbmFyeWVuVHJ5UmVtb3ZlQ2F0Y2hCb2R5QXQAaW5zZXJ0QXQAQmluYXJ5ZW5UcnlJbnNlcnRDYXRjaFRhZ0F0AEJpbmFyeWVuVHJ5U2V0Q2F0Y2hUYWdBdABCaW5hcnllblRyeUdldENhdGNoVGFnQXQAQmluYXJ5ZW5UcnlSZW1vdmVDYXRjaFRhZ0F0AHJlbW92ZUF0AEJpbmFyeWVuQXJyYXlOZXdGaXhlZEluc2VydFZhbHVlQXQAQmluYXJ5ZW5BcnJheU5ld0ZpeGVkU2V0VmFsdWVBdABCaW5hcnllbkFycmF5TmV3Rml4ZWRHZXRWYWx1ZUF0AEJpbmFyeWVuQXJyYXlOZXdGaXhlZFJlbW92ZVZhbHVlQXQAQmluYXJ5ZW5Td2l0Y2hJbnNlcnROYW1lQXQAQmluYXJ5ZW5Td2l0Y2hTZXROYW1lQXQAQmluYXJ5ZW5Td2l0Y2hHZXROYW1lQXQAQmluYXJ5ZW5Td2l0Y2hSZW1vdmVOYW1lQXQAY2hhckNvZGVBdABCaW5hcnllblRocm93SW5zZXJ0T3BlcmFuZEF0AEJpbmFyeWVuU3RydWN0TmV3SW5zZXJ0T3BlcmFuZEF0AEJpbmFyeWVuQ2FsbEluZGlyZWN0SW5zZXJ0T3BlcmFuZEF0AEJpbmFyeWVuQ2FsbEluc2VydE9wZXJhbmRBdABCaW5hcnllbkNhbGxSZWZJbnNlcnRPcGVyYW5kQXQAQmluYXJ5ZW5UdXBsZU1ha2VJbnNlcnRPcGVyYW5kQXQAQmluYXJ5ZW5UaHJvd1NldE9wZXJhbmRBdABCaW5hcnllblN0cnVjdE5ld1NldE9wZXJhbmRBdABCaW5hcnllbkNhbGxJbmRpcmVjdFNldE9wZXJhbmRBdABCaW5hcnllbkNhbGxTZXRPcGVyYW5kQXQAQmluYXJ5ZW5DYWxsUmVmU2V0T3BlcmFuZEF0AEJpbmFyeWVuVHVwbGVNYWtlU2V0T3BlcmFuZEF0AEJpbmFyeWVuVGhyb3dHZXRPcGVyYW5kQXQAQmluYXJ5ZW5TdHJ1Y3ROZXdHZXRPcGVyYW5kQXQAQmluYXJ5ZW5DYWxsSW5kaXJlY3RHZXRPcGVyYW5kQXQAQmluYXJ5ZW5DYWxsR2V0T3BlcmFuZEF0AEJpbmFyeWVuQ2FsbFJlZkdldE9wZXJhbmRBdABCaW5hcnllblR1cGxlTWFrZUdldE9wZXJhbmRBdABCaW5hcnllblRocm93UmVtb3ZlT3BlcmFuZEF0AEJpbmFyeWVuU3RydWN0TmV3UmVtb3ZlT3BlcmFuZEF0AEJpbmFyeWVuQ2FsbEluZGlyZWN0UmVtb3ZlT3BlcmFuZEF0AEJpbmFyeWVuQ2FsbFJlbW92ZU9wZXJhbmRBdABCaW5hcnllbkNhbGxSZWZSZW1vdmVPcGVyYW5kQXQAQmluYXJ5ZW5UdXBsZU1ha2VSZW1vdmVPcGVyYW5kQXQAQmluYXJ5ZW5CbG9ja0luc2VydENoaWxkQXQAQmluYXJ5ZW5CbG9ja1NldENoaWxkQXQAQmluYXJ5ZW5CbG9ja0dldENoaWxkQXQAQmluYXJ5ZW5CbG9ja1JlbW92ZUNoaWxkQXQAcmVvcmRlci1nbG9iYWxzLWFsd2F5cwBtb25vbW9ycGhpemUtYWx3YXlzAGludGVyYWN0aW9uID09IFBhcmVudENoaWxkSW50ZXJhY3Rpb246OkZ1bGx5Q29uc3VtZXMgfHwgaW50ZXJhY3Rpb24gPT0gUGFyZW50Q2hpbGRJbnRlcmFjdGlvbjo6Rmxvd3MAbW9kaWZ5TmV3cwBsb2FkX3NlY29uZGFyeV9tb2R1bGVfc3RhdHVzAGdldFByZXZpb3VzAHN0cmluZy5jb25zdHMAIGFscmVhZHkgZXhpc3RzAEFzeW5jaWZ5OiBmYWlsZWQgdG8gcGFyc2UgbGlzdHMAb3B0aW1pemUtY2FzdHMAZWxpbWluYXRlIGFuZCByZXVzZSBjYXN0cwBvcHRpbWl6ZUNhbGxDYXN0cwBqc3BpLWV4cG9ydHMAbWluaWZ5LWltcG9ydHMtYW5kLWV4cG9ydHMAbWluaWZ5LWltcG9ydHMAYXN5bmNpZnktaW1wb3J0cwBqc3BpLWltcG9ydHMAcmVtb3ZlLWltcG9ydHMAYXN5bmNpZnktaWdub3JlLWltcG9ydHMAc3RyaW5nLWxvd2VyaW5nLW1hZ2ljLWltcG9ydHMAbG93ZXJzIHdhc20gc3RyaW5ncyBhbmQgb3BlcmF0aW9ucyB0byBpbXBvcnRzAHJlbW92ZXMgZHVwbGljYXRlIGltcG9ydHMAc2FtZSBhcyBzdHJpbmctbG93ZXJpbmcsIGJ1dCBlbmNvZGVzIHdlbGwtZm9ybWVkIHN0cmluZ3MgYXMgbWFnaWMgaW1wb3J0cwBtYWtlSW1wb3J0cwBhc3luY2lmeS1hc3NlcnRzAGdldENvbnRlbnRzAHNpbXBsaWZ5VG9Db250ZW50cwBmaWx0ZXJFeHByZXNzaW9uQ29udGVudHMAY29udGVudHMgIT0gbmFpdmVDb250ZW50cwB1cGRhdGVDb250ZW50cwB1bmhhbmRsZWQgY2FzZSBvZiBpc1N1YkNvbnRlbnRzAGZpbHRlckRhdGFDb250ZW50cwBtZXJnZXMgYmxvY2tzIHRvIHRoZWlyIHBhcmVudHMAY2FsbEluZGlyZWN0OiBiYWQgIyBvZiBhcmd1bWVudHMAbGltaXQtc2VnbWVudHMAc2VwYXJhdGUtZGF0YS1zZWdtZW50cwByZW1vdmVzIG1lbW9yeSBzZWdtZW50cwBUb28gbWFueSBzZWdtZW50cwBtZW1vcnkuY29weSBsb3dlcmluZyBzaG91bGQgb25seSBiZSBydW4gb24gbW9kdWxlcyB3aXRoIG5vIHBhc3NpdmUgc2VnbWVudHMAY3JlYXRlU3BsaXRTZWdtZW50cwBpbml0QWN0aXZlU2VnbWVudHMAaXRlclRhYmxlU2VnbWVudHMAcmVhZERhdGFTZWdtZW50cwBpbXBsZW1lbnRzAHJlbW92ZS11bnVzZWQtbm9uZnVuY3Rpb24tbW9kdWxlLWVsZW1lbnRzAHJlbW92ZS11bnVzZWQtbW9kdWxlLWVsZW1lbnRzAHR1cGxlcyBtdXN0IGhhdmUgYXQgbGVhc3QgdHdvIGVsZW1lbnRzAGV4cGVjdGVkIHRhYmxlIGxpbWl0cyBvciBpbmxpbmUgZWxlbWVudHMAaW1wb3J0ZWQgdGFibGVzIGNhbm5vdCBoYXZlIGlubGluZSBlbGVtZW50cwByZW1vdmVzIHVudXNlZCBtb2R1bGUgZWxlbWVudHMAc3RhcnRfaXQuaW5kZXggPD0gZW5kX2l0LmluZGV4ICYmIGVuZF9pdC5pbmRleCA8PSB1c2VkRWxlbWVudHMAaW5kZXggPCB1c2VkRWxlbWVudHMAY3JlYXRlUmVwbGFjZW1lbnRzAG9wdGltaXplLWFkZGVkLWNvbnN0YW50cwBtaXNjZWxsYW5lb3VzIGdsb2JhbHMtcmVsYXRlZCBvcHRpbWl6YXRpb25zLCBhbmQgb3B0aW1pemVzIHdoZXJlIHdlIHJlcGxhY2VkIGdsb2JhbC5nZXRzIHdpdGggY29uc3RhbnRzAG9wdGltaXplQWRkZWRDb25zdGFudHMARXhwb3J0ZWQgZnVuY3Rpb24gbXVzdCBub3QgaGF2ZSBpNjQgcmVzdWx0cwBJbXBvcnRlZCBmdW5jdGlvbiBtdXN0IG5vdCBoYXZlIGk2NCByZXN1bHRzAEJpbmFyeWVuQ2FsbEluZGlyZWN0R2V0UmVzdWx0cwBCaW5hcnllblNpZ25hdHVyZVR5cGVHZXRSZXN1bHRzAF9fc2V0X3N0YWNrX2xpbWl0cwBhdHRlbXB0IHRvIG1lcmdlIHNlZ21lbnRzIHRvIGZpdCB3aXRoaW4gd2ViIGxpbWl0cwBfX3dhc21fZmV0Y2hfaGlnaF9iaXRzAHdhc20yanNfZ2V0X3N0YXNoZWRfYml0cwBUb28gbWFueSBsb2NhdGlvbnMgZm9yIDMyIGJpdHMAZ2V0TWF4Qml0cwBnZXRaZXJvRXh0Qml0cwBnZXRTaWduRXh0Qml0cwBvcHRpbWl6ZXMgYWRkZWQgY29uc3RhbnRzIGludG8gbG9hZC9zdG9yZSBvZmZzZXRzAHJlbW92ZSByZWR1bmRhbnQgbG9jYWwuc2V0cwB0ZWVzIGFyZSBub3QgYWxsb3dlZCwgb25seSBzZXRzAGF2b2lkLXJlaW50ZXJwcmV0cwBnZXRUYXJnZXRzAG5vbi1udWxsYWJsZSBsb2NhbCdzIHNldHMgbXVzdCBkb21pbmF0ZSBnZXRzAHJlbW92ZXMgbG9jYWwudGVlcywgcmVwbGFjaW5nIHRoZW0gd2l0aCBzZXRzIGFuZCBnZXRzAGdldFNldHMAY29tcHV0ZUdldFNldHMAY2FsbC53aXRob3V0LmVmZmVjdHMAZ2VuZXJhdGUtZ2xvYmFsLWVmZmVjdHMAZGlzY2FyZC1nbG9iYWwtZWZmZWN0cwBoYW5kbGVBZnRlckVmZmVjdHMAY2FsY3VsYXRlRml0bmVzcwBmbG93TGl2ZW5lc3MAcHJvY2VzcwBiYWRfdmFyaWFudF9hY2Nlc3MAYmFkX29wdGlvbmFsX2FjY2VzcwBvdXQgb2YgYm91bmRzIHRhYmxlIGFjY2VzcwBwYXNzAGNsYXNzAHF1ZXJ5Q2xhc3MgJiYgdG8tPl9pZCA9PSAqcXVlcnlDbGFzcwByZWdpc3RlclRlc3RQYXNzAHJlZ2lzdGVyUGFzcwBydW5QYXNzAFRyYXBNb2RlUGFzcwBzcGlsbC1wb2ludGVycwBFeHBvcnRlZCBmdW5jdGlvbiBtdXN0IG5vdCBoYXZlIGk2NCBwYXJhbWV0ZXJzAEltcG9ydGVkIGZ1bmN0aW9uIG11c3Qgbm90IGhhdmUgaTY0IHBhcmFtZXRlcnMAcmVtb3ZlUGFyYW1ldGVycwBsZWdhbGl6ZS1qcy1pbnRlcmZhY2UtZXhwb3J0ZWQtaGVscGVycwBhdG9taWMgc3RvcmVzIG11c3QgYmUgb2YgaW50ZWdlcnMAYXRvbWljIGxvYWRzIG11c3QgYmUgb2YgaW50ZWdlcnMAaWdub3JlQ29udHJvbEZsb3dUcmFuc2ZlcnMAc3RyaXAtcHJvZHVjZXJzAHJlbW92ZS11bnVzZWQtYnJzAG1pbmltaXplLXJlYy1ncm91cHMAU3BsaXQgdHlwZXMgaW50byBtaW5pbWFsIHJlY3Vyc2lvbiBncm91cHMAY2F0Y2hfYWxsJ3MgYm9keSBzaG91bGQgbm90IGhhdmUgcG9wcwApIGRvZXNuJ3QgaGF2ZSBhbnkgcGFyYW1zLCBidXQgdGhlcmUgYXJlIHBvcHMAcmVtb3ZlcyBpbXBvcnRzIGFuZCByZXBsYWNlcyB0aGVtIHdpdGggbm9wcwBoYW5kbGVkUG9wcyA9PSB0b3RhbFBvcHMAcmVtb3ZlLW5vbi1qcy1vcHMAcmVtb3ZlcyB1bm5lY2Vzc2FyeSBzdWJ0eXBpbmcgcmVsYXRpb25zaGlwcwBfX3N0YXJ0X2VtX2xpYl9kZXBzAF9fc3RvcF9lbV9saWJfZGVwcwB1cGRhdGVNYXBzAHBhY2tzIG1lbW9yeSBpbnRvIHNlcGFyYXRlIHNlZ21lbnRzLCBza2lwcGluZyB6ZXJvcwBtYWtlWmVyb3MAQmluYXJ5ZW5TdHJpbmdXVEYxNkdldFNldFBvcwBCaW5hcnllblN0cmluZ1dURjE2R2V0R2V0UG9zAGZ1bmN0aW9uIGJvZHkgdHlwZSBtdXN0IG1hdGNoLCBpZiBmdW5jdGlvbiByZXR1cm5zAHJlZmluZVBhcnRpdGlvbnMAcGFyc2VEZWZpbml0aW9ucwBvcHRpbWl6ZS1pbnN0cnVjdGlvbnMAZXhwZWN0ZWQgJ3RoZW4nIGJlZm9yZSBpZiBpbnN0cnVjdGlvbnMAc3RyaXAgRUggaW5zdHJ1Y3Rpb25zAHJlb3JkZXItZnVuY3Rpb25zAG1lcmdlLXNpbWlsYXItZnVuY3Rpb25zAHJlbW92ZXMgdW51c2VkIG1vZHVsZSBlbGVtZW50cyB0aGF0IGFyZSBub3QgZnVuY3Rpb25zAGNyZWF0ZXMgc3BlY2lhbGl6ZWQgdmVyc2lvbnMgb2YgZnVuY3Rpb25zAHJlbW92ZXMgZHVwbGljYXRlIGZ1bmN0aW9ucwBjb3B5QmV0d2VlbkZ1bmN0aW9ucwByZW5hbWVGdW5jdGlvbnMAaGFzRFdBUkZTZWN0aW9ucwBjcmVhdGUgbmV3IG5vbWluYWwgdHlwZXMgdG8gaGVscCBvdGhlciBvcHRpbWl6YXRpb25zAG1pc2NlbGxhbmVvdXMgbG9jYWxzLXJlbGF0ZWQgb3B0aW1pemF0aW9ucwBtaXNjZWxsYW5lb3VzIGdsb2JhbHMtcmVsYXRlZCBvcHRpbWl6YXRpb25zAHR5cGVkLWNvbnRpbnVhdGlvbnMAc3R1YiBvdXQgdW5zdXBwb3J0ZWQgSlMgb3BlcmF0aW9ucwBvcHRpbWl6ZXMgaW5zdHJ1Y3Rpb24gY29tYmluYXRpb25zACFsb2NhdGlvbnMAZ2V0TG9jYXRpb25zAGNvbXB1dGVzIGNvbXBpbGUtdGltZSBldmFsdWF0YWJsZSBleHByZXNzaW9ucwBwaWNrLWxvYWQtc2lnbnMAbmVlZFBhcmVucwBleHBlY3RlZCBlbmQgb2YgaW5saW5lIGVsZW1zAG1heC1mdW5jLXBhcmFtcwApJ3MgcG9wIGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSB0eXBlIGFzIHRoZSB0YWcncyBwYXJhbXMAc3RhcnQgbXVzdCBoYXZlIDAgcGFyYW1zAEJpbmFyeWVuQ2FsbEluZGlyZWN0R2V0UGFyYW1zAEJpbmFyeWVuU2lnbmF0dXJlVHlwZUdldFBhcmFtcwBuZXdUb09sZFtpXSA8IG51bVBhcmFtcwBkZXJpdmVQYXJhbXMAZ2VuZXJhdGUtZHluY2FsbHMAZ2VuZXJhdGUtaTY0LWR5bmNhbGxzAHRyYWNlLWNhbGxzAGluc3RydW1lbnQgdGhlIGJ1aWxkIHdpdGggY29kZSB0byBpbnRlcmNlcHQgc3BlY2lmaWMgZnVuY3Rpb24gY2FsbHMAb3B0aW1pemVFeHByZXNzaW9uVGFpbHMAb3B0aW1pemVUZXJtaW5hdGluZ1RhaWxzAGVxdWFscwBUT0RPOiBleHRlcm4gbGl0ZXJhbHMAVE9ETzogc3RyaW5nIGxpdGVyYWxzAExpdGVyYWxzAGxlZ2FsaXplLWpzLWludGVyZmFjZS1leHBvcnQtb3JpZ2luYWxzAHNpbXBsaWZ5LWxvY2FscwBpbnN0cnVtZW50LWxvY2FscwByZW9yZGVyLWxvY2FscwBtZXJnZS1sb2NhbHMAY29hbGVzY2UtbG9jYWxzAHJlcGxhY2UgR0MgYWxsb2NhdGlvbnMgd2l0aCBsb2NhbHMAY29tcHV0ZXMgY29tcGlsZS10aW1lIGV2YWx1YXRhYmxlIGV4cHJlc3Npb25zIGFuZCBwcm9wYWdhdGVzIHRoZW0gdGhyb3VnaCBsb2NhbHMAdW5hZGRyZXNzYWJsZSBudW1iZXIgb2YgbG9jYWxzAGNhbkhhbmRsZUFzTG9jYWxzAG1heEluZGV4IDw9IHBhcmVudC0+bnVtTG9jYWxzAGN1cnJWYWx1ZXMuc2l6ZSgpID09IG51bUxvY2FscwBpbmRpY2VzLnNpemUoKSA9PSBudW1Mb2NhbHMAaGFuZGxlTm9uRGVmYXVsdGFibGVMb2NhbHMAc2ltcGxpZnktZ2xvYmFscwBzZXQtZ2xvYmFscwByZW9yZGVyLWdsb2JhbHMAbXV0YWJsZS1nbG9iYWxzAGdsb2JhbCBpbml0aWFsaXplciBzaG91bGQgb25seSByZWZlciB0byBwcmV2aW91cyBnbG9iYWxzAGdhdGhlcnMgd2FzbSBzdHJpbmdzIHRvIGdsb2JhbHMAcmVmaW5lIHRoZSB0eXBlcyBvZiBnbG9iYWxzAFRPRE86IGltcG9ydGVkIGk2NCBnbG9iYWxzAGxvd2VyVHVwbGVHbG9iYWxzAGFkZEdsb2JhbHMAbWVyZ2UtYmxvY2tzAHBvcCBpbnN0cnVjdGlvbnMgbWF5IG9ubHkgYXBwZWFyIGF0IHRoZSBiZWdpbm5pbmcgb2YgY2F0Y2ggYmxvY2tzAGNvbW1vbiBzdWJleHByZXNzaW9uIGVsaW1pbmF0aW9uIGluc2lkZSBiYXNpYyBibG9ja3MAU2tpcEVtcHR5QmxvY2tzAHByZXBhcmVGbG93QmxvY2tzAE1lcmdlQ29uc2VjdXRpdmVCbG9ja3MAbXVsdGktbWVtb3J5LWxvd2VyaW5nLXdpdGgtYm91bmRzLWNoZWNrcwBfX3N0YXJ0X2VtX2pzAF9fc3RvcF9lbV9qcwB0YWlsIGNhbGxzIG5vdCB5ZXQgc3VwcG9ydGVkIGluIHdhc20yanMAb3B0aW1pemUtZm9yLWpzAHRyYXAtbW9kZS1qcwBzdHViLXVuc3VwcG9ydGVkLWpzAGVhcmx5IG9wdGltaXplIG9mIHRoZSBpbnN0cnVjdGlvbiBjb21iaW5hdGlvbnMgZm9yIGpzAHJlbW92ZXMgb3BlcmF0aW9ucyBpbmNvbXBhdGlibGUgd2l0aCBqcwBjb21wdXRlR2V0c0FuZFBoaXMAZnVuY3Rpb24gYW5kIGNvZGUgc2VjdGlvbnMgaGF2ZSBpbmNvbnNpc3RlbnQgbGVuZ3RocwB1bmV4cGVjdGVkIHJlc2VydmVkIHZhbHVlIGluIHN0cmluZ3MAc2FtZSBhcyBzdHJpbmctbG93ZXJpbmctbWFnaWMtaW1wb3J0cywgYnV0IHJhaXNlIGEgZmF0YWwgZXJyb3IgaWYgdGhlcmUgYXJlIGludmFsaWQgc3RyaW5ncwB3cml0ZVN0cmluZ3MAbWFwcGluZ3MAQmluYXJ5ZW5UcnlHZXROdW1DYXRjaFRhZ3MAaW5saW5lZFVzZXNbaW5saW5lZE5hbWVdIDw9IGluZm9zW2lubGluZWROYW1lXS5yZWZzAHBhcnNlRGVmcwBicklmcyA+PSBkcm9wcGVkQnJJZnMAY29udHJvbCBmbG93IHN0cnVjdHVyZXMgbXVzdCBub3QgZmxvdyB2YWx1ZXMAZnVuY3Rpb24gYm9kaWVzIG11c3Qgbm90IGZsb3cgdmFsdWVzAGdsb2JhbGx5IG9wdGltaXplIHN0cnVjdCB2YWx1ZXMAcHJvcGFnYXRlIGNvbnN0YW50IHN0cnVjdCBmaWVsZCB2YWx1ZXMAc2V0cyBzcGVjaWZpZWQgZ2xvYmFscyB0byBzcGVjaWZpZWQgdmFsdWVzAGZsb3dWYWx1ZXMAYXBwbHlDb25zdGFudFZhbHVlcwBCaW5hcnllbkFycmF5TmV3Rml4ZWRHZXROdW1WYWx1ZXMAIUludG8tPlN3aXRjaFZhbHVlcwAhTmV4dE5leHRCcmFuY2gtPkNvbmRpdGlvbiAmJiAhTmV4dE5leHRCcmFuY2gtPlN3aXRjaFZhbHVlcwAhQ3VyckJyYW5jaC0+U3dpdGNoVmFsdWVzACFQYXJlbnRCbG9jay0+QnJhbmNoZXNPdXQuYmVnaW4oKS0+c2Vjb25kLT5Td2l0Y2hWYWx1ZXMAY3Vyci0+YWxpZ24gPT0gMCB8fCBjdXJyLT5hbGlnbiA9PSBjdXJyLT5ieXRlcwB1bmV4cGVjdGVkIGJ5dGVzAGV4cGVjdGVkIGk2NCBvcGVyYXRpb24gdG8gdG91Y2ggMSwgMiwgNCwgb3IgOCBieXRlcwBleHBlY3RlZCBmNjQgb3BlcmF0aW9uIHRvIHRvdWNoIDggYnl0ZXMAZXhwZWN0ZWQgdjEyOCBvcGVyYXRpb24gdG8gdG91Y2ggMTYgYnl0ZXMAZXhwZWN0ZWQgZjMyIG9wZXJhdGlvbiB0byB0b3VjaCAyIG9yIDQgYnl0ZXMAZXhwZWN0ZWQgaTMyIG9wZXJhdGlvbiB0byB0b3VjaCAxLCAyLCBvciA0IGJ5dGVzAEJpbmFyeWVuQXRvbWljQ21weGNoZ1NldEJ5dGVzAEJpbmFyeWVuU3RvcmVTZXRCeXRlcwBCaW5hcnllbkxvYWRTZXRCeXRlcwBCaW5hcnllbkF0b21pY1JNV1NldEJ5dGVzAEJpbmFyeWVuQXRvbWljQ21weGNoZ0dldEJ5dGVzAEJpbmFyeWVuU3RvcmVHZXRCeXRlcwBCaW5hcnllbkxvYWRHZXRCeXRlcwBCaW5hcnllbkF0b21pY1JNV0dldEJ5dGVzAHNpemVGaWVsZFNpemUgPCBNYXhMRUIzMkJ5dGVzAGFwcGVuZFRvT2JqZWN0V2l0aFF1b3RlcwByZW1vdmVVbm5lZWRlZFdyaXRlcwBpbnZhbGlkYXRlcwBmb2xkIGNvZGUsIG1lcmdpbmcgZHVwbGljYXRlcwBwaWNrIGxvYWQgc2lnbnMgYmFzZWQgb24gdGhlaXIgdXNlcwBvcGVyYXRpb24gc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGluIHByZXZpb3VzIHBhc3NlcwBuZXN0ZWQgcGFzc2VzAGFkZFNldFVzZXMAZ2V0TnVtVXNlcwAhcHJpbnRlci5wcmludGVkSGFzRXh0ZXJuYWxVc2VzAHRhcmdldF9mZWF0dXJlcwBwcmludC1mZWF0dXJlcwBlbWl0LXRhcmdldC1mZWF0dXJlcwBzdHJpcC10YXJnZXQtZmVhdHVyZXMAcmVmLm51bGwgcmVxdWlyZXMgYWRkaXRpb25hbCBmZWF0dXJlcwBlbGVtZW50IHNlZ21lbnQgdHlwZSByZXF1aXJlcyBhZGRpdGlvbmFsIGZlYXR1cmVzAHRhYmxlIHR5cGUgcmVxdWlyZXMgYWRkaXRpb25hbCBmZWF0dXJlcwBwcmludCBvcHRpb25zIGZvciBlbmFibGVkIGZlYXR1cmVzAGluc3RydW1lbnQgdGhlIGJ1aWxkIHdpdGggY29kZSB0byBpbnRlcmNlcHQgYWxsIGxvYWRzIGFuZCBzdG9yZXMAb3B0aW1pemUgaGVhcCAoR0MpIHN0b3JlcwAgc3VwZXJ0eXBlcwBuYW1lLXR5cGVzAC0tZW5hYmxlLWdjIHJlcXVpcmVzIC0tZW5hYmxlLXJlZmVyZW5jZS10eXBlcwByZW1vdmUtdW51c2VkLXR5cGVzAEF0b21pYyBvcGVyYXRpb25zIGFyZSBvbmx5IHZhbGlkIG9uIGludCB0eXBlcwBhcnJheS5jb3B5IG11c3QgaGF2ZSB0aGUgcHJvcGVyIHR5cGVzAChyZSluYW1lIGFsbCBoZWFwIHR5cGVzAGNvbnQgdHlwZXMgbXVzdCBiZSBidWlsdCBmcm9tIGZ1bmN0aW9uIHR5cGVzAGV4cGVjdGVkIGNvbnRpbnVhdGlvbiB0eXBlcwBpbnZhbGlkIGZ1bmN0aW9uIHNlY3Rpb24gc2l6ZSwgbXVzdCBlcXVhbCB0eXBlcwBsb29wIHdpdGggdmFsdWUgYW5kIGJvZHkgbXVzdCBtYXRjaCB0eXBlcwBibG9jayB3aXRoIHZhbHVlIGFuZCBsYXN0IGVsZW1lbnQgd2l0aCB2YWx1ZSBtdXN0IG1hdGNoIHR5cGVzAFZhbHVlcyBpbiBhIHRhZyBzaG91bGQgaGF2ZSBjb25jcmV0ZSB0eXBlcwBhcm1zIG9mIHVucmVhY2hhYmxlIGlmLWVsc2UgbXVzdCBoYXZlIGNvbXBhdGlibGUgdHlwZXMAVE9ETzogZ2VuZXJhbCByZWZlcmVuY2UgdHlwZXMAZ2xvYmFsbHkgb3B0aW1pemUgR0MgdHlwZXMAcmVtb3ZlIHVudXNlZCBwcml2YXRlIEdDIHR5cGVzAHJlZmluZSBhbmQgbWVyZ2UgYWJzdHJhY3QgKG5ldmVyLWNyZWF0ZWQpIHR5cGVzAHJld3JpdGVUeXBlcwBnZXRJZ25vcmFibGVQdWJsaWNUeXBlcwBpdGVyU3ViVHlwZXMAZ2V0SW1tZWRpYXRlU3ViVHlwZXMAZXNjYXBlcwBpbnN0cnVtZW50IHRoZSBidWlsZCB3aXRoIGxvZ2dpbmcgb2Ygd2hlcmUgZXhlY3V0aW9uIGdvZXMAdHVybnMgaW5kaXJlY3QgY2FsbHMgaW50byBkaXJlY3Qgb25lcwBsb3dlciB1bmFsaWduZWQgbG9hZHMgYW5kIHN0b3JlcyB0byBzbWFsbGVyIGFsaWduZWQgb25lcwBtaW5pZmllcyBib3RoIGltcG9ydCBhbmQgZXhwb3J0IG5hbWVzLCBhbmQgZW1pdHMgYSBtYXBwaW5nIHRvIHRoZSBtaW5pZmllZCBvbmVzAG1pbmlmaWVzIGltcG9ydCBuYW1lcyAob25seSB0aG9zZSwgYW5kIG5vdCBleHBvcnQgbmFtZXMpLCBhbmQgZW1pdHMgYSBtYXBwaW5nIHRvIHRoZSBtaW5pZmllZCBvbmVzAGdldExhbmVzAENhbm5vdCBnZXQgb2Zmc2V0IG9mIHBhc3NpdmUgc2VnbWVudCBpbml0aWFsaXplZCBtdWx0aXBsZSB0aW1lcwByZW1vdmUtdW51c2VkLW5hbWVzAHByaW50IGEgbWFwIG9mIGZ1bmN0aW9uIGluZGV4ZXMgdG8gbmFtZXMAQmluYXJ5ZW5Td2l0Y2hHZXROdW1OYW1lcwB3cml0ZU5hbWVzAGZpbmRBbmRSZWFkTmFtZXMAbWluaWZ5LWltcG9ydHMtYW5kLWV4cG9ydHMtYW5kLW1vZHVsZXMASGFuZGxlRm9sbG93dXBNdWx0aXBsZXMAbWVyZ2UtajJjbC1pdGFibGVzAE5vbi1udWxsYWJsZSByZWZlcmVuY2UgdHlwZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGZvciB0YWJsZXMAb3B0aW1pemVDb3BpZXMAQmluYXJ5ZW5UcnlHZXROdW1DYXRjaEJvZGllcwBmaXh1cCBuZXN0ZWQgcG9wcyB3aXRoaW4gY2F0Y2hlcwBzc2EtaWZ5IHZhcmlhYmxlcyBzbyB0aGF0IHRoZXkgaGF2ZSBhIHNpbmdsZSBhc3NpZ25tZW50LCBpZ25vcmluZyBtZXJnZXMAY2FsY3VsYXRlUmFuZ2VzAG5ld1BhZ2VzAG9sZFBhZ2VzAHByb3BhZ2F0ZSBkZWJ1ZyBsb2NhdGlvbiBmcm9tIHBhcmVudHMgb3IgcHJldmlvdXMgc2libGluZ3MgdG8gY2hpbGQgbm9kZXMAc291cmNlcwBnZXRJbmZsdWVuY2VzAGdldFNldEluZmx1ZW5jZXMAY29tcHV0ZVNldEluZmx1ZW5jZXMAZ2V0R2V0SW5mbHVlbmNlcwBjYWxjdWxhdGVJbnRlcmZlcmVuY2VzAEdVRkEgcGx1cyBhZGQgY2FzdHMgZm9yIGFsbCBpbmZlcmVuY2VzAGFwcGx5SW5kaWNlcwBmdW5jdGlvbiBvdmVyZmxvd2VkIGl0cyBib3VuZHMAbWVtb3J5IGluZGV4IG91dCBvZiBib3VuZHMAc3RydWN0IGluZGV4IG91dCBvZiBib3VuZHMAdHVwbGUuZXh0cmFjdCBpbmRleCBvdXQgb2YgYm91bmRzAGZ1bmN0aW9uIGluZGV4IG91dCBvZiBib3VuZHMAZWxlbSBpbmRleCBvdXQgb2YgYm91bmRzAGxhYmVsIGluZGV4IG91dCBvZiBib3VuZHMAbG9jYWwgaW5kZXggb3V0IG9mIGJvdW5kcwBnbG9iYWwgaW5kZXggb3V0IG9mIGJvdW5kcwB0YWcgaW5kZXggb3V0IG9mIGJvdW5kcwB0eXBlIGluZGV4IG91dCBvZiBib3VuZHMAdHVwbGUgaW5kZXggb3V0IG9mIGJvdW5kcwB0YWJsZSBpbmRleCBvdXQgb2YgYm91bmRzAGRhdGEgaW5kZXggb3V0IG9mIGJvdW5kcwBhcHBseSB0aGUgYXNzdW1wdGlvbiB0aGF0IGFzeW5jaWZ5IG5ldmVyIHVud2luZHMAZXh0ZW5kcwBUeXBlIG9mIHR1cGxlLm1ha2UgZG9lcyBub3QgbWF0Y2ggdHlwZXMgb2YgaXRzIG9wZXJhbmRzAHN0cnVjdC5uZXcgbXVzdCBoYXZlIHRoZSByaWdodCBudW1iZXIgb2Ygb3BlcmFuZHMAdHVwbGUubWFrZSBtdXN0IGhhdmUgbXVsdGlwbGUgb3BlcmFuZHMAQmluYXJ5ZW5UaHJvd0dldE51bU9wZXJhbmRzAEJpbmFyeWVuU3RydWN0TmV3R2V0TnVtT3BlcmFuZHMAQmluYXJ5ZW5DYWxsSW5kaXJlY3RHZXROdW1PcGVyYW5kcwBCaW5hcnllbkNhbGxHZXROdW1PcGVyYW5kcwBCaW5hcnllbkNhbGxSZWZHZXROdW1PcGVyYW5kcwBCaW5hcnllblR1cGxlTWFrZUdldE51bU9wZXJhbmRzAEJpbmFyeWVuU3RydWN0VHlwZUdldE51bUZpZWxkcwBUcmllcyB0byBhdm9pZCByZWludGVycHJldCBvcGVyYXRpb25zIHZpYSBtb3JlIGxvYWRzAHRocmVhZHMAZmlsdGVyUGFja2VkRGF0YVJlYWRzAHByb3BhZ2F0ZS1kZWJ1Zy1sb2NzAHJlcGxhY2UgdHJhcHBpbmcgb3BlcmF0aW9ucyB3aXRoIGpzIHNlbWFudGljcwByZXBsYWNlIHRyYXBwaW5nIG9wZXJhdGlvbnMgd2l0aCBjbGFtcGluZyBzZW1hbnRpY3MAYmluYXJ5ZW4taW50cmluc2ljcwBsb3dlciBhd2F5IGJpbmFyeWVuIGludHJpbnNpY3MAZnVuYy1tZXRyaWNzAHJlcG9ydHMgZnVuY3Rpb24gbWV0cmljcwBNZXRyaWNzAGF0b21pY3MAQXRvbWljcwBNYXRoX2FicwBpMTZ4OC5hYnMAZjE2eDguYWJzAGk4eDE2LmFicwBpMzJ4NC5hYnMAZjMyeDQuYWJzAGY2NC5hYnMAaTY0eDIuYWJzAGY2NHgyLmFicwBmMzIuYWJzAGkxNng4Lm1heF9zAGk4eDE2Lm1heF9zAGkzMng0Lm1heF9zAGk2NC5kaXZfcwBpMzIuZGl2X3MAaTE2eDgubHRfcwBpOHgxNi5sdF9zAGkzMng0Lmx0X3MAaTY0Lmx0X3MAaTY0eDIubHRfcwBpMzIubHRfcwBpMTZ4OC5ndF9zAGk4eDE2Lmd0X3MAaTMyeDQuZ3RfcwBpNjQuZ3RfcwBpNjR4Mi5ndF9zAGkzMi5ndF9zAGFycmF5LmdldF9zAHN0cnVjdC5nZXRfcwBpMzEuZ2V0X3MAaTE2eDgucTE1bXVscl9zYXRfcwBpMTZ4OC5hZGRfc2F0X3MAaTh4MTYuYWRkX3NhdF9zAGkxNng4LnN1Yl9zYXRfcwBpOHgxNi5zdWJfc2F0X3MAaTE2eDgucmVsYXhlZF9xMTVtdWxyX3MAaTE2eDguc2hyX3MAaTh4MTYuc2hyX3MAaTMyeDQuc2hyX3MAaTY0LnNocl9zAGk2NHgyLnNocl9zAGkzMi5zaHJfcwBpMTZ4OC5taW5fcwBpOHgxNi5taW5fcwBpMzJ4NC5taW5fcwBpNjQucmVtX3MAaTMyLnJlbV9zAGkxNng4LmV4dHJhY3RfbGFuZV9zAGk4eDE2LmV4dHJhY3RfbGFuZV9zAGkxNng4LmxlX3MAaTh4MTYubGVfcwBpMzJ4NC5sZV9zAGk2NC5sZV9zAGk2NHgyLmxlX3MAaTMyLmxlX3MAaTE2eDguZ2VfcwBpOHgxNi5nZV9zAGkzMng0LmdlX3MAaTY0LmdlX3MAaTY0eDIuZ2VfcwBpMzIuZ2VfcwBpMzJ4NC5kb3RfaTh4MTZfaTd4MTZfYWRkX3MAdjEyOC5sb2FkOHg4X3MAaTh4MTYubmFycm93X2kxNng4X3MAaTMyeDQuZXh0bXVsX2xvd19pMTZ4OF9zAGkzMng0LmV4dGVuZF9sb3dfaTE2eDhfcwBmMTZ4OC5jb252ZXJ0X2kxNng4X3MAaTMyeDQuZG90X2kxNng4X3MAaTMyeDQuZXh0bXVsX2hpZ2hfaTE2eDhfcwBpMzJ4NC5leHRlbmRfaGlnaF9pMTZ4OF9zAGkzMng0LmV4dGFkZF9wYWlyd2lzZV9pMTZ4OF9zAGkxNng4LnRydW5jX3NhdF9mMTZ4OF9zAGk2NC5leHRlbmQ4X3MAaTMyLmV4dGVuZDhfcwBpNjQubG9hZDhfcwBpMzIubG9hZDhfcwBpMTZ4OC5leHRtdWxfbG93X2k4eDE2X3MAaTE2eDguZXh0ZW5kX2xvd19pOHgxNl9zAGkxNng4LmV4dG11bF9oaWdoX2k4eDE2X3MAaTE2eDguZXh0ZW5kX2hpZ2hfaTh4MTZfcwBpMTZ4OC5leHRhZGRfcGFpcndpc2VfaTh4MTZfcwBpMTZ4OC5kb3RfaTh4MTZfaTd4MTZfcwBpNjQuZXh0ZW5kMTZfcwBpMzIuZXh0ZW5kMTZfcwBpNjQubG9hZDE2X3MAaTMyLmxvYWQxNl9zAHYxMjgubG9hZDE2eDRfcwBpMTZ4OC5uYXJyb3dfaTMyeDRfcwBmNjR4Mi5jb252ZXJ0X2xvd19pMzJ4NF9zAGk2NHgyLmV4dG11bF9sb3dfaTMyeDRfcwBpNjR4Mi5leHRlbmRfbG93X2kzMng0X3MAZjMyeDQuY29udmVydF9pMzJ4NF9zAGk2NHgyLmV4dG11bF9oaWdoX2kzMng0X3MAaTY0eDIuZXh0ZW5kX2hpZ2hfaTMyeDRfcwBpMzJ4NC50cnVuY19zYXRfZjMyeDRfcwBpMzJ4NC5yZWxheGVkX3RydW5jX2YzMng0X3MAZjY0LmNvbnZlcnRfaTY0X3MAZjMyLmNvbnZlcnRfaTY0X3MAaTY0LnRydW5jX3NhdF9mNjRfcwBpMzIudHJ1bmNfc2F0X2Y2NF9zAGk2NC50cnVuY19mNjRfcwBpMzIudHJ1bmNfZjY0X3MAdjEyOC5sb2FkMzJ4Ml9zAGY2NC5jb252ZXJ0X2kzMl9zAGYzMi5jb252ZXJ0X2kzMl9zAGk2NC5leHRlbmRfaTMyX3MAaTY0LnRydW5jX3NhdF9mMzJfcwBpMzIudHJ1bmNfc2F0X2YzMl9zAGk2NC50cnVuY19mMzJfcwBpMzIudHJ1bmNfZjMyX3MAaTY0LmV4dGVuZDMyX3MAaTY0LmxvYWQzMl9zAHZpc2l0UmVmQXMAbG9hZDhzAGxvYWQxNnMAbG9hZDY0cwBsb2FkMzJzAFVudXNlZCBuZWdhdGl2ZSBMRUIgYml0cyBtdXN0IGJlIDFzAFVudXNlZCBub24tbmVnYXRpdmUgTEVCIGJpdHMgbXVzdCBiZSAwcwBmb2xkZWRpbnN0cgBzdHJpbmdfdmlldzo6c3Vic3RyAGVudHJ5Rmxvd0Jsb2NrICE9IG51bGxwdHIAZnB0cgBlbXNjcmlwdGVuX2dldF9zYnJrX3B0cgBzdG9yZV9wdHIAbG9hZF9wdHIAaTY0LnJvdHIAaTMyLnJvdHIAQmluYXJ5ZW5TdHJpbmdFbmNvZGVTZXRTdHIAQmluYXJ5ZW5TdHJpbmdFbmNvZGVHZXRTdHIAc3RyaW5nU3RyAG5hbWVTdHIAQmluYXJ5ZW5BdG9taWNOb3RpZnlTZXRQdHIAQmluYXJ5ZW5BdG9taWNXYWl0U2V0UHRyAEJpbmFyeWVuQXRvbWljQ21weGNoZ1NldFB0cgBCaW5hcnllblN0b3JlU2V0UHRyAEJpbmFyeWVuU0lNRExvYWRTdG9yZUxhbmVTZXRQdHIAQmluYXJ5ZW5Mb2FkU2V0UHRyAEJpbmFyeWVuU0lNRExvYWRTZXRQdHIAQmluYXJ5ZW5BdG9taWNSTVdTZXRQdHIAQmluYXJ5ZW5BdG9taWNOb3RpZnlHZXRQdHIAQmluYXJ5ZW5BdG9taWNXYWl0R2V0UHRyAEJpbmFyeWVuQXRvbWljQ21weGNoZ0dldFB0cgBCaW5hcnllblN0b3JlR2V0UHRyAEJpbmFyeWVuU0lNRExvYWRTdG9yZUxhbmVHZXRQdHIAQmluYXJ5ZW5Mb2FkR2V0UHRyAEJpbmFyeWVuU0lNRExvYWRHZXRQdHIAQmluYXJ5ZW5BdG9taWNSTVdHZXRQdHIAcG9wUHRyAGV4cHJlc3Npb25TdGFja1tleHByZXNzaW9uU3RhY2suc2l6ZSgpIC0gMV0gPT0gY3VycgBvdXRlci0+bGlzdC5iYWNrKCkgPT0gY3VycgBpbnZhbGlkIGV4cHIAdW5leHBlY3RlZCBleHByAGJvZHlFeHByAGFycmF5RXhwcgBpbmRleEV4cHIAZGVzdEluZGV4RXhwcgBzcmNJbmRleEV4cHIAdGltZW91dEV4cHIAZGVzdEV4cHIAc3RhcnRFeHByAG5vdGlmeUNvdW50RXhwcgByZXBsYWNlbWVudEV4cHIAcmlnaHRFeHByAHNoaWZ0RXhwcgBsZWZ0RXhwcgBvZmZzZXRFeHByAHRhcmdldEV4cHIAcG9zRXhwcgBzdHJFeHByAHB0ckV4cHIAbGVuZ3RoRXhwcgBjYXRjaEV4cHIAcmVmRXhwcgBkZXN0UmVmRXhwcgBzcmNSZWZFeHByAHNpemVFeHByAGlmVHJ1ZUV4cHIAdmFsdWVFeHByAGlmRmFsc2VFeHByAHR1cGxlRXhwcgBzb3VyY2VFeHByAGNvbmRFeHByAGVuZEV4cHIAb3BlcmFuZEV4cHIAY2hpbGRFeHByAGV4cGVjdGVkRXhwcgB2ZWNFeHByAGJFeHByAGRlbHRhRXhwcgBpMzFFeHByAEFwcgBpNjQuYXRvbWljLnJtdy54b3IAaTMyLmF0b21pYy5ybXcueG9yAHYxMjgueG9yAGk2NC54b3IAaTMyLnhvcgBBbmNlc3RvcgB2ZWN0b3IAdW52YWxpZCB1bmFyeSBvcGVyYXRvcgB1bnZhbGlkIGJpbmFyeSBvcGVyYXRvcgB1bmhhbmRsZWQgaTMyIGJpbmFyeSBvcGVyYXRvcgB1bmhhbmRsZWQgdW5hcnkgZmxvYXQgb3BlcmF0b3IAdW5zcGVjaWZpZWQgaW9zdHJlYW1fY2F0ZWdvcnkgZXJyb3IAY2FzdCBlcnJvcgBtb25leV9nZXQgZXJyb3IATWF0aF9mbG9vcgBmMTZ4OC5mbG9vcgBmMzJ4NC5mbG9vcgBmNjQuZmxvb3IAZjY0eDIuZmxvb3IAZjMyLmZsb29yAGluc3RydW1lbnQgbG9hZHMgYW5kIHN0b3JlcyB0byBjaGVjayBmb3IgaW52YWxpZCBiZWhhdmlvcgBmb3IAaTY0LmF0b21pYy5ybXcub3IAaTMyLmF0b21pYy5ybXcub3IAdjEyOC5vcgBpNjQub3IAaTMyLm9yAGNhblJlbW92ZVNldEdldFBhaXIAbHNocgBhc2hyAFVuZXhwZWN0ZWQgdHVwbGUgZ2xvYmFsIGluaXRpYWxpemVyAG1ha2VGbG93ZXIAQ2Fubm90IHJlbW92ZSByZXR1cm5fY2FsbHMgaW4gUmV0dXJuVmFsdWVSZW1vdmVyAG91dGVyAGZ1bmN0aW9uU3BsaXR0ZXIAYXBwZW5kVG9PYmplY3RBc1NldHRlcgBhcHBlbmRUb09iamVjdEFzR2V0dGVyAF9fc3RhY2tfcG9pbnRlcgBnZXRTdGFja1NwYWNlOiBmYWlsZWQgdG8gZmluZCB0aGUgc3RhY2sgcG9pbnRlcgBnZXRJbmRleFBvaW50ZXIARXhwZWN0ZWQgZGVsaW1pdGVyAHVuZXhwZWN0ZWQgbmFtZWQgcGFyYW1ldGVyAHJlbW92ZVBhcmFtZXRlcgBzdXBlcgBzZXRQYXNzUnVubmVyAGZvbGRpbmctaW5uZXIAcmVtb3ZlcyBhcmd1bWVudHMgdG8gY2FsbHMgaW4gYW4gbHRvLWxpa2UgbWFubmVyAHN0YWNrLWNoZWNrLWhhbmRsZXIAZXhwZWN0ZWQgbWVtb3J5I